1337 喝醉的狱卒
作者:互联网
问题描述:某座监狱有一个长长的大厅,里面有n个牢房,每个牢房紧挨着。每个牢房里都有一个囚犯,而且每个牢房都锁着。
一天晚上,狱卒感到无聊,决定玩个游戏。在游戏的第一轮,他喝了一杯威士忌,然后跑下大厅解锁每个牢房。在第2回合中,他喝了一杯威士忌,然后跑下走廊,锁住其他牢房(牢房2、4、6……)。第三轮,他喝了杯威士忌,然后跑到大厅。他每隔3个囚室(囚室3、6、9……)就去一次。如果牢房被锁上了,他就打开它;如果门没锁,他就锁上。他这样重复了n轮,喝完最后一杯,就昏过去了。
一些囚犯,可能是零,意识到他们的牢房没有锁,狱卒失去了行动能力。他们立即逃跑。
已知牢房的数量,确定有多少囚犯越狱。
解题思路:一次AC了,找规律,1到N,可以整除N的就是N的因子(包括1)本身,因子数为奇数个的最后就可以逃出去。
#include <stdio.h>
#include <iostream>
using namespace std;
int main(){
int N,T;
while(cin>>T)
{
for(int m=0;m<T;m++)
{
int escape = 0;
cin>>N;
for(int i=1;i<=N;i++)
{
int mcount = 0;
for(int j=1;j<=N;j++)
{
if(i % j == 0)
++mcount;
}
if(mcount % 2 == 1)
++escape;
}
cout<<escape<<endl;
}
}
return 0;
}
标签:狱卒,int,1337,include,囚犯,威士忌,牢房,喝醉 来源: https://blog.csdn.net/weixin_39627422/article/details/114003738