【Acm】开关灯

来源:互联网 发布:linux下安装禅道 编辑:程序博客网 时间:2024/04/29 14:51



Description

n盏灯排成一排,从1到n按顺序依次编号。有n个人也从1到n依次编号。第一个人(1号)将灯全部关闭。第二个人(2号)将凡是2和2的倍数的灯打开。第三个人(3号)将凡是3和3的倍数的灯作相反处理(该灯如为打开的将其关闭;如为关闭的,将其打开)。以后的人都和三号一样,将凡是与自己相同的灯和是自己编号倍数的灯作相反处理。请问,当第n个人操作之后,从第A盏灯跟第B盏灯之间(包含AB两盏),有多少灯是开着的?


Input
 三个数,N,A,B(A<B<N<10^7)


Output
 从A到B(包含AB)开着的灯的数目


Sample Input
 5 1 3


Sample Output
 2


判断第i盏灯是不是亮的,只需要判断i的非1约数是奇数个还是偶数个,即判断i能不能被开平方根即可。

#include <iostream>#include <math.h>using namespace std;int main(){int N,a,b,sum=0;cin>>N>>a>>b;for(int i=a;i<=b;i++){double x=sqrt(i);double xx= floor (x);if(x-xx!=0)sum++;}cout<<sum<<endl;return 0;}


0 0
原创粉丝点击