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
好像以前看过类似的题,不过没做出来,当时也没准备做……结果发现就其本身而言不用数组也可以。
#include <stdio.h>
int main(void)
{
int i, a[100], n[100], t, k[100], b, j;
scanf("%d", &t);
for(j = 0; j < t; j++)
{
scanf("%d", &n[j]);
scanf("%d", &a[j]);
b = a[j];
for (i = 1, k[j] = 0; n[j] > 0; b--)
{
if (b == 0 && i == 1)
{
k[j]++;
break;
}
else if(b == 0)
{
b = a[j] + 1;
n[j]--;
k[j]++;
}
i++;
if (i > n[j])
i = 1;
}
}
for (j = 0; j < t; j++)
printf("Case #%d: %d\n", j + 1, k[j]);
return 0;
}
算法渣跪了,不过思路很简单,首先i控制点到第几个人,如果点完最后一个,重头再来,k来计数,第几个out,其他字母含义跟题目一样。
这样输出的就OK了
植入部分
如果您觉得文章不错,可以通过赞助支持我。
如果您不希望打赏,也可以通过关闭广告屏蔽插件的形式帮助网站运作。
这个好像在哪里看到过
数据结构课上老师布置的思考题,没做。
话说,网站那要填“http:// ” 反人类啊!
learned^_^