问题描述 
 有n个小朋友围坐成一圈。老师给每个小朋友随机发偶数个糖果,然后进行下面的游戏: 
 每个小朋友都把自己的糖果分一半给左手边的孩子。 
 一轮分糖后,拥有奇数颗糖的孩子由老师补给1个糖果,从而变成偶数。 
 反复进行这个游戏,直到所有小朋友的糖果数都相同为止。 
 你的任务是预测在已知的初始糖果情形下,老师一共需要补发多少个糖果。
输入格式 
 程序首先读入一个整数N (2< N <100),表示小朋友的人数。 
 接着是一行用空格分开的N个偶数(每个偶数不大于1000,不小于2) 
 输出格式 
 要求程序输出一个整数,表示老师需要补发的糖果数。
样例输入 
 3 
 2 2 4 
 样例输出 
 4
解析:简单模拟即可,一开始没注意到最后一个不能直接同a[0]进行处理,因为前面的移动已经改变了a[0]的初始值,所以要多一步处理。
public class Main {static int n;static int[] a;static int cnt = 0;public static void main(String[] args) {Scanner in = new Scanner(System.in);n = in.nextInt();a = new int[n + 1];for (int i = 0; i < n; i++) {a[i] = in.nextInt();}while (true) {int j = 0;for (j = 1; j < n; j++) {if (a[0] != a[j]) {break;}}if (j == n) {break;}int x = a[0];for (int i = 0; i < n-1; i++) {a[i] = (a[i] + a[i+1]) / 2;}a[n-1] = (a[n-1] + x) / 2;for (int i = 0; i < n; i++) {if (a[i] % 2 != 0) {a[i] += 1;cnt++;}}}System.out.println(cnt);}
}