欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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;
}
相关标签: AOJ 开关灯