码迷,mamicode.com
首页 > 编程语言 > 详细

蓝桥-分糖果(算法训练)

时间:2015-09-22 23:41:18      阅读:303      评论:0      收藏:0      [点我收藏+]

标签:

 1 /*
 2 蓝桥-分糖果
 3 测试通过
 4 时间:2015-9-22
 5 
 6 问题描述
 7   有n个小朋友围坐成一圈。老师给每个小朋友随机发偶数个糖果,然后进行下面的游戏:
 8 
 9   每个小朋友都把自己的糖果分一半给左手边的孩子。
10 
11   一轮分糖后,拥有奇数颗糖的孩子由老师补给1个糖果,从而变成偶数。
12 
13   反复进行这个游戏,直到所有小朋友的糖果数都相同为止。
14 
15   你的任务是预测在已知的初始糖果情形下,老师一共需要补发多少个糖果。
16 输入格式
17   程序首先读入一个整数N(2<N<100),表示小朋友的人数。
18   接着是一行用空格分开的N个偶数(每个偶数不大于1000,不小于2)
19 输出格式
20   要求程序输出一个整数,表示老师需要补发的糖果数。
21 样例输入
22 3
23 2 2 4
24 样例输出
25 4
26 */

27 #include<stdio.h> 28 #define N 100 29 int Judge(int p[], int num) { 30 int i; 31 for(i = 0; i < num; i++) 32 if(p[0] != p[i]) 33 return 1; 34 return 0; 35 } 36 int main() { 37 int child[N] = {0}, t[N] = {0}; 38 int n, i; 39 scanf("%d", &n); 40 for(i = 0; i < n; i++) { 41 scanf("%d", &child[i]); 42 } 43 44 int sum = 0; 45 int count = 0; 46 while(Judge(child, n)) { 47 for(i = 0; i < n; i++) { 48 if(child[i] % 2 == 0) { 49 t[i] = child[i] = child[i] / 2; 50 } 51 else { 52 t[i] = child[i] = (child[i] + 1) / 2; 53 sum++; 54 } 55 } 56 for(i = 0; i < n - 1; i++) { 57 child[i + 1] += t[i]; 58 } 59 child[0] += t[n - 1]; 60 count++; 61 } 62 //printf("需要进行%d次分糖, 需要补充%d颗糖果\n", count, sum); 63 printf("%d", sum); 64 }

 

蓝桥-分糖果(算法训练)

标签:

原文地址:http://www.cnblogs.com/lzjtdxfxl/p/4830658.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!