Sachen zu wissen:
Erstens Glückszahlen.
Glückszahlen werden wie folgt generiert:
Nehmen Sie alle natürlichen Zahlen:
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20...
Entfernen Sie dann jede zweite Zahl.
1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31, 33, 35, 37, 39...
Jetzt 3
ist sicher.
Entfernen Sie jede dritte Nummer:
1, 3, 7, 9, 13, 15, 19, 21, 25, 27, 31, 33, 37, 39, 43, 45, 49, 51, 55, 59...
Jetzt 7
ist sicher.
Entfernen Sie jede 7. Nummer.
Fahren Sie fort und entfernen Sie jede n
dritte Nummer. Dabei n
handelt es sich um die erste sichere Nummer nach einer Eliminierung.
Die endgültige Liste der sicheren Zahlen sind die Glückszahlen.
Die Unglückszahlen setzen sich aus separaten Zahlenlisten zusammen, die es sind [U1, U2, U3... Un]
.
U1
ist der erste Satz von Zahlen, der von den glücklichen "Kandidaten" entfernt wurde, also sind sie:
2, 4, 6, 8, 10, 12, 14, 16, 18, 20...
U2
ist der zweite Satz von Zahlen entfernt:
5, 11, 17, 23, 29, 35, 41, 47, 53, 59...
Und so weiter und so fort ( U3
ist die dritte Liste, U4
ist die vierte usw.)
Herausforderung:
Ihre Aufgabe ist es, bei zwei Eingaben m
und n
die m
th Nummer in der Liste zu generieren Un
.
Beispiel Ein- und Ausgänge:
(5, 2) -> 29
(10, 1) -> 20
Technische Daten:
- Ihr Programm muss für
m
bis zu1e6
undn
bis zu100
.- Sie sind garantiert, dass beide
m
undn
positive ganze Zahlen sind. - Wenn Sie neugierig sind,
U(1e6, 100)
=5,333,213,163
. (Danke @pacholik!)
- Sie sind garantiert, dass beide
- Ihr Programm muss dies innerhalb eines Tages auf einem vernünftigen modernen Computer berechnen.
Das ist Code-Golf , also gewinnt der kürzeste Code in Bytes!
PS: Es wäre schön, wenn jemand eine allgemeine Formel zur Erzeugung dieser Formeln ausdenken würde. Wenn Sie eine Formel haben, geben Sie diese bitte in Ihre Antwort ein!
(1e6,1e6)
?
n=1
Fall nicht funktioniert ? Da dies besonders ist - für alle anderen Fälle ist der 0-basierte Index der nächsten Glückszahl n-1
.