还是挺短的(我是说代码),上次的约瑟夫总感觉有点问题,这次就ok
题目描述
n 个人围成一圈,从第一个人开始报数,数到 m 的人出列,再由下一个人重新从 1 开始报数,数到 m 的人再出圈,依次类推,直到所有的人都出圈,请输出依次出圈人的编号。
输入格式
输入两个整数 n,m。
输出格式
输出一行 n 个整数,按顺序输出每个出圈人的编号。
输入输出样例
输入
10 3
输出
3 6 9 2 7 1 8 5 10 4
说明/提示
1≤m,n≤100
#include<bits/stdc++.h>
using namespace std;
int main(){
int i,j,k,m,n,x;
i=j=k=m=n=x=0;
int peo,where=0;
cin>>peo>>m;
int all[peo+10]={0};
for(i=0;i<peo;i++){
all[i]=i+1;
}
i=0;
while(peo!=1){
where=(where+m-1)%peo;
cout<<all[where]<<" ";
if(where!=peo-1){
int temp=where;
while(temp!=peo-1){
all[temp]=all[temp+1];
temp++;
}
}
peo--;
}
for(j=0;j<1;j++){
cout<<all[j];
}
return 0;
}