hdu 1034 #模拟
发布时间
阅读量:
阅读量
在每一次游戏循环中,在一个围成圆圈的学生群体里进行操作:每个参与者将自己的全部糖果的一半转移给右侧的同学;如果某个学生的最终糖果数量为奇数,则他将向老师领取一块以确保总数为偶数。
探讨多少轮次的游戏能完成(每位参与者在游戏终止时拥有相同的糖果数量,则可推断该过程必将在有限步骤内完成)
#include <stdio.h>
#define N 100
int main()
{
int s[N],n,i,j,k,t,p;
while(scanf("%d",&n) == 1 && n)
{
for(i = 0; i < n; ++i)
scanf("%d",s + i);
for(k = 1; ; ++k)
{
t = s[n-1]/2;
for(i = 0; i < n;++i)
{
p = s[i] / 2;
s[i] = s[i] / 2 + t;
t = p;
if(s[i]&1)
++s[i];
}
t = s[0];
for(i = 1; i < n && t == s[i]; ++i);
if(i == n)
break;
}
printf("%d %d\n",k,t);
}
return 0;
}
代码解读
全部评论 (0)
还没有任何评论哟~
