Написати програму, яка приймає два цілі числа як вхідні дані; перший може бути будь-яким цілим числом, а другий меншим або рівним кількості цифр у першому числі. Нехай ці числа будуть a
і b
відповідно.
Програма зробить наступне
- Об'єднайте мінімальну кількість
1
s до кінця,a
тому кількість цифр уa
ділиться наb
. - Розділіть
a
по всіхb
цифрах. - Помножте цифри в кожному розділі разом.
- З’єднайте продукти разом (якщо одне з чисел дорівнює нулю, то з'єднайте
0
). - Повторіть цей процес, поки
b
не сформується число зі строго меншим числом . Роздрукуйте це як вихід, а також номер процесу повторюється. Одиниці не потрібні, але деяка форма поділу між кінцевим числом і кількістю ітерацій є.
У наступних тестових випадках для розуміння показані окремі етапи. Це не обов'язково для вашої програми відображати кроки.
Тестовий випадок 1
1883915502469, 3
Кроки
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
Вибірка зразка :0, 4
Тестовий випадок 2
792624998126442, 4
Кроки
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
Вибірка зразка :06, 4
Програма повинна повернути помилку (або просто нічого не друкувати), якщо b>len(a)
. Крім того, b
не може бути рівний 1, або програма призведе до нескінченного циклу.
Це кодовий гольф, тому застосовуються стандартні правила. Виграє найкоротший код у байтах.
a
та також включаються до виводу?