Пакеты с конфетами

тема: Теория чисел (НОД, НОК, остатки) · уровень: базовый

Условие

В школьный буфет привезли n конфет. Продавец раскладывает их по одинаковым пакетам, и в каждый пакет помещается ровно k конфет.

Если конфет не хватает на полный пакет, продавец всё равно делает ещё один пакет — просто он получится неполным (пустых пакетов не делают).

Сколько пакетов получится?

Формат ввода

В одной строке два целых числа n и k.

Формат вывода

Выведите одно целое число — сколько пакетов нужно.

Ограничения

Пример

Ввод:

10 3

Вывод:

4

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

Приём: Целочисленное деление с округлением вверх

Ключевое наблюдение: продавец делает пакеты по k конфет, но если после раскладки остаются конфеты (остаток), появляется ещё один неполный пакет. Значит, ответ — это n / k, округлённое вверх (ceiling).

Почему работает приём: обычное целочисленное деление n // k даёт только число полных пакетов. Если n не делится на k, остаток n % k означает, что нужны ещё пакеты, но ровно один — для всех оставшихся конфет.

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

Более короткая форма той же идеи: ans = (n + k - 1) // k.

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

Частая ошибка: выводить просто n // k и забывать про неполный пакет, когда n % k != 0. Ещё одна грабля — пытаться использовать вещественное деление и ceil, что может привести к проблемам с точностью; здесь всё делается целыми числами.

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

Есть 10 конфет. В один пакет помещается ровно 3 конфеты. Если после полных пакетов остаются конфеты, делаем ещё один неполный пакет.

Идея: Сначала посчитай, сколько полных пакетов по k конфет можно сделать. Потом проверь, остались ли конфеты. Если остаток есть — нужен ещё один пакет, если остатка нет — хватает только полных.

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

Куда дальше