Это мой первый вопрос, поэтому я надеюсь, что он пройдет хорошо.
Фон:
Вы можете думать не о реках. Вопрос вращается вокруг концепции цифровых рек. Цифровая река представляет собой последовательность чисел , где число следующее n
в n
плюс сумма его цифр.
Объяснение:
За 12345 следует 12360, так как 1 + 2 + 3 + 4 + 5 = 15 и, следовательно, 12345 + 15 дает 12360. Точно так же за 145 следует 155. Если первое число цифровой реки - это M
мы будем называть ее рекой M
.
Например, река 480 - это начало последовательности {480,492,507,519 ....}, а река 483 - начало последовательности {483,498,519, ....}. Нормальные ручьи и реки могут встречаться, и то же самое верно для цифровых рек. Это происходит, когда две цифровые реки имеют одни и те же значения.
Пример:
Река 480 встречается с рекой 483 в точке 519. Река 480 встречается с рекой 507 в точке 507 и никогда не встречается с рекой 481. Каждая цифровая река в конечном итоге встретится с рекой 1, рекой 3 или рекой 9.
Напишите программу, которая может определить для данного целого числа n
значение, в котором река n
впервые встречается с одной из этих трех рек.
вход
Входные данные могут содержать несколько тестовых случаев. Каждый тестовый пример занимает отдельную строку и содержит целое число n
( 1 <= n <= 16384
). Тестовый случай со значением 0
for n
завершает ввод, и этот тестовый случай не должен обрабатываться.
Вывод
Для каждого теста на входе сначала выведите номер теста (начиная с 1), как показано в примере вывода. Затем в отдельной строке выведите строку «сначала встречается река x в точке y». Здесь у - самое низкое значение, при котором река n
впервые встречается с рекой x
(х = 1, 3 или 9). Если река n
встречает реку x
в y
течение более чем одного значения x
, выходное самое низкое значение. Выведите пустую строку между двумя последовательными тестами.
Прецедент
Входные данные:
86
12345
0
Вывод:
Case #1
first meets river 1 at 101
Case #2
first meets river 3 at 12423
Подсчет очков:
Самый быстрый алгоритм выигрывает. В случае галстука. Победит тот, у кого более короткий код.
Спасибо mbomb007 за указание на мою ошибку.
PS: Я хочу иметь самое быстрое решение, а не самое маленькое. У меня также есть мое решение, которое медленно. Для этого посмотрите здесь .
Замечания:
Я буду использовать это для тестирования кода. И проверка работоспособности.
M
мы будем называть ее рекойM
», то это не имеет смысла по двум причинам: во-первых, если река представляет собой бесконечную последовательность чисел, то у нее нет последней цифры; и во-вторых, в следующем абзаце рекаM
означает реку, начинающуюся с номера M
.