Числа и ввод · 43 из 43
Умножение в столбик
«Длинная арифметика» — так называется лабораторная, где числа не помещаются ни в какой тип. В Python целые без предела, и Борис Аркадьевич это знает. Поэтому числа приходят строками, а int и eval запрещены: умножать надо так, как в третьем классе, — столбиком, цифра на цифру, с переносом.
Что сделать
Перемножьте два длинных числа, записанных строками, — столбиком, цифра за цифрой.
Что приходит
aиb— неотрицательные целые числа строками, без лишних нулей впереди
Что вернуть
Произведение строкой, без нулей впереди; ноль — "0".
Допишите функцию umnozhit_stroki в редакторе справа.
Результат верните через return — то, что
напечатано, на проверку не влияет.
Ограничения
Без
int— и своё имя так назвать нельзяБез
eval— и своё имя так назвать нельзяБез
import
Обходные пути — тоже нарушение: eval, exec, getattr, имена с двойным подчёркиванием, импорт os, subprocess и им подобных.
umnozhit_stroki("99", "99")
'9801'
Цифру из строки получайте без int: ord(cifra) - ord("0").
Удобная схема: заведите список из len(a) + len(b) нулей — разрядов будущего произведения. Цифра a[i] на цифру b[j] прибавляется в разряд i + j + 1 (разряды считаются слева, как в строках). Потом пройдите разряды справа налево и перенесите всё, что больше девяти, в соседний слева разряд.
Нули впереди уберите, но если всё произведение — ноль, ответ «0».
Обсуждение
Вопросов пока нет.
Войдите, чтобы спросить.