目錄
1 問題描述
問題描述
有n個小朋友圍坐成一圈。老師給每個小朋友隨機發偶數個糖果,然后進行下面的游戲:
每個小朋友都把自己的糖果分一半給左手邊的孩子。
一輪分糖后,擁有奇數顆糖的孩子由老師補給1個糖果,從而變成偶數。
反復進行這個游戲,直到所有小朋友的糖果數都相同為止。
你的任務是預測在已知的初始糖果情形下,老師一共需要補發多少個糖果。
每個小朋友都把自己的糖果分一半給左手邊的孩子。
一輪分糖后,擁有奇數顆糖的孩子由老師補給1個糖果,從而變成偶數。
反復進行這個游戲,直到所有小朋友的糖果數都相同為止。
你的任務是預測在已知的初始糖果情形下,老師一共需要補發多少個糖果。
輸入格式
程序首先讀入一個整數N(2<N<100),表示小朋友的人數。
接着是一行用空格分開的N個偶數(每個偶數不大於1000,不小於2)
接着是一行用空格分開的N個偶數(每個偶數不大於1000,不小於2)
輸出格式
要求程序輸出一個整數,表示老師需要補發的糖果數。
樣例輸入
3
2 2 4
2 2 4
樣例輸出
4
2 解決方案
具體代碼如下:
import java.util.Scanner; public class Main { public static int N; public static int[] Child; public static int count = 0; //最終輸出結果 public void getResult() { while(true) { boolean judge = true; for(int i = 1;i < N;i++) { if(Child[0] != Child[i]) { judge = false; break; } } if(judge) break; int[] half = new int[N]; for(int i = 0;i < N;i++) { if(i == N - 1) half[0] = Child[i] / 2; else half[i + 1] = Child[i] / 2; } for(int i = 0;i < N;i++) { Child[i] = Child[i] / 2 + half[i]; if(Child[i] % 2 == 1) { count++; Child[i]++; } } } System.out.println(count); } public static void main(String[] args) { Main test = new Main(); Scanner in = new Scanner(System.in); N = in.nextInt(); Child = new int[N]; for(int i = 0;i < N;i++) Child[i] = in.nextInt(); test.getResult(); } }