AOJ--开关灯
程序员文章站
2024-03-18 21:50:46
...
问题
吃完草莓以后,机房的小伙伴们要开始做些运动。在ACM实验室里有N盏灯编号为1到N,起初都是开着的,从第一盏灯开始,凡是编号是一的倍数的灯的开关都要被按一遍(亮的变成暗的,暗的变成亮的),
然后到第二盏灯,凡是编号是二的倍数的灯的开关都要被按一遍,一直到第N盏灯,凡是编号是N的倍数的灯都要被按一遍。那么问题来了,在灯质量比较好的情况下,最后还有多少盏灯是亮着的。
输入
题目包括多组输入
只有一行,这一行只有一个数N,1<=N<=1000
输出
输出一行,这一行也只有一个数,就是亮着灯的个数
思路
一个数的左右因数的个数是偶数,灯就是亮的,否则不亮。
代码
#include<stdio.h>
#include<math.h>
int main()
{
int n,sum,i,m;
while(~scanf("%d",&n))
{
m=0;
while(n)
{
sum=0;
for(i=1;i<=(int)sqrt((double)n);i++)
if(n%i==0)
{
if(n/i==i)
sum++;
else
sum=sum+2;
}
if(sum%2==0)
m++;
n--;
}
printf("%d\n",m);
}
return 0;
}
上一篇: 【NOIP2014提高组】联合权值