题目背景
约瑟夫是一个无聊的人!!!
题目描述
n个人(n<=100)围成一圈,从第一个人开始报数,数到m的人出列,再由下一个人重新从1开始报数,数到m的人再出圈,……依次类推,直到所有的人都出圈,请输出依次出圈人的编号.
输入格式
n m
输出格式
出圈的编号
输入输出样例
说明/提示
m,n≤100m,n≤100
#include <bits/stdc++.h>
using namespace std;
int n=0,m=0,last=0,i=1,f[200]={0},t=0,l=0;
int main() {
ios::sync_with_stdio(0);
cin>>n>>m;
if(n==0)return 0;
vector<int>list;
for(int i=1;i<n;i++)
f[i]=i+1;
f[n]=1;
while (last!=i) {
t++;
if(t==m){
t=0;
list.push_back(i);
f[last]=f[i];
}
last=i;
i=f[i];
}
if(i>0)list.push_back(i);
for (int i=0; i<list.size(); i++)
if(i==0)printf("%d",list[i]);
else printf(" %d",list[i]);
return 0;
}