```cpp
#include<iostream>
using namespace std;
int n,m,a[100],s=1,js=1;//a放外面自动清0
int main()
{
cin>>n>>m;
int chs=n;
while(1)
{
if(js==m)//不要判a[s]
{
a[s]=1;
chs--;
cout<<s<<" ";
if(chs==0) break;//这里要特判退出,不然下面的while不可能跳出
js=0;
}
int sjy;
if(s==n) sjy=1;
else sjy=s+1;
while(a[sjy]==1)
{
if(s==n) s=1;
else s++;
if(sjy==n) sjy=1;//sjy特殊判,不然你s=1,sjy=1有问题
else sjy++;
}
if(s==n) s=1;
else s++;
js++;
}
return 0;
}//完结撒花!给个关注不过分吧awa
```
@[yaoge2012](/user/1135416)
by z_z_b_ @ 2024-04-05 21:07:20
@[yaoge2012](/user/1135416) 真诚劝告楼主把代码写漂亮一点,这样别人看真的很难受
by haozige @ 2024-04-05 21:16:33
@[haozige](/user/918114) 谢谢指点
by yaoge2012 @ 2024-04-05 21:19:59
@[yaoge2012](/user/1135416)
```
#include<bits/stdc++.h>
using namespace std;
struct p{
int sp;
int n_;
int last;
int num;
int next;
};
int main(){
int n,m;
cin>>n>>m;
p al[n];
al[0].last=n-1,al[0].num=1,al[0].next=1,al[0].n_=1,al[0].sp=0;
for(int i=1;i<n;i++){
al[i].last=(i+n)%(n+1),al[i].num=i+1,al[i].next=(i+1)%n;
al[i].n_=al[i].num,al[i].sp=i;
}
for(int i=0;;i=al[i].next){
if(al[i].num==m){
cout<<al[i].n_<<' ';
al[al[i].next].num=1,al[al[i].last].next=al[i].next,
al[al[i].next].last=al[i].last;
i=al[i].next;
}
else{
al[i].num=al[al[i].last].num+1;
}
if(al[i].next==al[i].sp){
cout<<al[i].n_;
return 0;
}
}
return 0;
}
```
by zzc666666 @ 2024-04-24 17:07:09