На сколько школьников будет разделено k яблок почти равномерно , если разница в количестве яблок между любыми двумя

  • 55
На сколько школьников будет разделено k яблок "почти равномерно", если разница в количестве яблок между любыми двумя школьниками будет не более 1? Программа принимает на вход натуральное число n и целое неотрицательное число k в отдельных строках. Она должна вывести количество школьников, которые получат меньше яблок, чем их товарищи.
Zvezdopad_V_Kosmose
39
Чтобы разделить k яблок "почти равномерно" между n школьниками с условием, что разница в количестве яблок между любыми двумя школьниками не превышает 1, мы должны найти максимальное количество школьников, которые получат меньше яблок, чем их товарищи.

Давайте представим ситуацию, где все школьники кроме одного получают одинаковое количество яблок. В этом случае, нам нужно найти максимальное количество школьников, которые получат на одно яблоко меньше, чем остальные.

Чтобы определить это, мы можем использовать деление с остатком. Делим k на n, чтобы узнать, сколько яблок каждый школьник будет получать со всей группы. Остаток от деления покажет нам, сколько дополнительных яблок нужно будет распределить между школьниками.

Если остаток больше 0, то это означает, что есть яблоки, которые нужно распределить между школьниками. Однако мы хотим, чтобы разница в количестве яблок не была больше 1. Поэтому, в этом случае, одно яблоко вы должны отдать каждому из школьников до тех пор, пока остаток не будет исчерпан.

Теперь мы знаем, сколько каждый школьник получит яблок из группы и сколько дополнительных яблок будет распределено.

Чтобы определить количество школьников, которые получат меньше яблок, чем их товарищи, мы можем взять половину от количества дополнительных яблок и добавить остаток от деления на два. Это позволит нам получить количество школьников, которые получат на одно яблоко меньше, чем остальные, и остальные будут получать больше на одно яблоко.

Давайте рассмотрим эту логику на примере. Предположим, у нас есть k = 10 яблок и n = 4 школьника.

Сначала мы делим 10 на 4, получаем частное 2 и остаток 2. Это означает, что первые 3 школьника получат по 2 яблока каждый, и у нас останется еще 2 яблока для распределения.

Затем мы берем половину от 2, что даёт нам 1, а затем добавляем остаток, который также равен 1. Получаем 2 школьника, которые получат меньше яблок, чем их товарищи, и 2 школьника, которые получат больше яблок.

Итак, ответ на эту задачу для случая n школьников и k яблок равен \(\left\lfloor \frac{k}{n} \right\rfloor + \frac{1}{2} \times (k \mod n) + \left\lfloor \frac{1}{2} \right\rfloor\), где \(\left\lfloor x \right\rfloor\) обозначает наибольшее целое число, не превышающее \(x\).

Давайте воспользуемся этой формулой, чтобы определить количество школьников, которые получат меньше яблок, чем их товарищи, для вводных данных, которые были предоставлены.