题目描述
有 n 个人围成一个圈,从 1 到 n 按顺序排好号。然后从第一个人开始顺时针报数(从 1 到 m 报数),报到 m 的人退出圈子后,后面的人继续从 1 到m报数,直到留下最后一个人游戏结束,问最后留下的是原来第几号。
输入
输入n和m。其中2<=n<=600,1<=m<=n
输出
最后一个出圈人的编号
样例输入
5 3
样例输出
4
参考代码:
#include<bits/stdc++.h>
using namespace std;
int main(){
bool a[605];
int n,m,j=0,k;
cin>>n>>m;
k=n;
for(int i=1;i<=n;i++)
a[i]=true;
while(1){
for(int i=1;i<=n;i++){
if(a[i]){
j++;
if(j%m==0){
a[i]=false;
j=0;
k--;
if(k==0){
cout<<i;
return 0;
}
}
}
}
}
}