UniLecs #Task. Lucky phone number

Albert Davletov
UniLecs
Published in
2 min readAug 2, 2020

Задача: в Москве телефонные номера имеют формат XXX-XX-XX, где первые 3 цифры это индекс телефонной станции.

Вы хотите приобрести “счастливый” телефонный номер. Номер считается счастливым, если значение арифмитического выражения, которое он собой представляет, равно нулю. Например, номер 100–40–60 является счастливым, т.к. 100–40–60 = 0.

Вы уже знаете индекс местной телефонной станции, где вы собираетесь приобрести номер. Осталось только подсчитать кол-во счастливых номеров, которые вам доступны.

Примечание: Известно, что каждая телефонная станция имеет в точности 10000 уникальных телефонных номеров.

Входные данные: index — индекс местной телефонной станции (100 <= index <= 999).

Вывод: кол-во всевозможных счастливых номеров для заданного индекса.

Пример: Index = 196;

Output: 3

Разбор

Разберем минимальный индекс ТС: 100. Для этого случая кол-во счастливых номеров будет 99, т.е 99 + 1, 98 + 2, … 2 + 98, 1 + 99.

Для индекса 101: кол-во счастливых номеров будет 98, т.е. 99 + 2, 98 + 3, … 3 + 98, 2 + 99.

Можно заметить, что кол-во счастливых номеров уменьшилось на 1.
Также очевидно, что для индексов больше 198 счастливых номеров не будет, т.к. 198 это предельная сумма получаемая из 2х двузначных слагаемых: 99 + 99.

Получаем формулу для индексов i от 100 до 198: 199 — i.

Реализация

C#

https://gist.github.com/unilecs/2f76a6828337ec770b8e21b802ea3468

Play-test

https://dotnetfiddle.net/GyiLYB

--

--