蓝桥杯——分糖果

编程入门 行业动态 更新时间:2024-10-10 19:21:17

蓝桥杯——分<a href=https://www.elefans.com/category/jswz/34/1761997.html style=糖果"/>

蓝桥杯——分糖果

问题描述  有n个小朋友围坐成一圈。老师给每个小朋友随机发偶数个糖果,然后进行下面的游戏:  每个小朋友都把自己的糖果分一半给左手边的孩子。  一轮分糖后,拥有奇数颗糖的孩子由老师补给1个糖果,从而变成偶数。  反复进行这个游戏,直到所有小朋友的糖果数都相同为止。  你的任务是预测在已知的初始糖果情形下,老师一共需要补发多少个糖果。输入格式  程序首先读入一个整数N(2<N<100),表示小朋友的人数。  接着是一行用空格分开的N个偶数(每个偶数不大于1000,不小于2)输出格式  要求程序输出一个整数,表示老师需要补发的糖果数。样例输入32 2 4样例输出4值得注意的是,在传递糖果时,所有的小盆友是同时进行的。在用程序模拟的时候,需要用循环。为了避免前一次传递影响下一次传递,循环必须从第一个开始,即先修改第一个小朋友的糖果数,再修改第二个,依次类推。此外,还要事先保存第一个小朋友的糖果的数目,这样即使在第一个小朋友的糖果数改变了之后,还能知道应该给最后一个小朋友的糖果的数目。举个例子:比如有四个小朋友,开始时他们的糖果数是a,b,c,d.一轮分糖果之后,他们的糖果数变成了:(a+b)/2,(b+c)/2,(c+d)/2,(d+a)/2。然后老师给奇数个糖果的小朋友一个糖果,以此类推,直到所有小朋友的糖果数一样,则结束。


#include<stdio.h>
#define MAXN 110
int a[MAXN];int main()
{int n,i,count=0;scanf("%d",&n);for(i=0;i<n;i++){scanf("%d",&a[i]);}while(1){//检查所有小朋友的糖果数是否相等for(i=1;i<n;i++){if(a[i]!=a[0])break;}if(i==n)break;//每个小朋友都把自己的糖果分一半给左手边的孩子int num=a[0];for(i=0;i<n-1;i++){a[i]=(a[i]+a[i+1])/2;}a[i]=(a[i]+num)/2;//一轮分糖后,拥有奇数颗糖的孩子由老师补给1个糖果,从而变成偶数。for(i=0;i<n;i++){if(a[i]%2!=0){a[i]++;count++;}}}printf("%d\n",count);return 0;
}


更多推荐

蓝桥杯——分糖果

本文发布于:2024-03-23 18:11:23,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1741243.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:糖果   蓝桥杯

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!