Schreiben Sie ein Programm, das zwei Ganzzahlen als Eingabe verwendet. Die erste kann eine beliebige Ganzzahl sein und die zweite ist kleiner oder gleich der Anzahl der Stellen in der ersten Zahl. Lassen Sie diese Zahlen sein a
und b
jeweils.
Das Programm führt folgende Schritte aus
- Verketten Sie eine minimale Anzahl von
1
s bis zum Ende,a
damit die Anzahl der Stellen ina
durch teilbar istb
. - Split
a
entlang jederb
Ziffer. - Multiplizieren Sie die Ziffern in jedem Abschnitt.
- Verketten Sie die Produkte miteinander (wenn eine der Zahlen Null ist, verketten Sie sie
0
). - Wiederholen Sie diesen Vorgang, bis eine Zahl mit streng weniger als
b
Ziffern gebildet wird. Drucken Sie dies als Ausgabe aus, und die Nummer des Vorgangs wird wiederholt. Einheiten sind nicht erforderlich, aber es gibt eine Form der Trennung zwischen der endgültigen Anzahl und der Anzahl der Iterationen.
In den folgenden Testfällen werden die einzelnen Schritte zum Zwecke des Verständnisses gezeigt. Es ist nicht erforderlich, dass Ihr Programm die Schritte anzeigt.
Testfall 1
1883915502469, 3
Schritte
1883915502469 //Iteration 1
188391550246911
188 391 550 246 911
64 27 0 48 9
64270489 //Iteration 2
642704891
642 704 891
48 0 72
48072 //Iteration 3
480721
480 721
0 14
014 //Iteration 4
0
Beispielausgabe :0, 4
Testfall 2
792624998126442, 4
Schritte
792624998126442 //Iteration 1
7926249981264421
7926 2499 8126 4421
756 648 96 32
7566489632 //Iteration 2
756648963211
7566 4896 3211
1260 1728 6
126017286 //Iteration 3
126017286111
1260 1728 6111
0 112 6
01126 //Iteration 4
01126111
0112 6111
0 6
06
Beispielausgabe :06, 4
Das Programm muss einen Fehler zurückgeben (oder einfach nichts drucken), wenn b>len(a)
. Auch b
kann gleich nicht 1 oder das Programm in einer Endlosschleife führen.
Dies ist Code Golf, daher gelten Standardregeln. Der kürzeste Code in Bytes gewinnt.
a
und sind auch in der Ausgabe enthalten?Antworten:
CJam, 42 Bytes
Testen Sie es hier.
quelle
Perl 6, 116 Bytes
quelle
Pyth, 32 Bytes
Demonstration
Nimmt Eingaben in zwei Zeilen vor,
a
gefolgt vonb
. Gibt die Ausgabe in zwei Zeilen aus, gefolgt vom Ergebnis.Pad:
+z*\1%_lzQ
Hacken:
c ... Q
In Liste der Ints konvertieren:
sMM
Nehmen Sie Produkte:
*M
Zurück zu str konvertieren:
jk
Zurück zuweisen:
=z
Auf Kündigung prüfen:
<l ... Q
Druckiterationen genommen:
f ... )
Druckergebnis:
z
Erste Überprüfung, ob überhaupt etwas gedruckt werden soll:
IglzQ
quelle