分析:
用数组存储小朋友的糖果数。循环模拟分一半糖果给左边小朋友,奇数糖果数又老师补发一颗的过程,直到小朋友的 糖果数量相等。
注意数组首尾的处理。
代码实现:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int N = sc.nextInt(); //N个小朋友
int [] a = new int[N];
for (int i = 0; i < a.length; i++) {
a[i] = sc.nextInt();
}
int ans = 0; //记录老师需要补发的糖果数
while(true) {
int t = a[0];
/*处理前N-1个孩子的糖果数*/
for (int i = 0; i <= N - 2; i++) {
a[i] -= a[i] / 2; //每个小朋友都把自己的糖果分一半给左手边的孩子
a[i] += a[i+1]/2; //每个小朋友接收右手边的孩子的一半糖果
if(a[i] % 2 == 1) { //拥有奇数颗糖的孩子由老师补给1个糖果
a[i]++;
ans++;
}
}
/*最后一个孩子的糖果数单独处理*/
a[N-1] -