jiangchenyangsong
2021-03-09 21:25:27
第一步:求出平均数
第二步:数组a预处理一下
第三步:计算次数
#include<bits/stdc++.h>
using namespace std;
int n,a[105],ans,k,num;
int main(){
scanf("%d",&n);
for(int i=1;i<=n;i++){
scanf("%d",&a[i]);
ans+=a[i];
}
ans/=n;//算出平均数
for(int i=1;i<=n;i++)
a[i]-=ans; //预处理
for(int i=1;i<n;i++){
if(!a[i]) continue; //如果为0,则不需要做任何处理
a[i+1]+=a[i]; // 把第i堆欠的,或多的转移到i+1堆里
//a[i]负数相当于把i+1堆中抽出几张,使a[i]=0
//a[i]正数相当于把i堆中抽出几张,转移到i+1堆中,使a[i]=0
num++; //移动次数+1
}
printf("%d\n",num);
return 0;
}