題目描述:
有n個小朋友圍坐成一圈。老師給每個小朋友隨機發偶數個糖果,然后進行下面的游戲:
每個小朋友都把自己的糖果分一半給左手邊的孩子。
一輪分糖后,擁有奇數顆糖的孩子由老師補給1個糖果,從而變成偶數。
反復進行這個游戲,直到所有小朋友的糖果數都相同為止。
你的任務是預測在已知的初始糖果情形下,老師一共需要補發多少個糖果。
代碼:
package lanqiao;import java.math.BigInteger;
import java.util.*;public class Main {public static void main(String[] args) {Scanner sc = new Scanner(System.in);int n = sc.nextInt();int[] ar1 = new int[n]; //原本糖果的數目int[] ar2 = new int[n]; //給左孩子的糖果數目for(int i = 0;i < n;i ++){ar1[i] = sc.nextInt();}boolean flag = true;int sum = 0;while(flag){flag = false;for(int i = 0;i < n;i ++){if(i == n - 1){ar2[0] = ar1[i] / 2;ar1[i] = ar1[i] / 2;}else{ar2[i + 1] = ar1[i] / 2;ar1[i] = ar1[i] / 2;}}for(int i = 0;i < n;i ++){ar1[i] += ar2[i]; //加上旁邊給的糖果}for(int i = 0;i < n;i ++){if(ar1[i] % 2 != 0){ar1[i] += 1;sum ++;}if(ar1[0] != ar1[i]){ //判斷孩子們手中糖果是否相等flag = true;}}}System.out.println(sum);}
}