语言数组分糖,C语言分糖果"/>
c语言数组分糖,C语言分糖果
写在前面:这里是小王成长日志,一名在校大学生,想在学习之余将自己的学习笔记分享出来,记录自己的成长轨迹,帮助可能需要的人。欢迎关注与留言。
题目:
题目链接:.html
题目 1431: [蓝桥杯][2014年第五届真题]分糖果
时间限制: 1Sec 内存限制: 128MB 提交: 5184 解决: 2711
题目描述
问题描述
有n个小朋友围坐成一圈。老师给每个小朋友随机发偶数个糖果,然后进行下面的游戏:
每个小朋友都把自己的糖果分一半给左手边的孩子。
一轮分糖后,拥有奇数颗糖的孩子由老师补给1个糖果,从而变成偶数。
反复进行这个游戏,直到所有小朋友的糖果数都相同为止。
你的任务是预测在已知的初始糖果情形下,老师一共需要补发多少个糖果。
输入
程序首先读入一个整数N(2< N< 100),表示小朋友的人数。
接着是一行用空格分开的N个偶数(每个偶数不大于1000,不小于2)
输出
要求程序输出一个整数,表示老师需要补发的糖果数。
样例输入
3
2 2 4
样例输出
4
C语言解法
参考题解:
#include
int main()
{
int n, count = 0, flag = 1;
scanf("%d", &n);
int a[n + 1];
for (int i = 1; i < n + 1; i++)
scanf("%d", &a[i]);
//输入完成
//进入循环
while (flag)
{
flag = 0;
a[0] = a[1];
for (int i = 0; i < n; i++)
a[i] = a[i] / 2 + a[i + 1] / 2;
a[n] = a[n] / 2 + a[0] / 2;
for (int i = 0; i < n + 1; i++)
if (a[i] % 2 != 0)
{
a[i] += 1;count++;
}
for (int i = 1; i < n + 1; i++)
if (a[i] != a[0])
flag = 1;
}
printf("%d", count);
return 0;
}
都看到这里了,各位哥哥姐姐叔叔阿姨给小王点个赞 关个注 留个言吧,和小王一起成长吧,你们的关注是对我最大的支持。
有事没事进来看看吧 : 小王的博客目录索引
C语言专栏看这 : C语言学习专栏
如果以上内容有任何不准确或遗漏之处,或者你有更好的意见,就在下面留个言让我知道吧-我会尽我所能来回答。
更多推荐
c语言数组分糖,C语言分糖果
发布评论