出圈

1070: 【出圈】

Time Limit: 1 Sec  Memory Limit: 128 Mb

Description

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

Input

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

Output

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

Sample Input

10 3

Sample Output

4

HINT

Source

吉首大学软件学院

#include <stdio.h>
int main()
{
    int m,n;
    while(scanf("%d%d",&m,&n)!=EOF)
    {
        int flag[1000]= {0};
        int i,j;
        int t=m;
        for(i=1,j=1;; i++,j++)
        {
            if(flag[j]==1)
            {
                i--;
            }
            if(i==n)
            {
                flag[j]=1;
                t--;
                i=0;
            }
            if(j==m)
            {
                j=0;
            }
            if(t==1&&flag[j]==0&&j!=0)
            {
                printf("%d
",j);
               break;
            }
        }
    }
    return 0;
}
原文地址:https://www.cnblogs.com/tianmin123/p/4736889.html