Пакеты с конфетами
Условие
В школьный буфет привезли n конфет. Продавец раскладывает их по одинаковым пакетам, и в каждый пакет помещается ровно k конфет.
Если конфет не хватает на полный пакет, продавец всё равно делает ещё один пакет — просто он получится неполным (пустых пакетов не делают).
Сколько пакетов получится?
Формат ввода
В одной строке два целых числа n и k.
Формат вывода
Выведите одно целое число — сколько пакетов нужно.
Ограничения
- 1 ≤ n ≤ 1 000 000 000
- 1 ≤ k ≤ 1 000 000 000
Пример
Ввод:
10 3
Вывод:
4Как решать — идея подхода
Приём: Целочисленное деление с округлением вверх
Ключевое наблюдение: продавец делает пакеты по k конфет, но если после раскладки остаются конфеты (остаток), появляется ещё один неполный пакет. Значит, ответ — это n / k, округлённое вверх (ceiling).
Почему работает приём: обычное целочисленное деление n // k даёт только число полных пакетов. Если n не делится на k, остаток n % k означает, что нужны ещё пакеты, но ровно один — для всех оставшихся конфет.
План решения:
- Прочитать
nиk. - Посчитать количество полных пакетов:
q = n // k. - Проверить остаток:
r = n % k. - Если
r > 0, ответq + 1, иначеq. - Вывести ответ.
Более короткая форма той же идеи: ans = (n + k - 1) // k.
Сложность: O(1) по времени и O(1) по памяти.
Частая ошибка: выводить просто n // k и забывать про неполный пакет, когда n % k != 0. Ещё одна грабля — пытаться использовать вещественное деление и ceil, что может привести к проблемам с точностью; здесь всё делается целыми числами.
Разберись руками
Есть 10 конфет. В один пакет помещается ровно 3 конфеты. Если после полных пакетов остаются конфеты, делаем ещё один неполный пакет.
- Отметь на ленте от 1 до 10 числа, на которых заканчивается очередной полный пакет по 3 конфеты (то есть кратные 3).
- Сколько ПОЛНЫХ пакетов по 3 конфеты можно сделать из 10 конфет?
- Сколько конфет останется после этих полных пакетов?
- Итак, сколько пакетов получится всего (полные + если остались конфеты, ещё один неполный)?
Идея: Сначала посчитай, сколько полных пакетов по k конфет можно сделать. Потом проверь, остались ли конфеты. Если остаток есть — нужен ещё один пакет, если остатка нет — хватает только полных.
Решить задачу с автопроверкой на Python →
Куда дальше
- С нуля до олимпиады: маршрут — сколько занимает язык, какие приёмы нужны и к какому этапу это ведёт
- Перечневые олимпиады по информатике — олимпиады перечня Минобрнауки, их уровни и что нужно к диплому
- БВИ по олимпиадам: в какие вузы берут — правила приёма вузов, разобранные построчно, со ссылкой на приказ у каждой строки