子どもたちの遊び

1344 ワード

何海涛:『剣指Offer:名企面接官精講典型プログラミング問題』:九度OJテーマ説明:http://ac.jobdu.com/problem.php?cid=1039&pid=29
毎年6月1日の子供の日には、JOBDUは孤児院の子供を見舞いに行く小さな贈り物を用意しています.今年もそうです.HFはJOBBUのベテラン元老として、もちろん小さなゲームも用意されています.その中で、まず、子供たちを大きな輪に囲ませるゲームがあります.そして、彼はランダムに数mを指定し、番号1の子供にカウントを開始させた.毎回mを呼んだあの子は歌を歌って、それからプレゼント箱の中で任意にプレゼントを选ぶことができて、しかももう輪の中に戻らないで、彼の次の子から、1...mの报数を続けて.....このままで....最后の子供が残るまで、表演をしなくてもいいし、JOBBUの名高い「名探侦コナン」の典蔵版を手に入れることができます(定員は限られていますよ!!^^).どの子がこの贈り物をもらうか考えてみてください.
入力:
複数セットのデータを入力します.
1組のデータの1行につき、2個の整数n(0<=n<=100000)を含み、m(1<=m<=100000)、n、mはそれぞれ子供の人数(番号1.....n-1,n)とHFで指定された数m(前述のように)を表す.n=0の場合、入力を終了します.
出力:
各グループのデータに対応し、最後に大賞を受賞した子供番号を出力します.
サンプル入力:
1 10
8 5
6 6
0

サンプル出力:
1
3
4
 
   
   :        !
 
   
  AC:
#include <stdio.h>

int main()
{
    int n,m,i,r;

    while(scanf("%d",&n) == 1)
    {
           if( !n )
           {
               break;
           }
           
           scanf("%d",&m);
           r = 0;

           for( i = 2; i <= n; i++ )
           {
                r = (r + m) % i;
           }

           printf("%d
",r + 1); } return 0; }