var
i,j,k,l,z,x,w,r,s:longint;
a:array[1..100] of longint;
begin
readln(l);
for i:=1to l dobeginread(a[i]);
k:=k+a[i];
if x<a[i] thenbegin x:=a[i];z:=i;end;
end;
k:=k div l;
while1=1dobegin
w:=0;r:=0;
if x=k thenbreak;
for i:=1to z-1do
w:=w+a[i];
if (z-1)*k-w>0thenbegin a[z-1]:=a[z-1]+((z-1)*k-w);a[z]:=a[z]-((z-1)*k-w);inc(s);end;
for i:=z+1to l do
r:=r+a[i];
if (l-z)*k-r>0thenbegin a[z+1]:=a[z+1]+((l-z)*k-r);a[z]:=a[z]-((l-z)*k-r);inc(s);end;
x:=0;
for i:=1to l doif x<a[i] thenbegin x:=a[i];z:=i;end;
end;
writeln(s);
end.
题目描述 n堆纸牌,用最少的移动次数使每堆纸牌数都一样多。样例输入49 8 17 6样例输出3思路计算出平均值,把多的那堆纸牌推向少的那堆纸牌。var i,j,k,l,z,x,w,r,s:longint; a:array[1..100] of longint;begin readln(l); for i:=1 to l do begin read(a[