歷屆試題 分糖果

題目

問題描述

有n個小朋友圍坐成一圈。老師給每個小朋友隨機發偶數個糖果,然後進行下面的遊戲:

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

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

  反覆進行這個遊戲,直到所有小朋友的糖果數都相同爲止。

  你的任務是預測在已知的初始糖果情形下,老師一共需要補發多少個糖果。

輸入格式

  程序首先讀入一個整數N(2<N<100),表示小朋友的人數。
  接着是一行用空格分開的N個偶數(每個偶數不大於1000,不小於2)

輸出格式

  要求程序輸出一個整數,表示老師需要補發的糖果數。

樣例輸入

3
2 2 4

樣例輸出

4


思路:

要是我考試的時候都是這題就好了。。。


代碼

import java.util.*;
import java.math.*;
import java.util.regex.*;


public class Main {

    final static int INF = 0x3f3f3f3f;
    final static int NUM = 100;

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        int n;
        while (sc.hasNext()) {
            n=sc.nextInt();
            int[] a = new int[n];
            for(int i=0;i<n;i++)a[i]=sc.nextInt();
            int ans=0;
            while(true) {
                int x=a[n-1];
                for(int i=n-1;i>0;i--) {
                    a[i]/=2;
                    a[i]+=a[i-1]/2;
                }
                a[0]/=2;a[0]+=x/2;
                for(int i=0;i<n;i++)
                    if(a[i]%2!=0) {
                        a[i]++;
                        ans++;
                    }
                boolean bl=true;
                for(int i=1;i<n;i++)
                    if(a[i]!=a[i-1]) bl=false;
                if(bl) break;
            }

            System.out.println(ans);
        }

    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章