Napisz program, który przyjmuje dwie liczby całkowite jako dane wejściowe; pierwsza może być dowolną liczbą całkowitą, a druga jest mniejsza lub równa liczbie cyfr w pierwszej liczbie. Niech te numery się a
i b
odpowiednio.
Program wykona następujące czynności
- Połącz minimalną liczbę
1
s do końca,a
aby liczba cyfr wa
była podzielna przezb
. - Podziel
a
wzdłuż każdejb
cyfry. - Pomnóż cyfry w każdej sekcji razem.
- Połącz produkty razem (jeśli jedna z liczb jest równa zero, następnie połącz
0
). - Powtarzaj ten proces, aż
b
utworzy się liczba z dokładnie mniejszą liczbą cyfr. Wydrukuj to jako wynik, a także numer procesu jest powtarzany. Jednostki nie są konieczne, ale istnieje pewna forma separacji między liczbą końcową a liczbą iteracji.
W poniższych przypadkach testowych poszczególne kroki są pokazane w celu zrozumienia. Twój program nie musi wyświetlać kroków.
Przypadek testowy 1
1883915502469, 3
Kroki
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
Przykładowe dane wyjściowe :0, 4
Przypadek testowy 2
792624998126442, 4
Kroki
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
Przykładowe dane wyjściowe :06, 4
Program musi zwrócić błąd (lub po prostu nic nie drukować), jeśli b>len(a)
. Ponadto, b
nie może być równy 1, w przeciwnym razie program spowoduje nieskończoną pętlę.
To jest kod golfowy, więc obowiązują standardowe zasady. Najkrótszy kod w bajtach wygrywa.
a
i są również uwzględniane w danych wyjściowych?Odpowiedzi:
CJam, 42 bajty
Sprawdź to tutaj.
źródło
Perl 6, 116 bajtów
źródło
Pyth, 32 bajty
Demonstracja
Pobiera dane wejściowe w dwóch wierszach,
a
a następnieb
. Daje dane wyjściowe w dwóch wierszach, po których następuje operacja.Podkładka:
+z*\1%_lzQ
Posiekać:
c ... Q
Konwertuj na listę ints:
sMM
Weź produkty:
*M
Konwertuj z powrotem na str:
jk
Przypisz z powrotem:
=z
Sprawdź zakończenie:
<l ... Q
Wykonano iteracje wydruku:
f ... )
Wynik wydruku:
z
Wstępne sprawdzenie, czy w ogóle coś wydrukować:
IglzQ
źródło