求解,这道程序题怎么做(只能用C语言或C++)

能答对的我加满分,200分!!
2025-04-26 06:14:34
推荐回答(3个)
回答1:

来我翻译一下:
一个GCZY政权要对一个村子里的财富进行均分(外国人对GCD还是仇视的哈),所有人把物质先换成金币,假定金币是可以平分的,然后围在一个圆桌,每个人可以给左边或右边的人一些钱,也可以都给或不给,最终目的是平分,现在要计算的是至少需要传递多少钱。编程实现,输入n个人,后面n行是每个人的钱,输出至少需要传递的钱数。

回答2:

http://blog.csdn.net/sjf0115/article/details/8831688

回答3:

#include
#include
#include
using namespace std;
const int maxn=1000000+10;
long long A[maxn],C[maxn],tot,M;
int main()
{
int n;
while(scanf("%d",&n)==1)
{
tot=0;
for(int i=1;i<=n;i++)
{
scanf("%lld",&A[i]);
tot+=A[i];
}
M=tot/n;
C[0]=0;
for(int i=1;i C[i]=C[i-1]+A[i]-M;
sort(C,C+n);
long long x1=C[n/2],ans=0;
for(int i=0;i ans+=abs(x1-C[i]);
printf("%lld\n",ans);
}
return 0;
}