Cyfrowy pierwiastek (również powtarzana suma cyfrowa) dodatniej liczby całkowitej jest wartością (pojedynczej cyfry) uzyskaną w wyniku iteracyjnego procesu sumowania cyfr, na każdej iteracji z wykorzystaniem wyniku z poprzedniej iteracji do obliczenia sumy cyfrowej. Proces ten trwa do momentu uzyskania liczby jednocyfrowej.
Na przykład cyfrowy pierwiastek z 65536 wynosi 7 , ponieważ 6 + 5 + 5 + 3 + 6 = 25 i 2 + 5 = 7 .
Sortowanie wszystkich cyfrowych pierwiastków nie ma większego sensu, ponieważ zaczynałoby się od nieskończenie wielu 1 s.
Zamiast tego utworzymy listy wszystkich jednocyfrowych liczb całkowitych wraz z cyfrowymi pierwiastkami, następnie wszystkie dwucyfrowe liczby wraz z cyfrowymi pierwiastkami, a następnie potrójne, poczwórne i tak dalej.
Teraz dla każdej z tych list posortujemy ją tak, aby najpierw pojawiły się wszystkie liczby całkowite z cyfrowymi pierwiastkami 1 , a następnie wszystkie liczby całkowite z cyfrowymi pierwiastkami 2 i tak dalej. Sortowanie będzie stabilne, więc lista liczb całkowitych z pewnymi cyfrowymi pierwiastkami powinna być posortowana rosnąco po sortowaniu.
Na koniec połączymy te listy w jedną sekwencję. Ta sekwencja rozpocznie się od wszystkich liczb jednocyfrowych, następnie wszystkich liczb dwucyfrowych (posortowanych według cyfrowego pierwiastka), a następnie wszystkich liczb potrójnych i tak dalej.
Wyzwanie:
Weź jako liczbę całkowitą dodatnią n i wyślij n -tą liczbę w sekwencji opisanej powyżej. Możesz wybrać, czy lista ma wartość 0 - indeks 1 - indeks.
Sekwencja wygląda następująco:
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 19, 28, 37, 46, 55, 64, 73, 82, 91, 11, 20, 29 ...
72, 81, 90, 99, 100, 109, 118, ...
981, 990, 999, 1000, 1009, 1018, 1027, ...
Przypadki testowe:
Przypadki testowe są indeksowane 1.
n f(n)
9 9
10 10
11 19
40 13
41 22
42 31
43 40
44 49
45 58
600 105
601 114
602 123
603 132
604 141
605 150
4050 1453
4051 1462
4052 1471
4053 1480
4054 1489
4055 1498
Łatwiej kopiować:
n = 9, 10, 11, 40, 41, 42, 43, 44, 45, 600, 601, 602, 603, 604, 605, 4050, 4051, 4052, 4053, 4054, 4055,
f(n) = 9, 10, 19, 13, 22, 31, 40, 49, 58, 105, 114, 123, 132, 141, 150, 1453, 1462, 1471, 1480, 1489, 1498
Wyjaśnienia:
- Nie możesz wyprowadzać wszystkich n pierwszych elementów. Wyprowadzisz tylko n -ty.
- Kod musi teoretycznie działać dla wszystkich liczb całkowitych do 10 ^ 9 , ale jest OK, jeśli przekroczy limit czasu dla TIO (lub innych interpreterów z ograniczeniami czasowymi) dla danych wejściowych większych niż 999 .
- Wyjaśnienia są zachęcane.
To gra w golfa , więc wygrywa najkrótszy kod w każdym języku! Nie zniechęcaj się innymi rozwiązaniami w języku, w którym chcesz grać w golfa, nawet jeśli są one krótsze niż możesz sobie poradzić!