苦逼的周大爷

博客园 首页 联系 订阅 管理

Description

 

有m个猴子围成一圈,按顺时针编号,分别为1到m。现打算从中选出一个大王。经过协商,决定选大王的规则如下:从第一个开始顺时针报数,报到n的猴子出圈,紧接着从下一个又从1顺时针循环报数,...,如此下去,最后剩下来的就是大王。

 

Input

 

第一行是一个正整数T表示测试数据的组数。下面共有T行,每行两个整数m和n,用一个空格隔开,分别表示猴子的个数和报数n。1<=m<=100,1<=n<=200。

 

Output

 

每组数据对应有一个输出,表示大王的编号。

 

Sample Input

 

1
3 2

 

Sample Output

 

3

哥哥的正确解法:

 

 1 #include <stdio.h>
 2 
 3 int p[1000],q[1000],a,b,i,j,t,flag[1000],pos,s;
 4 
 5 int xuanze(int a,int b)
 6 {
 7     for (i=1;i<a+1;i++) flag[i]=1;
 8     int pos=1;
 9     for (i=a;i>1;i--)
10     {
11     //    if (b>i) b=b % i;
12         int k=0;
13         int j=pos;
14         while(1)
15         {
16             if (flag[j]==1) k++;
17             if (k==b) {flag[j]=0;if (j+1<=a) pos=j+1;else pos=1;break;}
18             j++;
19             if (j>a) j=1;
20         }
21     }
22     
23     for (i=1;i<=a;i++){
24     if (flag[i]==1) return(i);    
25     }
26 }
27 
28 
29 int main()
30 {
31     scanf("%d",&t);
32     for (i=0;i<t;i++) scanf("%d %d",&p[i],&q[i]);
33     for (s=0;s<t;s++) printf("%d\n",xuanze(p[s],q[s]));
34     return 0;
35 }

 

posted on 2013-10-14 19:54  苦逼的周大爷  阅读(202)  评论(0编辑  收藏  举报