出圈

题目描述

设有n个人围坐一圈并按顺时针方向从1到n编号,从第1个人开始进行1到m的报数,报数到第个m人,此人出圈,再从他的下一个人重新开始1到m的报数,如此进行下去直到所剩下一人为止。

输入
输入多行,每行2个数,分别表示n和m.

输出
计算每一行中最后剩下这个人的编号.

样例输入
10 3

样例输出
4

#include
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;
}

你可能感兴趣的:(算法编程题,算法)