Напишите программу, которая принимает два целых числа в качестве входных данных; первое может быть любым целым числом, а второе меньше или равно количеству цифр в первом числе. Пусть эти числа будут 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
и также включены в вывод?