歷屆試題 分糖果
阿新 • • 發佈:2018-03-29
image 初始 自己的 分糖果 pro 格式 () 輸入 als
問題描述
有n個小朋友圍坐成一圈。老師給每個小朋友隨機發偶數個糖果,然後進行下面的遊戲:
每個小朋友都把自己的糖果分一半給左手邊的孩子。
一輪分糖後,擁有奇數顆糖的孩子由老師補給1個糖果,從而變成偶數。
反復進行這個遊戲,直到所有小朋友的糖果數都相同為止。
你的任務是預測在已知的初始糖果情形下,老師一共需要補發多少個糖果。 輸入格式 程序首先讀入一個整數N(2<N<100),表示小朋友的人數。
接著是一行用空格分開的N個偶數(每個偶數不大於1000,不小於2) 輸出格式 要求程序輸出一個整數,表示老師需要補發的糖果數。 樣例輸入 3
2 2 4 樣例輸出 4
每個小朋友都把自己的糖果分一半給左手邊的孩子。
一輪分糖後,擁有奇數顆糖的孩子由老師補給1個糖果,從而變成偶數。
反復進行這個遊戲,直到所有小朋友的糖果數都相同為止。
你的任務是預測在已知的初始糖果情形下,老師一共需要補發多少個糖果。 輸入格式 程序首先讀入一個整數N(2<N<100),表示小朋友的人數。
接著是一行用空格分開的N個偶數(每個偶數不大於1000,不小於2) 輸出格式 要求程序輸出一個整數,表示老師需要補發的糖果數。 樣例輸入 3
2 2 4 樣例輸出 4
import java.util.Scanner; public class Candy { static int t; public static void main(String[] args) { Scanner sc = new Scanner(System.in); int num = sc.nextInt(); int a[] = new int[num]; int zan[] = new int[num]; for (int i = 0; i < a.length; i++) { a[i] = sc.nextInt(); } distribute(a,zan,num); } private static void distribute(int[] a, int[] zan, int num) { for (int i = 0; i < zan.length; i++) { zan[i] = a[i]/2; a[i] = zan[i]; } boolean q = true; for (int i = 0; i < zan.length; i++) { int r = (i+1)%num; int e = (a[i]+zan[r])%2; if(e==1){ a[i] = a[i] + zan[r] +1; t++; }else { a[i] = a[i] + zan[r]; } if(a[i]!=a[0]) { q = false; } } if(q) { System.out.println(t); }else { distribute(a,zan,num); } } }
歷屆試題 分糖果