</pre><br />标题:分糖果 有n个小朋友围坐成一圈。老师给每个小朋友随机发偶数个糖果,然后进行下面的游戏: 每个小朋友都把自己的糖果分一半给左手边的孩子。 一轮分糖后,拥有奇数颗糖的孩子由老师补给1个糖果,从而变成偶数。 反复进行这个游戏,直到所有小朋友的糖果数都相同为止。 你的任务是预测在已知的初始糖果情形下,老师一共需要补发多少个糖果。【格式要求】 程序首先读入一个整数N(2<N<100),表示小朋友的人数。 接着是一行用空格分开的N个偶数(每个偶数不大于1000,不小于2) 要求程序输出一个整数,表示老师需要补发的糖果数。例如:输入32 2 4程序应该输出:4资源约定:峰值内存消耗 < 256MCPU消耗 < 1000ms请严格按要求输出,不要画蛇添足地打印类似:“请您输入...” 的多余内容。所有代码放在同一个源文件中,调试通过后,拷贝提交该源码。注意: main函数需要返回0注意: 只使用ANSI C/ANSI C++ 标准,不要调用依赖于编译环境或操作系统的特殊函数。注意: 所有依赖的函数必须明确地在源文件中 #include <xxx>, 不能通过工程设置而省略常用头文件。
代码如下:#include "stdio.h" #define MAX 110 int main() { int tg[MAX]={0}; int N,i,current,count=0; scanf("%d",&N); for(i=0;i<N;i++) scanf("%d",&tg[i]); while(1) { current=tg[0]/2; tg[0]-=tg[0]/2; for(i=1;i<N;i++) { tg[i-1]+=tg[i]/2; tg[i]-=tg[i]/2; } tg[N-1]+=current; for(i=0;i<N;i++)//补足奇数 if(tg[i]%2) { tg[i]++; count++; } for(i=1;i<N;i++)//有不相等的那么i!=N if(tg[0] != tg[i]) break; if(i==N)//所有糖果数相等 { printf("%d\n",count); break; } } return 0; }
水题!
分糖果
最新推荐文章于 2020-10-13 19:27:22 发布