每個小朋友都把自己的糖果分一半給左手邊的孩子。
一輪分糖後,擁有奇數顆糖的孩子由老師補給1個糖果,從而變成偶數。
反覆進行這個遊戲,直到所有小朋友的糖果數都相同爲止。
你的任務是預測在已知的初始糖果情形下,老師一共需要補發多少個糖果。
接着是一行用空格分開的N個偶數(每個偶數不大於1000,不小於2)
2 2 4
4
沒啥好說的,直接貼代碼
#include <iostream>
using namespace std;
int candy[100];
int N;
bool judge()
{
int i;
for(i=1;i<N;i++)
{
if(candy[i]!=candy[0])
return false;
}
return true;
}
int distributeCandy()
{
int temp=candy[0];
int i;
int number=0;
for(i=0;i<N-1;i++){
candy[i]=(candy[i]+candy[i+1])/2;
if(candy[i]%2!=0)
{
number++;
candy[i]++;
}
}
candy[N-1]=(temp+candy[N-1])/2;
if(candy[N-1]%2!=0)
{
number++;
candy[N-1]++;
}
return number;
}
int main()
{
int number=0;
int i;
cin>>N;
for(i=0;i<N;i++){
cin>>candy[i];
}
while(1){
if(judge())
break;
number+=distributeCandy();
}
cout<<number;
return 0;
}
AC了