Java 10個小孩圍成一圈分糖果,老師順次分給每個人的糖塊數為12,2,8,22,16,4,10,6, 14,20。
阿新 • • 發佈:2018-11-26
10個小孩圍成一圈分糖果,老師順次分給每個人的糖塊數為12,2,8,22,16,4,10,6, 14,20。
然後按下列規則調整,所有小孩同時把自己的糖果分一半給右邊的小孩,糖塊數變為奇數的人,
再向老師補要一塊,問經過多少次調整後,大家的糖塊一樣多,且每人多少塊。
int[] arr = {12,2,8,22,16,4,10,6,14,20}; int[] temp = new int[10]; //定義一個用來轉移資料的陣列 int item = 0; //用來計數 while(true){ for(int i = 0; i < arr.length; i++){ // 用temp 來存放 arr對應的一半 temp[i] = arr[i]/2; } for(int i = 1; i < arr.length; i++){ // 下方程式碼的迴圈縮寫。 arr[i] = arr[i]/2 + temp[i-1]; } // arr[1] = arr[1]/2+temp[0]; // arr[2] = arr[2]/2+temp[1]; // arr[3] = arr[3]/2+temp[2]; // arr[4] = arr[4]/2+temp[3]; // arr[5] = arr[5]/2+temp[4]; // arr[6] = arr[6]/2+temp[5]; // arr[7] = arr[7]/2+temp[6]; // arr[8] = arr[8]/2+temp[7]; // arr[9] = arr[9]/2+temp[8]; arr[0] = arr[0]/2+temp[9]; for(int i = 0; i < arr.length; i++){ // 判斷是否是奇數,奇數加 1 if(arr[i]%2 != 0){ arr[i] = arr[i]+1; } } item ++; if(arr[0]==arr[1]&&arr[1]==arr[2]&&arr[2]==arr[3]&&arr[3]==arr[4] &&arr[4]==arr[5]&&arr[5]==arr[6]&&arr[6]==arr[7] &&arr[7]==arr[8]&&arr[8]==arr[9]){ // 雖然寫的難看,但是效率比迴圈高 break; } System.out.println(Arrays.toString(arr)); // 每一次執行完 打印出來看一看 } System.out.println("經過 "+item+" 次後 小朋友的糖果一樣,有 "+arr[4]+"個");