java账户余额添加怎么处理_Java-银行账户资金的平分问题?

说下我的思路:

假设最后各帐户金额为 X

那么存在以下等式:

帐户资金总和 - 23 * X = 所有 ((Xi - X)* 6% + (Xi - X) * 94% * 5% ) 和

其中 Xi 为帐户资金大于 X的帐户

令 G = 所有(Xi - X)* 6% + (Xi - X) * 94% * 5% ) 和

avg = ( 帐户资金总和 - G ) / 23

当G为0时, avg 为平均值,应该是最大

那么取X为最初平均值时,G应该最小,从而根据G算出的avg也比真正X要

大,这样一直逼近,直到 G - (sum - n* X) < 0.000001

#include

#include

#include

#define N 23

using namespace std;

float getValue(float data[],float x)

{

float result =0;

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

{

if ( data[i] > x)

{

result += (data[i] - x) * 0.06 + (data[i] - x) *0.94 * 0.05;

}

}

return result;

}

int main()

{

float data[N];

float result;

float avg =0,sum = 0;

float charge = 0;

float flag = 0;

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

{

cout<

cin>>data[i];

sum += data[i];

}

avg = sum / N;

do

{

result = getValue(data,avg);

charge = sum - N * avg;

avg = ( sum - result) / N;

flag = abs((int)(result - charge));

}while(flag > 0.000001);

cout<

cout<

return 0;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值