c語言網-1431-[藍橋杯][2014年第五屆真題]分糖果
阿新 • • 發佈:2018-12-21
題目描述
問題描述
有n個小朋友圍坐成一圈。老師給每個小朋友隨機發偶數個糖果,然後進行下面的遊戲:
每個小朋友都把自己的糖果分一半給左手邊的孩子。
一輪分糖後,擁有奇數顆糖的孩子由老師補給1個糖果,從而變成偶數。
反覆進行這個遊戲,直到所有小朋友的糖果數都相同為止。
你的任務是預測在已知的初始糖果情形下,老師一共需要補發多少個糖果。
輸入
程式首先讀入一個整數N(2< N< 100),表示小朋友的人數。
接著是一行用空格分開的N個偶數(每個偶數不大於1000,不小於2)
輸出
要求程式輸出一個整數,表示老師需要補發的糖果數。
樣例輸入
3 2 2 4
樣例輸出
4
# include <iostream> using namespace std; int main () { int n; cin>>n; int array[10000];//儲存原來的陣列 int array1[10000]; int num; bool isSame=true; for(int a=0;a<n;a++) { cin>>array[a]; } while(1) { isSame=true; for(int a=0;a<n;a++) { array1[a]=(array[a]+array[(a+1)%n])/2; } for(int a=0;a<n;a++) { if(array1[a]%2!=0) { array1[a]++; num++; } } for(int a=1;a<n;a++) { if(array1[a]!=array1[0]) { isSame=false; } } if(isSame==true) { cout<<num <<endl; break; } else { for(int a=0;a<n;a++) { array[a]=array1[a]; } } } }