题意真心没读懂。。。。
看了人家的才知道就是玩灯泡开关啊!!
题意:给你n个灯泡,开始时都是关着(关为0,开为1);
1.第一次变化第(1*k)(k=1.2.3....,且1*k<=n)个灯泡的状态;即变化第1,2,3,4,。。。n个灯泡的状态;(变化即:0变1,1变0)
2.第一次变化第(2*k)(k=1.2.3....,且2*k<=n)个灯泡的状态;即变化第2,4,6,8,。。。n个灯泡的状态;
。。。。
i.第i次变化第第(i*k)(k=1.2.3....,且i*k<=n)个灯泡的状态;
问:变化n次后,第n个灯泡的状态是0还是1?
解:
从上面的题意可知:n是i的倍数时第n个灯泡才变化,所以只需求出n的约数的个数,即为第n个灯泡的变化次数,再对2取余即是最后状态!
#include<stdio.h>
int main ()
{
int n,m,s,i;
while(scanf("%d",&n)!=EOF)
{
s=2;
m=n;
for(i=2;i<m;i++)
{
if(n%i==0)
s+=2,m=n/i;
}
if((i-1)*(i-1)==n)
s--;
if(n==1)
s=1;
printf("%d\n",s%2);
}
return 0;
}