描述
礼堂有n盏灯(n≤5000),从1到n按顺序对灯进行编号,初始时全部处于开启状态;有m个人(m≤1000)也从1到m依次编号。第一个人(1号)将灯全部关闭,第二个人(2号)将编号为2的倍数的灯打开,第三个人(3号)将编号为3的倍数的灯做了相反处理(即打开的灯关闭,将关闭的灯打开)。依照编号递增顺序,以后的人都和3号一样,将自己编号倍数的灯做相反处理。经过m个人操作最后有多少灯是开着的?输出开着灯的个数。
输入描述
一行两个整数 n 和 m
输出描述
输出开着的灯的数量。
样例输入 1
5 4
样例输出 1
2
代码如下:
#include<bits/stdc++.h>
using namespace std;
int main(){
int m,n;
cin>>n>>m;
int a[n+1]={};
for(int i=2;i<=m;i++){
for(int j=1;j<=n;j++){
if(j%i==0)a[j]=1-a[j];
}
}
int cnt=0;
for(int j=1;j<=n;j++){
if(a[j]==1)cnt++;
}
cout<<cnt;
}