有n盏灯排成一排,依次标号1,2,…,n,每盏灯都有一根拉线开关。第一个人走过时,把所有灯都关上了;接着第二个人走过时,把凡是号码是2的倍数的灯的开关拉一下;第三个走过时,把凡是号码是3的倍数的灯的开关拉一下;…;最后,第n个人走过时,把最后那盏灯的开关拉一下。
#include<iostream>
#include<vector>
using namespace std;
int main() {
int n=0;
cin >> n;
vector<bool>a;//创建一个动态数组
for (int i = 1; i <= n; i++)
a.push_back(0);
for (int j=2;j<=n;j++)
for (int i = 1; i <= n/j; i++) {
auto anElement = a.begin() + i * j - 1;
*anElement = 1 - *anElement;
}
for (bool aa : a)//基于范围的for循环
cout << aa << " ";
return 0;
}