@OoopsNoName

Как уменьшать числовую последовательность, чтобы каждое последующее число было меньше предыдущего?

Приветствую.
Школьную программу уже успел забыть, но очень нужно решить такой вопрос. Не знаю как её нагуглить даже. Опишу пример -
Есть условно 100 рабочих, у каждого рабочего есть свой номер который идёт по порядку [1-100]
Есть условная премия, пускай будет 100 рублей.
Нужно чтобы сумма в 100 рублей разбилась на 100 рабочих, но первый рабочий получил условно 10 рублей, второй рабочий 9 рублей, 3 рабочий 8 рублей и тд. Т.е. от большего к меньшему. Не нужно давать какой-то фиксированный % первому рабочему, они должны равномерно распределиться между всем сотрудниками, но от большего к меньшему.
Т.е. при сложении всех премий - должно получиться в идеале 100, либо число максимально приближенное к нему, но не превышающее 100
Можно ли ка кто описать формулой такой расчет или алгоритмом
  • Вопрос задан
  • 246 просмотров
Решения вопроса 2
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Для арифметической прогрессии с шагом X рублей и N рабочих:
Первый получает Y, второй Y - X, ..., N-й получает Y - X * (N - 1)
Сумма прогрессии: S = (Y + Y - X * (N - 1)) * N / 2
Отсюда, Y = (2S/N + X(N - 1))/2
При 100 рублях, 100 рабочих и шаге 1 копейку получим
Y = (2 * 100р / 100 + 0.01р * 99)/2 = 1.495 рубля
Первый получает 1.495, второй 1.485, ..., сотый 0.505 рубля
Ответ написан
@CBET_TbMbI
нужно максимально равномерно распределить эти 100 рублей, в том случае как Вы предлагаете, получается что 99 человек получит меньше рубля, а 1 человек получит больше 49 руб.

С этим доп условием считай так (на примере нечётного числа):
1. Среднему номеру даёшь среднее количество денег (обозначу С). В данном случае С=1 руб (100 руб / 100 чел).
2. Назначаешь сколь угодно мелкий шаг (Ш) и соседям в ряду даешь С+Ш и С-Ш. Соседям соседей С+2Ш и С-2Ш. И т.д.

Если число людей чётно, то на первом этапе назначай премию двум средним в размере С+0,5Ш и С-0,5Ш и далее соседям С+1,5Ш и С-1,5Ш.

Если математика нужна дискретная, то округляй С вниз, и, играя с величиной Ш решай, что важнее, минимальная разница в премиях у соседей или минимальный остаток в рублях и бригадира.
Если после раздачи деньги остались, то остатком или принебреч, или первому (опять же, смотря что важнее).
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы