P1996 约瑟夫问题
点击查看代码
#include<bits/stdc++.h>
using namespace std;
const int N=101;
int n,m;
int ne[N];
int main()
{
cin>>n>>m;
if(!n&&!m) return 0;
for(int i=1;i<n;i++) ne[i]=i+1;
ne[n]=1;
int p=1;
while(p!=ne[p]){
//i小于等于m-2是因为每次从新开头走到第m数前面只需要这么多步
for(int i=1;i<=m-2;i++) p=ne[p];
cout<<ne[p]<<" ";
ne[p]=ne[ne[p]];
p=ne[p];
}
cout<<p;
return 0;
}

浙公网安备 33010602011771号