2015盏灯,一开始全部熄灭,序号分别是1-2015,先把1的倍数序号的灯的开关全部按一次,然后把2的倍数的灯的开关全部按一次,然后把3的倍数的开关按一次,以此类推,最后把2015的倍数灯的开关按一次。问最后亮着的灯有多少盏?
/**********************
大致思路如下
从1到2015,每个数的倍数都要按一下,初始状态为关闭
,若一个数是其中1~2015的倍数,则必定有另一个数是1~2015的
倍数,如此,此数必定最后为关闭状态,由此可见,当一个数的
因子数为奇数时,最后肯定为亮灯状态,否则为关闭状态,
当一个数的因子数为奇数时,这个数必定是某一个数的平方倍
***********************/
#include <bits/stdc++.h>
using namespace std;
int main()
{
int cnt = 1;
for(int i = 2; i <= 2015; i++)
{
if(sqrt(i)*sqrt(i) == i)
cnt++;
}
cout<<cnt<<endl;
return 0;
}