Задача
В Санкт-Петербурге телефонные номера имеют формат “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] |
Код программы
1 2 3 4 5 6 7 8 9 10 11 12 13 |
#include <iostream> using namespace std; int main() { int n, res = 0; cin >> n; if (n < 199) res = 199 - n; else res = 0; cout << res; return 0; } |
Решение задачи
Рассмотрим случай, когда номер абонентской группы Петра 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
Спасибо, исправила
Отлично. Молодец. Теперь займемся алгоритмом.
Вам нужно для заданного трёхзначного числа $n$ узнать сколько существует пар двухзначных чисел $i$ и $j$ в сумме равных ему. Верно?
И что Вы творите? Применяете брутфорс? Складываете все комбинации двухзначных чисел с надеждой, что получится искомое? Это очень не эффективный способ.
Вашу программу можно ускорить в 100 раз если подбирать только первое число $i$. Второе ведь будет равно разности $n-i$. Зачем его подбирать? Нужно только проверить, будет ли оно двухзначным, т.е. меньше 100.
Конечно. я и это решение не засчитал бы 🙂 Но хоть не так был бы шокирован 🙂
Задача не на циклы. Здесь должна получиться просто формула. Например, если $n>198,$ то счастливых номеров вообще нет. Подумайте. Задача совсем-совсем простая.
Зачтено