C語言 · 分糖果


歷屆試題 分糖果  
時間限制:1.0s   內存限制:256.0MB
    
問題描述
  有n個小朋友圍坐成一圈。老師給每個小朋友隨機發偶數個糖果,然后進行下面的游戲:

  每個小朋友都把自己的糖果分一半給左手邊的孩子。

  一輪分糖后,擁有奇數顆糖的孩子由老師補給1個糖果,從而變成偶數。

  反復進行這個游戲,直到所有小朋友的糖果數都相同為止。

  你的任務是預測在已知的初始糖果情形下,老師一共需要補發多少個糖果。
輸入格式
  程序首先讀入一個整數N(2<N<100),表示小朋友的人數。
  接着是一行用空格分開的N個偶數(每個偶數不大於1000,不小於2)
輸出格式
  要求程序輸出一個整數,表示老師需要補發的糖果數。
樣例輸入
3
2 2 4
樣例輸出
4

 

 1 #include<stdio.h> 
 2 int main(){
 3     int i,N,a[100];
 4     int answer=0;//計數器
 5     scanf("%d",&N);
 6     for(i=0;i<N;i++){
 7         scanf("%d",&a[i]);
 8     }
 9     while(1){
10         //若小朋友的糖果數相等,結束 
11         for(i=1;i<N;i++)  
12         {  
13             if(a[i]!=a[0])  
14                 break;
15         }
16         if(i==N)//檢查到最后一位,結束 
17             break;
18         /*分給左手邊一半*/
19         int num=a[0];
20         for(i=0;i<N-1;i++){
21             a[i] = (a[i]+a[i+1])/2;
22         }
23         a[i]=(a[i]+num)/2;
24         /*奇數補充為偶數*/
25         for(i=0;i<N;i++){
26             if(a[i]%2!=0){
27                 a[i]++;
28                 answer++;//計數器自增 
29             }
30         }
31     }
32     printf("%d",answer);
33 }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM