e-olymp 1610. Зайцы в клетках

Задача взята с сайта e-olymp

Задача

Всем известен, так называемый, принцип Дирихле, который формулируется следующим образом:

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

В данной задаче мы рассмотрим более общий случай этого классического математического факта. Пусть имеется [latex]n[/latex] клеток и [latex]m[/latex] зайцев, которых рассадили по этим клеткам. Вам требуется расcчитать максимальное количество зайцев, которое гарантированно окажется в одной клетке.

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

В одной строке заданы два натуральных числа [latex]n[/latex] и [latex]m[/latex] (1[latex]n[/latex], [latex]m[/latex] ≤ [latex]\ 10^{9}[/latex]).

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

Максимальное количество зайцев, которое гарантированно окажется в одной клетке.

Тесты

# Входные данные Выходные данные
1 3 4 2
2 15 144 10
3 1 7 7
4 100 123456 1235
5 222 222 1

Код

Решение

Распределяя всех [latex]m[/latex] зайцев равномерно по клеткам [latex]n[/latex] получается что минимальное количество зайцев в клетке [latex]\ m / n [/latex] . Максимальное в свою очередь будет [latex] m / n + 1 [/latex] (если же  [latex] m [/latex] не кратно [latex] n [/latex] ) .

Ссылки

ideone
e-olymp

e-olymp 542. Поставка содовой воды

Задача

Тим ужасно любит содовую воду, иногда он ею никак не может напиться. Еще более досадным является тот факт, что у него постоянно нет денег. Поэтому единственным легальным способом их получения является продажа пустых бутылок из-под соды. Иногда в добавок к его лично выпитым бутылкам добавляются те, которые Тим иногда находит на улице. Однажды Тима настолько замучила жажда, что он решил пить до тех пор пока мог себе это позволить.

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

Три целых неотрицательных числа [latex]e[/latex], [latex]f[/latex], [latex]c[/latex], где [latex]e[/latex] ([latex]e < 1000[/latex]) — количество пустых бутылок, имеющихся у Тима в начале дня, [latex]f[/latex] ([latex]f < 1000[/latex]) — количество пустых бутылок, найденных в течение дня, и [latex]c[/latex] ([latex]1 < c < 2000[/latex]) — количество пустых бутылок, необходимых для покупки новой бутылки.

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

Сколько бутылок содовой воды смог выпить Тим, когда его замучила жажда?

Тесты

Входные данные Выходные данные
[latex]9[/latex] [latex]0[/latex] [latex]3[/latex] [latex]4[/latex]
[latex]5[/latex] [latex]5[/latex] [latex]2[/latex] [latex]9[/latex]
[latex]0[/latex] [latex]8[/latex] [latex]4[/latex] [latex]2[/latex]
[latex]22[/latex] [latex]0[/latex] [latex]4[/latex] [latex]7[/latex]

Код программы

Решение задачи

Можно считать, что изначально у Тима имеется [latex]e+f[/latex] пустых бутылок. Допустим, у него есть хотя бы [latex]c[/latex] бутылок, необходимых для покупки новой, Тим идет и меняет их на одну полную бутылку. Затем выпивает её, после чего общее количество пустых у него уменьшается на [latex]c-1[/latex]. То есть за [latex]e+f[/latex] пустых бутылок он сможет выпить [latex]\frac{e+f}{c-1}[/latex] бутылок содовой воды. Нам также следует добавить к [latex]c-1[/latex] маленькую константу [latex]a = 0.0001[/latex] для корректировки значения, чтобы в случае когда количество бутылок кратно [latex]c-1[/latex], Тиму нельзя было взять новую бутылку с недостающим количеством пустых бутылок для этого, следовательно, он должен выпить на одну бутылку меньше. В результате выводим целое число бутылок содовой воды, которые Тим смог выпить, когда его замучила жажда.

Ссылки

Условие задачи на e-olymp
Код решения на ideone

e-olymp 7366. Сколько до Нового Года?

Задача

У Деда Мороза есть часы, которые в секундах показывают сколько осталось до каждого Нового Года. Так как Дед Мороз уже человек в возрасте, то некоторые математические операции он быстро выполнять не в состоянии. Помогите Деду Морозу определить сколько полных дней, часов, минут и секунд осталось до следующего Нового Года, если известно сколько осталось секунд, т.е. разложите время в секундах на полное количество дней, часов, минут и секунд.

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

В единственной строке целое число [latex]N \left(0 < N ≤ 31500000\right)[/latex] – количество секунд, которые остались до наступления Нового Года.

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

В одной строке через пропуск четыре целых числа – количество полных дней, часов, минут и секунд. После последнего числа пробел отсутствует.

Тесты

# Входные данные Выходные данные
1 5217656 60 9 20 56
2 7999 0 2 13 19
3 30123456 348 15 37 36
4 7841186 90 18 6 26
5 899650 10 9 54 10

Код

Решение задачи

Вспомним, что:
1 сутки = 86400с;
1 час = 3600с;
1 минута = 60с.

Сперва рассчитаем кол-во полных суток в данном кол-ве секунд [latex]n[/latex]: [latex]\frac{n}{86400}[/latex].
Затем уберём кол-во секунд в полных сутках из исходного числа, а из оставшихся вычислим кол-во полных часов: [latex]\frac{n\bmod86400}{3600}[/latex].
Далее снова уберём кол-во секунд в полных часах и найдём кол-во полных минут: [latex]\frac{\left(n\bmod8640\right)\bmod3600}{60}[/latex].
Остаток от деления общего кол-ва секунд на 60 и будет искомым кол-вом секунд: [latex]n\bmod60[/latex].

Ссылки

Условие задачи на e-olymp
Код решения на ideone