Description

题目:n个数字(1,2,3…,n)形成一个圆圈,从数字1开始,每次从这个圆圈中删除第m个数字(第一个为当前数字本身,第二个为当前数字的下一个数字)。
当一个数字删除后,从被删除数字的下一个继续删除第m个数字。
求出在这个圆圈中剩下的最后一个数字。

Input

输入:

n=9

m=5

Output

The last one is 8

Sample Input

9 5

Sample Output

8

数学方法:
#include <stdio.h>
int main()
{
    int i,n,m,l;
    scanf("%d %d",&n,&m);
    for(i=2,l=0;i<=n;i++)
       l=(l+m)%i;
      printf("%d\n",l+1);
    return 0;
}

 



数组模拟:

#include<stdio.h>
#include<string.h>
int main()
{
    int  m,n,t[1000]={0};
    int i,j,sum=0;
    scanf("%d%d",&m,&n);
    for(i=1,j=0;;i++)
    {
        if(!t[i])
        {
            j++;
            if(j==n)
            {
                t[i]=1;
                j=0;
                sum++;
            }
            if(sum==m)
            {
                printf("%d",i);
                break;
            }

        }
        if(i==m)
            i=0;
    }
    return 0;
}