Rzeczy, które warto wiedzieć:
Po pierwsze, szczęśliwe liczby.
Szczęśliwe liczby są generowane w następujący sposób:
Weź wszystkie liczby naturalne:
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20...
Następnie usuń co drugi numer.
1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31, 33, 35, 37, 39...
Teraz 3
jest bezpieczny.
Usuń co trzeci numer:
1, 3, 7, 9, 13, 15, 19, 21, 25, 27, 31, 33, 37, 39, 43, 45, 49, 51, 55, 59...
Teraz 7
jest bezpieczny.
Usuń co 7 liczbę.
Kontynuuj i usuwaj każdy n
numer, gdzie n
jest pierwszy bezpieczny numer po eliminacji.
Ostateczna lista bezpiecznych liczb to szczęśliwe liczby.
Pechowe liczby składają się z osobnych list liczb, które są [U1, U2, U3... Un]
.
U1
to pierwszy zestaw liczb usunięty ze szczęśliwych „kandydatów”, więc są to:
2, 4, 6, 8, 10, 12, 14, 16, 18, 20...
U2
jest usunięty drugi zestaw liczb:
5, 11, 17, 23, 29, 35, 41, 47, 53, 59...
I tak dalej itd. ( U3
Jest trzecią listą, U4
czwartą itd.)
Wyzwanie:
Twoim zadaniem jest, po otrzymaniu dwóch danych wejściowych m
i n
wygenerowanie m
th liczby na liście Un
.
Przykładowe dane wejściowe i wyjściowe:
(5, 2) -> 29
(10, 1) -> 20
Okular:
- Twój program musi działać
m
do1e6
, an
nawet do100
.- Masz gwarancję, że zarówno
m
in
są dodatnimi liczbami całkowitymi. - Jeśli jesteś ciekawy,
U(1e6, 100)
=5,333,213,163
. (Dziękuję @pacholik!)
- Masz gwarancję, że zarówno
- Twój program musi to obliczyć w ciągu 1 dnia na rozsądnym nowoczesnym komputerze.
To jest golf golfowy , więc wygrywa najkrótszy kod w bajtach!
PS: Byłoby miło, gdyby ktoś wymyślił ogólną formułę ich generowania. Jeśli masz formułę, podaj ją w swojej odpowiedzi!
(1e6,1e6)
?
n=1
przypadku? Ponieważ jest to wyjątkowe - dla wszystkich innych przypadków, indeks następnej szczęśliwej liczby oparty na 0 n-1
.