e-olymp 2370. Автоматизированная Телефонная Станция

Задача

В Санкт-Петербурге телефонные номера имеют формат “XXX — XX — XX” , где первые три цифры представляют собой индекс Автоматизированной Телефонной Станции (АТС). Каждая АТС имеет в точности $10000$ уникальных телефонных номеров. Петр только что приобрел новую квартиру и хочет установить телефонную линию. По его мнению телефонный номер является счастливым, если значение арифметического выражения, которое он собой представляет, равно нулю. Например, телефонный номер $102—40—62$ является счастливым $\left ( 102 — 40 — 62 = 0\right )$, а номер $157—10—47$ таковым не является $\left ( 157 — 10 — 47 \neq 0\right )$.
Петр знает индекс АТС, которая обслуживает его дом. Он хочет подсчитать количество счастливых номеров, которое она может иметь.

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

Единственное целое число $n$ — индекс АТС Петра $\left ( 100 \leq n \leq 999 \right )$.

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

Одно число — количество счастливых телефонных номеров, которые имеются у АТС Петра.

Тесты

Входные данные Выходные данные
$196$ 3
$239$ $0$
$101$ $98$

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

Решение

Рассмотрим случай, когда номер абонентской группы Петра $100,$ тогда счастливых номеров будет $ 99 \left ( 99+1, 98+2, \dots \right ).$ Далее рассмотрим случай, когда индекс $101,$ теперь количество счастливых номеров — $98 \left ( 99+2, 98+3, \dots \right ).$ В этом случае, если первые $2$ цифры после индекса и последние $2$ цифры номера будут равны $01,$ то этот номер уже не будет являться счастливым номером. Теперь на замену счастливому номеру $100 — 50 — 50$ идут $2$ счастливых номера: $101 — 50 — 51$ и $101 — 51 — 50.$ Суммарно количество счастливых номеров уменьшилось на $1.$ Пользуясь данной логикой, в каждой последующей абонентской группе будет на $1$ счастливый номер меньше. Для $n < 198$ счастливых номеров не будет. Следовательно, количество счастливых телефонных номеров, которые имеются у АТС Петра мы можем вычислить по формуле $199 — n$.

Ссылки

Ссылка на e-olymp

Ссылка на ideone

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

Задача

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

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

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

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

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

Тесты

Входные данные Выходные данные
[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]

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

Решение

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

Ссылки

Ссылка на e-olymp

Ссылка на ideone