蓝桥-分糖果(算法训练)
2015-09-22 22:07
429 查看
/* 蓝桥-分糖果 测试通过 时间:2015-9-22 问题描述 有n个小朋友围坐成一圈。老师给每个小朋友随机发偶数个糖果,然后进行下面的游戏: 每个小朋友都把自己的糖果分一半给左手边的孩子。 一轮分糖后,拥有奇数颗糖的孩子由老师补给1个糖果,从而变成偶数。 反复进行这个游戏,直到所有小朋友的糖果数都相同为止。 你的任务是预测在已知的初始糖果情形下,老师一共需要补发多少个糖果。 输入格式 程序首先读入一个整数N(2<N<100),表示小朋友的人数。 接着是一行用空格分开的N个偶数(每个偶数不大于1000,不小于2) 输出格式 要求程序输出一个整数,表示老师需要补发的糖果数。 样例输入 3 2 2 4 样例输出 4 */ #include<stdio.h> #define N 100 int Judge(int p[], int num) { int i; for(i = 0; i < num; i++) if(p[0] != p[i]) return 1; return 0; } int main() { int child = {0}, t = {0}; int n, i; scanf("%d", &n); for(i = 0; i < n; i++) { scanf("%d", &child[i]); } int sum = 0; int count = 0; while(Judge(child, n)) { for(i = 0; i < n; i++) { if(child[i] % 2 == 0) { t[i] = child[i] = child[i] / 2; } else { t[i] = child[i] = (child[i] + 1) / 2; sum++; } } for(i = 0; i < n - 1; i++) { child[i + 1] += t[i]; } child[0] += t[n - 1]; count++; } //printf("需要进行%d次分糖, 需要补充%d颗糖果\n", count, sum); printf("%d", sum); }
相关文章推荐
- BZOJ 1036: [ZJOI2008]树的统计Count
- cocos2d-x 相关文章资源(安卓开发)
- JavaScript函数的多种定义方法
- (小结)第三章:选择
- java程序员必知的 8大排序
- 编译原理学习笔记-2
- java自动装箱
- Emacs和Vim:神的编辑器和编辑器之神
- sqlmap使用参数详解
- JDBC数据库连接与事物
- UVA 12086 - Potentiometers(树状数组)
- 3D数学 AABB(轴对齐矩形边界框)
- 丰富eclipse注解的内容
- 3个人说了真话,1个人说的是假话。写一个程序来确定到底谁是凶手
- 局域网内,kali对win2003的一次***。
- Widget的基本知识与历史渊源
- Poj.2590 Steps【“英语题”,水】 2015/09/22
- hydra
- nyoj--79--导弹拦截(动态规划)
- 【转】菜鸟,大牛和教主,三者的区别