分糖果

題目描述

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

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

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

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

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

輸入

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

輸出

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

樣例輸入和輸出

在這裏插入圖片描述

#include<stdio.h>
#include<iostream>
using namespace std;
const int MAX=100;
int a[MAX],n;
bool isequal()
{
    for(int i=0; i<n-1; i++)
    {
        if(a[i]!=a[i+1])
        {
            return false;
        }
    }
    return true;
}
int main()
{
    int i,k=0;
    scanf("%d",&n);
    for(i=0; i<n; i++)
    {
        scanf("%d",&a[i]);
    }
    while(1)
    {
        if(isequal())
        {
            break;
        }
        for(i=0; i<n; i++)
        {
            if(a[i]%2==1)
            {
                k++;
                a[i]++;
            }
            a[i]=a[i]/2;
        }
        int m=a[0];
        for(i=0; i<n-1; i++)
        {
            a[i]=a[i]+a[i+1];
        }
        a[n-1]=a[n-1]+m;
    }
    printf("%d",k);
    return 0;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章