1. 程式人生 > >C語言實驗題——約瑟夫問題(JSU-ZJJ)

C語言實驗題——約瑟夫問題(JSU-ZJJ)

題目描述

n個人想玩殘酷的死亡遊戲,遊戲規則如下:
n個人進行編號,分別從1到n,排成一個圈,順時針從1開始數到m,數到m的人被殺,剩下的人繼續遊戲,活到最後的一個人是勝利者。請輸出最後一個人的編號。
輸入
輸入n和m值。1<n,m<150。
輸出
輸出勝利者的編號。
樣例輸入
5 3
樣例輸出
4

#include"stdio.h"
int main()
{
    int a[150];
    int n,m,i,j,k,count;
    while(~scanf("%d%d",&n,&m))
    {
        for(i=1; i<=n; i++)
            a[i]=1;
        k=0;
        count=n;
        for(i=1; count>1; i++)
        {
            if(a[i]==1)
                k++;
            if(k==m)
            {
                a[i]=0;
                k=0;
                count--;
            }
            if(i+1>n)
                i=0;
        }
        for(i=1; i<=n; i++)
            if(a[i]==1)
                break;
        printf("%d\n",i);

    }
}