题目描述
CC有一天当了幼儿园的老师,常常会给一些小孩糖果,她每次买的糖果数正好能分均匀,但是CC的视力不太好常常会分错,于是CC让小孩子们自己去分均匀,传糖果的规则是1号只能给2号,n号只能给n-1号,其余的两边都可以传,小孩子们也嫌麻烦,你能帮他们计算出传的最少次数吗
输入
第一行,输入一个n
下面n个数代表每个孩子初始的糖果数
输出
输出最少的传递糖果次数
分析:
其实,我们只需要先求出平均数,然后依次判断每一个数,如果当前数大于平均数,则将,多余给后面,反之,让后面将给前面。
#include"stdio.h"
int main()
{
int n,a[1000];
int ave,i,j,m=0;
while(~scanf("%d",&n))
{ ave=0;m=0;
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
ave=ave+a[i];
}
ave=ave/n;
for(i=0;i<n;i++)
{
if(a[i]>ave)
{
a[i+1]=a[i+1]+a[i]-ave;
a[i]=ave;
m++;
}
else
if(a[i]<ave)
{
a[i+1]=a[i+1]-(ave-a[i]);
a[i]=ave;
m++;
}
}
printf("%d\n",m);
}
}