2 solutions
-
0
#include<bits/stdc++.h> using namespace std; const int N=1e7; int a[N]; int main() { int n,m,i,t,cnt=0; cin>>n>>m; for(i=1;i<=n;i++){ a[i]=0; } for(t=2;t<=m;t++){ for(i=t;i<=n;i=i+t){ if(a[i]==0){ a[i]=1; }else if(a[i]==1){ a[i]=0; } } } for(i=1;i<=n;i++){ if(a[i]0){ if(cnt0){ cout<<i; cnt++; } else{ cout<<","<<i; } } } return 0; }
-
0
#include<stdio.h> #include<stdbool.h> int main(){ int n,m; scanf("%d %d",&n,&m); int i; if(m==1){ //只有一个人直接输出所有 for(i=0;i<n-1;i++){ printf("%d,",i+1); } printf("%d",n); return 0; }else{ bool light[n]; //记录灯开/关 for(i=0;i<=n;i++){ light[i]=false; //初始化灯,默认第一个人已经关闭全部灯。 } int j=1; while(j!=m){ //依次遍历m个人操作灯 j++; for(i=1;i<=n;i++){ if(i%j==0){ light[i]=!light[i]; //为倍数时,取反。 } } } int flag=0; for(i=1;i<=n;i++){ if(light[i]==false&&flag==0){ //格式问题,第一个不输出“,” flag=1; printf("%d",i); }else if(light[i]==false){ printf(",%d",i); //依次输出灯关闭的下标 } } } return 0; }
- 1
Information
- ID
- 6772
- Time
- 1000ms
- Memory
- 128MiB
- Difficulty
- 8
- Tags
- (None)
- # Submissions
- 186
- Accepted
- 33
- Uploaded By