开关灯题解
2026-03-23 16:48:09
发布于:浙江
3阅读
0回复
0点赞
学生版:
#include<bits/stdc++.h>
using namespace std;
bool l[5005];
int main()
{
int n,m;
cin>>n>>m;
for(int i=2;i<=m;i++) {
for(int p=1;p*i<=n;p++) {
l[p*i]=!l[p*i];
}
}
bool f=true;
for(int i=1;i<=n;i++) {
if(!l[i]) {
if(!f) cout<<",";
cout<<i;
f=false;
}
}
return 0;
}
老师版:
#include<bits/stdc++.h>
using namespace std;
bool l[5005];
int main()
{
int n,m;
cin>>n>>m;
//第一个人全部是关闭状态
for(int i=2;i<=m;i++) {
for(int p=1;p*i<=n;p++) {//p枚举的是倍数
l[p*i]=!l[p*i];//取反
}
}
//统计灯的状态并输出
bool f=true;//特判第一个数
for(int i=1;i<=n;i++) {
if(!l[i]) {
if(!f) cout<<",";
cout<<i;
f=false;
}
}
return 0;
}
这里空空如也






有帮助,赞一个