蓝桥杯练习 分糖果

问题描述
  有n个小朋友围坐成一圈。老师给每个小朋友随机发偶数个糖果,然后进行下面的游戏:

  每个小朋友都把自己的糖果分一半给左手边的孩子。

  一轮分糖后,拥有奇数颗糖的孩子由老师补给1个糖果,从而变成偶数。

  反复进行这个游戏,直到所有小朋友的糖果数都相同为止。

  你的任务是预测在已知的初始糖果情形下,老师一共需要补发多少个糖果。
输入格式
  程序首先读入一个整数N(2<N<100),表示小朋友的人数。
  接着是一行用空格分开的N个偶数(每个偶数不大于1000,不小于2)
输出格式
  要求程序输出一个整数,表示老师需要补发的糖果数。
样例输入
3
2 2 4
样例输出
4
 1 #include <stdio.h> 
 2 #include <stdlib.h>
 3 int main()
 4 {
 5     int n;//小朋友的个数
 6     int a[1000];//每个小朋友的糖果数
 7 
 8     int i;
 9     int j;
10     int count=0;
11     int sum=0;
12     int t;
13     int temp;
14     scanf("%d",&n); 
15     for(i=0;i<n;i++)
16     {
17         scanf("%d",&a[i]); 
18     }
19 
20     while(1){
21         for(j=0;j<n;j++)
22      {
23         if(a[j]!=a[0])
24         {
25             break;
26         }
27         else 
28         count++;
29      }
30      if(count==n)
31      {
32          break;
33      }
34         temp = a[n-1] / 2;    
35      
36         for(i = 0; i < n; i ++){    
37             t = a[i] / 2;    
38             a[i] = t + temp;    
39             temp = t;    
40         }    
41      for(j=0;j<n;j++)
42      {
43          if(a[j]%2!=0)
44          {
45              a[j]=a[j]+1;
46              sum++;
47          }
48      }
49      count=0;
50     }    
51     printf("%d",sum);
52 
53     return 0;
54 }

问题记录:在计算每个小朋友分给左边小朋友糖果时候出现问题,着重复习。

整个过程就是按照 游戏进程 书写

原文地址:https://www.cnblogs.com/jweie/p/8340557.html