题目描述
设有n个人围坐一圈并按顺时针方向从1到n编号,从第1个人开始进行1到m的报数,报数到第个m人,此人出圈,再从他的下一个人重新开始1到m的报数,如此进行下去直到所剩下一人为止。
输入
输入多行,每行2个数,分别表示n和m.
输出
计算每一行中最后剩下这个人的编号.
样例输入
10 3
样例输出
4
#include<bits/stdc++.h>
using namespace std;
int main() {
int n,m;
cin>>n>>m;
bool a[n];
memset(a,true,n);
for(int i=0,j=0,k=0;i!=n-1;i++){
do{
if(a[k++%n]){
++j;
}
}while (j!=m);
a[(k-1)%n]=false;
j=0;
}
for(int i=0;i<n;i++)
if(a[i]){
cout<<i+1<<endl;
break;
}
return 0;
}