【发布时间】:2019-10-13 14:23:46
【问题描述】:
如果我有 1000 美元(可变),我想把这笔钱分成 20 个(可变)人,但不是平均分配给每个人,而是想给第一个人更多,然后第二人称等
所以第 20 个人得到的最少,第 5 个人得到第 5 的最多。
我将如何实现这一目标?
谢谢
编辑:
公式:
int people = 20;
float prize = 1000;
float k = (2 * prize) / ((people) * (people - 1));
float sum = 0;
for (int i = 1; i < people; ++i)
{
var personsPrize = i * k;
sum += personsPrize;
Console.WriteLine(personsPrize);
}
Console.WriteLine("sum = " + sum);
【问题讨论】:
-
看起来像一个操作顺序问题,你需要在这个表达式周围加上额外的括号:
int k = (2 * (int) prize) / (people * (people - 1));即使有了这个修复,它最终还是分发了1210,它比你的prize大。 -
@EvanTrimboli 是的,确实如此,所以某处还有其他问题,但我不确定它可能是什么。
-
那么你为什么要改变问题来更正公式呢? “它打印的是非常高的数字,而不是总共 1000 个的 10 个数字。”现在真的不合算了。
-
好吧,它仍然不包括奖金价值。