有n盏灯,编号为1-n,初始状态关闭,每按一次状态改变
按一下序号为1的倍数的灯
按一下序号为2的倍数的灯
按一下序号为3的倍数的灯
...
按一下序号为k的倍数的灯
问最后有多少灯开着?
测试:5,7 --- 2
10,5 --- 6
#include<iostream>
using namespace std;
#include<vector>
#include<algorithm>
int main()
{
int n,k;
cin >> n >> k;
vector<int> light(n+1, 0); //0表示关闭状态
for (int i = 1; i <= n; i++) //遍历灯
{
for (int j = 1; j <= k; j++) //遍历倍数
{
//灯的序号i是j的倍数
if (i % j == 0)
{
//改变灯的状态 0变1 1变0
if(light[i] == 0)
light[i] = 1;
else
light[i] = 0;
}
}
}
//灯开着的数目,即统计1的个数
cout << count(light.begin(), light.end(), 1) << endl;
return 0;
}