1、开关灯 有n盏灯从1到n编号,每盏灯一个开关,每按一次灯会打开或关闭,初始时关闭。 有n个酒鬼酒后无聊玩起了开关灯游戏,第一个人会按下所有开关;第二个人会按下2的倍数的灯的开关;第三个人会按下3的倍数的灯的开关;以此类推,直到第n个人按下n的倍数的灯的开关。 但是玩了一会儿就觉得无聊不想玩了 这时一个酒鬼突然说,你们谁知道如果游戏继续玩,直至第n个人按下第n盏灯的开关后,编号为x的灯是开的还是关的? 其他酒鬼有说开着的,有说关着的,吵的不可开交,你能告诉他们吗?
输入格式 一行三个整数,n,x。
输出格式 1或0(1表示开,0表示关)
我的代码TLE了
#include <bits/stdc++.h>
using namespace std;
int calFactorNum(long long num) {
unordered_map<int, int> umap;
long long x = num;
for (int i = 2; i * i <= x; i++) {
while (x % i == 0) {
x /= i;
umap[i]++;
}
}
if (x > 1)
umap[x]++;
int res = 1;
for (auto it: umap) {
res *= (it.second + 1);
}
//cout << "factor num:" << res << endl;
return res;
}
int main(){
long long a,s;
cin>>a>>s;bool b=0;
//for(int i=2;i<s;i++){
//if(s%i==0)b=!b;
//}
//printf("%d",b);
cout<<b+calFactorNum(s)%2;
return 0;
}
玄1关