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

Задача

В Санкт-Петербурге телефонные номера имеют формат “XXX — XX — XX” , где первые три цифры представляют собой индекс Автоматизированной Телефонной Станции (АТС). Каждая АТС имеет в точности [latex]10000[/latex] уникальных телефонных номеров.

Петр только что приобрел новую квартиру и хочет установить телефонную линию. По его мнению телефонный номер является счастливым, если значение арифметического выражения, которое он собой представляет, равно нулю. Например, телефонный номер 102—40—62 является счастливым [latex]\left(102 — 40 — 62 = 0\right)[/latex], а номер 157—10—47 таковым не является [latex]\left( 157 — 10 — 47\neq 0\right)[/latex].

Петр знает индекс АТС, которая обслуживает его дом. Он хочет подсчитать количество счастливых номеров, которое она может иметь.

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

Единственное целое число [latex]n[/latex] — индекс АТС Петра [latex](100 ≤ n ≤ 999)[/latex].

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

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

Тесты

Входные данные Выходные данные
[latex]196[/latex] [latex]3[/latex]
[latex]239[/latex] [latex]0[/latex]
[latex]101[/latex]

[latex]98[/latex]

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

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

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

Ссылки

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

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

    • Сделайте правильные отступы
    • Определитесь будете ли Вы ставить фигурные скобки после операторов цикла и условных если там только один оператор. Оба варианта допустимы, но Вы то ставите, то нет и это не очень хорошо читается.
    • Вы номера телефонов (XXX-XX-XX) зачем-то набираете в latex. В результате неясно, где дефис, а где вычитание. Давайте номера телефонов кодировать так 157-10-47, а вычисления в latex [latex]\left( 157 — 10 — 47 = 100 \neq 0\right).[/latex] Кстати, посмотрите (правая кнопка мыши на формуле) как это кодируют.
  1. Отлично. Молодец. Теперь займемся алгоритмом.
    Вам нужно для заданного трёхзначного числа $n$ узнать сколько существует пар двухзначных чисел $i$ и $j$ в сумме равных ему. Верно?
    И что Вы творите? Применяете брутфорс? Складываете все комбинации двухзначных чисел с надеждой, что получится искомое? Это очень не эффективный способ.

    Вашу программу можно ускорить в 100 раз если подбирать только первое число $i$. Второе ведь будет равно разности $n-i$. Зачем его подбирать? Нужно только проверить, будет ли оно двухзначным, т.е. меньше 100.

    Конечно. я и это решение не засчитал бы 🙂 Но хоть не так был бы шокирован 🙂

    Задача не на циклы. Здесь должна получиться просто формула. Например, если $n>198,$ то счастливых номеров вообще нет. Подумайте. Задача совсем-совсем простая.

Добавить комментарий