Закончилось лето и дядя Фёдор уехал из деревни Простоквашино, забрав с собой ноутбук. Теперь Матроскин вынужден вести бухгалтерию на счётах.
Складывать числа Матроскин умел, а вычислять произведение не умел. Все вечера Матроскин проводил за счётами.
Шарик решил помочь Матроскину и принес старинный учебник арифметики. В учебнике они нашли описание "египетского" спосба умножения.
В книге не было словесного описания, но была таблица для умножения двух чисел.
Напишите программу, которая воспроизводит этот метод.
Операция умножения это замена многократного сложения.
Пусть определена операция сложения на объектами типа A.
Необходимо выполниеть операцию
\(A\cdot n =\) \(\underbrace {A+...+A}_{n\ раз}\) , то есть организовать умножение объёкта типа A на натуральное число n
Ваша программа должна быть достаточно эффективной и выполнять не более, чем
\(2\cdot log_2(n) \) операций сложений.
Дан объект
A /представлен как строка/ и натуральное число
n. Напишите фрагмент кода, эффективно выполняющий операцию
\(A\cdot n\)
В шаблоне представлен фрагмент кода, выполняющий операцию
\(A\cdot n\) за
n операций сложения
def multi( A, n ): # умножение объекта A на натуральное число n
rez=None
for i in range(n):
rez=my_add(rez,A) # my_add(x,y) - выполняет сложение объектов x+y (если один есть None, то возвращает значение другого)
return rez
Напишите программу "быстрого" умножения. Запрещено использовать операцию * (умножение).
Программа
Запрещенные операторы: *