Jede Zahl kann mit einer unendlich langen Restsequenz dargestellt werden. Zum Beispiel, wenn wir die Zahl 7, nehmen und ausführen 7mod2
, dann 7mod3
, dann 7mod4
, und so weiter, wir bekommen 1,1,3,2,1,0,7,7,7,7,....
.
Wir brauchen jedoch die kürzestmögliche verbleibende Teilsequenz, die noch verwendet werden kann, um sie von allen niedrigeren Zahlen zu unterscheiden. Das erneute Verwenden von 7 [1,1,3]
ist die kürzeste Untersequenz, da nicht alle vorherigen Untersequenzen mit Folgendem beginnen [1,1,3]
:
0: 0,0,0,0...
1: 1,1,1,1...
2: 0,2,2,2...
3: 1,0,3,3...
4: 0,1,0,4...
5: 1,2,1,0...
6: 0,0,2,1...
Beachten Sie, dass [1,1]
die Darstellung von 7 nicht funktioniert, da sie auch zur Darstellung [1]
von 1 verwendet werden kann. Sie sollten jedoch mit einer Eingabe von 1 ausgeben .
Input-Output
Ihre Eingabe ist eine nicht negative Ganzzahl. Sie müssen eine Sequenz oder Liste der Restsequenz mit minimaler Länge wie oben definiert ausgeben.
Testfälle:
0: 0
1: 1
2: 0,2
3: 1,0
4: 0,1
5: 1,2
6: 0,0,2
7: 1,1,3
8: 0,2,0
9: 1,0,1
10: 0,1,2
11: 1,2,3
12: 0,0,0,2
30: 0,0,2,0
42: 0,0,2,2
59: 1,2,3,4
60: 0,0,0,0,0,4
257: 1,2,1,2,5,5
566: 0,2,2,1,2,6,6
1000: 0,1,0,0,4,6,0,1
9998: 0,2,2,3,2,2,6,8,8,10
9999: 1,0,3,4,3,3,7,0,9,0
Hier sind die ersten 10.000 Sequenzen , falls Sie interessiert sind (die Zeilennummern sind um 1 versetzt).
Dies ist ein Code-Golf , also mach es so kurz wie möglich in deiner Lieblingssprache. Gefälschte Bonuspunkte für schnelle Antworten!