Це моє перше питання, тому я сподіваюся, що це буде добре.
Фон:
Ви не можете думати про річки. Питання обертається навколо поняття цифрових річок. Цифрова річка являє собою послідовність чисел , де число наступне 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
для n
завершує введення, і цей тестовий випадок не повинен оброблятися.
Вихідні дані
Для кожного тестового випадку на вході спочатку виведіть номер тестового випадку (починаючи з 1), як показано у вибірку вибірки. Потім на окремому рядку виведіть рядок "вперше зустрічається річка х у у". Тут y - найменше значення, де річка n
вперше зустрічається з річкою x
(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
.