AOJ--开关灯

版权声明:本文为博主原创文章,未经博主允许不得转载。可联系邮箱[email protected] https://blog.csdn.net/Justin_bibo/article/details/79782440

问题

吃完草莓以后,机房的小伙伴们要开始做些运动。在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;
}

猜你喜欢

转载自blog.csdn.net/Justin_bibo/article/details/79782440