一尘不染

通过减少数量将x分成y份

algorithm

如果我有$ 1000(可变),我想将这笔钱分配给20个(可变)人,而不是将其平均分配给每个人,我想给第一人和第二人更多的钱,等等

因此,第20个人的人数最少,而第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);

阅读 415

收藏
2020-07-28

共1个答案

一尘不染

公式是正确的,需要稍加触摸。

  1. 不要将float转换为int,数据会丢失!
  2. 当从第一人称进入n-1时进入
        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);
2020-07-28