To moje pierwsze pytanie, więc mam nadzieję, że pójdzie dobrze.
Tło:
To nie rzeki, o których możesz myśleć. Pytanie dotyczy koncepcji cyfrowych rzek. Cyfrowa rzeka to ciąg liczb, w którym liczba następująca n
jest n
powiększona o sumę jej cyfr.
Wyjaśnienie:
Po 12345 następuje 12360, ponieważ 1 + 2 + 3 + 4 + 5 = 15, a więc 12345 + 15 daje 12360. podobnie po 145 następuje 155. Jeśli pierwszą liczbą cyfrowej rzeki jest nazwa M
rzeki M
.
Na przykład: Rzeka 480 to początek sekwencji {480,492,507,519 ....}, a rzeka 483 to początek sekwencji {483,498,519, ....}. Normalne strumienie i rzeki mogą się spotkać, to samo dotyczy cyfrowych rzek. Dzieje się tak, gdy dwie rzeki cyfrowe mają te same wartości.
Przykład:
Rzeka 480 spotyka się z rzeką 483 w 519. Rzeka 480 spotyka się z rzeką 507 w 507 i nigdy nie spotyka się z rzeką 481. Każda cyfrowa rzeka ostatecznie spotka rzekę 1, rzekę 3 lub rzekę 9.
Napisz program, który może określić dla danej liczby całkowitej n
wartość, w której rzeka n
najpierw spotyka jedną z tych trzech rzek.
Wejście
Dane wejściowe mogą zawierać wiele przypadków testowych. Każdy przypadek testowy zajmuje osobną linię i zawiera liczbę całkowitą n
( 1 <= n <= 16384
). Przypadek testowy o wartości 0
for n
kończy dane wejściowe i nie można go przetwarzać.
Wynik
Dla każdego przypadku testowego na wejściu pierwsze wyjście numer przypadku testowego (zaczynając od 1), jak pokazano na wyjściu próbki. Następnie na osobnym wyjściu linii wiersz „najpierw spotyka rzekę x w punkcie y”. Tutaj y jest najniższą wartością, w której rzeka n
najpierw styka się z rzeką x
(x = 1 lub 3 lub 9). Jeśli rzeka n
spotyka rzekę x
na y
dłużej niż jedną wartość x
, wyjście najniższej wartości. Wydrukuj pustą linię między dwoma kolejnymi przypadkami testowymi.
Przypadek testowy
Wejście:
86
12345
0
Wynik:
Case #1
first meets river 1 at 101
Case #2
first meets river 3 at 12423
Punktacja:
Najszybszy algorytm wygrywa. W przypadku remisu. Wygra ten z krótszym kodem.
Dzięki mbomb007 za wskazanie mojego błędu.
ps: Chcę mieć najszybsze rozwiązanie, a nie najmniejsze. Mam też moje wolne rozwiązanie. Aby zobaczyć to tutaj .
Uwaga:
Użyję tego do testowania kodu. I sprawdzanie wydajności.
M
my nazwiemy ją rzekąM
” nie ma sensu z dwóch powodów: po pierwsze, jeśli rzeka jest nieskończoną sekwencją liczb, to nie ma ostatniej cyfry; a po drugie, w następnym akapicie rzekaM
oznacza rzekę rozpoczynającą się od liczby M
.