SMU算法题 Weijie环
在欢送会上,大家决定玩一个游戏,这个游戏叫做Weijie 环,所有的N 个人站成一圈,由一个人随意说一个数字A,从他顺时针下一个人开始顺时针数,第A个人出圈(下次就不数出圈的人),然后从第A 个人顺时针后面1 个人开始顺时针数A+1,第A+1 个人出圈,依次数A+2,A+3……,最后留在圈内的人获胜。 现在轮到BobWu 说数字,他报出了一个数字A,现在BobWu 想知道自己是第几个出列的。
详情:http://mstc.shmtu.edu.cn/oj/problem.php?cid=1003&pid=2
好像以前看过类似的题,不过没做出来,当时也没准备做……结果发现就其本身而言不用数组也可以。
1#include <stdio.h>
2
3int main(void)
4{
5 int i, a[100], n[100], t, k[100], b, j;
6
7 scanf("%d", &t);
8
9
10 for(j = 0; j < t; j++)
11 {
12 scanf("%d", &n[j]);
13 scanf("%d", &a[j]);
14
15 b = a[j];
16
17 for (i = 1, k[j] = 0; n[j] > 0; b--)
18 {
19 if (b == 0 && i == 1)
20 {
21 k[j]++;
22 break;
23 }
24 else if(b == 0)
25 {
26 b = a[j] + 1;
27 n[j]--;
28 k[j]++;
29 }
30 i++;
31 if (i > n[j])
32 i = 1;
33 }
34 }
35
36
37 for (j = 0; j < t; j++)
38 printf("Case #%d: %d\n", j + 1, k[j]);
39
40 return 0;
41}
42
算法渣跪了,不过思路很简单,首先i控制点到第几个人,如果点完最后一个,重头再来,k来计数,第几个out,其他字母含义跟题目一样。
这样输出的就OK了
评论 (3)
learned^_^
数据结构课上老师布置的思考题,没做。 话说,网站那要填“http:// ” 反人类啊!
这个好像在哪里看到过