参考算法竞赛入门经典训练指南
/*
最后每个人的金币:M = (A1+A2+...+An)/n(设当前每个人的金币为Ai)
设xi表示i给i+1传递给了xi个金币(xn表示n给1传递了xn个金币)
为什么只表示第i给人给第i+1个人的金币数量?因为就算是i+1给i x个金币也可以表示i给i+1 (-x)个金币
那么每个人都满足方程组:
A1+xn-x1 = M
A2+x1-x2 = M
A3+x2-x3 = M
...
An+xn-1-xn = M
而最后答案就是求min(x1+x2+...+xn)
x1 = A1+xn-M
x2 = A2+x1-M = A2+A1+xn-M-M=A1+A2+xn-2M
x3 = A3+x2-M = A3+A2+A1+xn-M-M-M=A1+A2+A3+xn-3M
...
xn = An+xn-1-M=A1+A2+...+An+xn-nM
设iM-(A1+A2+...+Ai)=Ci
那么x1+x2+...+xn =xn-C1+xn-C2+...+xn-Cn,因为无论如何传递的金币都是正数,因此可以加上绝对值