讨论 / 这个可以过
hnrw_07 2017-05-05 08:28:03
点我顶贴 收藏 删除
#include<stdio.h>

int main()

{

int n;

while(scanf("%d",&n)!=EOF)

{

int a[101]={0},k=0,g=0,j,l;

for(int i=0;i<n;i++)

{scanf("%d",&a[i]);k=k+a[i];}

int h=k/n;

for(j=0;j<n-1;j++)

{

if(a[j]!=h)

{a[j+1]=a[j+1]-h+a[j];g++;}

}

printf("%d\n",g);

}

return 0;

}

#1 huangyichen@2017-09-05 13:27:03
回复 删除
#include<cstdio>

int n,a[10010];

int main()

{

scanf("%d",&n);

int tot=0;

for(int i=1;i<=n;i++)

{

scanf("%d",&a[i]);

tot+=a[i];

}

tot/=n;

for(int i=1;i<=n;i++)

a[i]-=tot;

int ans=0;

for(int i=1;i<=n;i++)

{

if(a[i]==0)

continue;

ans++;

a[i+1]+=a[i];

}

printf("%d",ans);

}

#2 1700671432@2017-09-08 13:34:16
回复 删除
#include <cstdio>

#include <cstring>

int a[110];

int n,m=0,ans;

int main()

{

scanf("%d",&n);ans=n;

for(int i=1;i<=n;i++)

{

scanf("%d",&a[i]);

m+=a[i];

}

m/=n;

for(int i=1;i<=n;i++)

{

if(a[i]>m)

{

a[i+1]+=a[i]-m;

a[i]=m;

}

else

if(a[i]<m)

{

a[i+1]-=m-a[i];

a[i]=m;

}

else ans--;

}

printf("%d",ans);

}

纯贪心

过一遍就行了

多了就丢给前面一个

少了就找前面要

#3 1700671432@2017-09-08 13:34:34
回复 删除
#include <cstdio>

#include <cstring>

int a[110];

int n,m=0,ans;

int main()

{

scanf("%d",&n);ans=n;

for(int i=1;i<=n;i++)

{

scanf("%d",&a[i]);

m+=a[i];

}

m/=n;

for(int i=1;i<=n;i++)

{

if(a[i]>m)

{

a[i+1]+=a[i]-m;

a[i]=m;

}

else

if(a[i]<m)

{

a[i+1]-=m-a[i];

a[i]=m;

}

else ans--;

}

printf("%d",ans);

}

#4 1700671432@2017-09-08 13:34:50
回复 删除
什么鬼。

查看更多回复
提交回复