Делим яблоки

тема: Основы · уровень: базовый

Условие

Делим яблоки

Есть \(n\) яблок и \(k\) детей. Раздаём яблоки поровну. Сколько яблок достанется каждому и сколько останется?

Входные данные

Два целых числа \(n\) и \(k\) (\(0 \le n \le 10^6\), \(1 \le k \le 1000\)).

Выходные данные

Два числа: сколько яблок каждому и сколько в остатке.

Пример

Вход:

10 3

Выход:

3 1

Как решать — идея подхода

Приём: Целочисленное деление и остаток

Ключевое наблюдение: раздать «поровну» значит разделить n на k так, чтобы каждый получил одинаковое целое число яблок, а часть могла остаться. Это ровно то, что делает целочисленное деление: n // k даёт сколько яблок каждому, а остаток n % k — сколько останется.

Почему приём работает: по определению остатка при делении существует единственная пара чисел q и r, что n = q*k + r и 0 <= r < k. Здесь q — яблок на ребёнка, r — остаток.

План решения:

Мини-сниппет формул:

Сложность: O(1) по времени и O(1) по памяти.

Частая ошибка: использовать обычное деление / (получится дробь), а потом округлять. Нужно именно // и % — они сразу дают правильные целые ответы.

Разберись руками

У нас 10 яблок и 3 ребёнка. Раздаём по кругу так, чтобы всем было поровну. Нужно узнать: сколько яблок у каждого и сколько останется неразданных.

Идея: Сначала выясни, сколько яблок можно раздать поровну всем детям (без остатка). По этому числу понять, сколько яблок у каждого, а потом вычесть из общего количества и получить остаток.

Решить задачу с автопроверкой на Python →

Куда дальше