有n盏灯,初始是关闭状态,你现在对第i盏灯做操作,那么凡是i倍数的灯也会做操作,即当前是开变为关,关变为开,现在你从1号到n号灯,依次改变每个灯的状态,你想知道第k个灯最后什么状态,如果是关闭的,输出0,如果是开的输出1
输入
输入2个整数n,k 1<=n,k<=10^12
输出
输出一个整数0或1
样例
输入
1 1
输出
1
———————————————————————————————————————————
代码:
#include<bits/stdc++.h>
using namespace std;
long long n,k,sum[1000002];
vector<long long> ret;
vector<long long> factor(long long x)
{
for(long long i=2;i*i<=x;i++)
{
while(x%i==0)
{
ret.push_back(i);
x/=i;
}
}
if(x>1)
{
ret.push_back(x);
}
return ret;
}
int main()
{
cin>>n>>k;
factor(k);
long long h;
h=ret.size();
for(long long i=2;i<1000001;i++)
sum[i]=0;
for(long long i=0;i<h;i++)
{
int d;
d=ret[i];
sum[d]++;
sum[d]=sum[d]%2;
}
long long ans=1;
for(long long i=2;i<1000001;i++)
{
ans=ans*(sum[i]+1);
ans=ans%2;
}
if(ans%2==1) cout<<"1";
else cout<<"0";
return 0;
}
标签:盏灯,输出,ret,开关,vector,plus,long,factor
From: https://blog.csdn.net/lmy20121108/article/details/140570398