Я пытаюсь решить проблему умножения. Я знаю, что Python поддерживает очень большие числа, и это можно сделать, но я хочу сделать это
Введите 2 числа в виде строк.
Умножьте эти два числа таким же образом, как мы это делали в школе.
Основная идея - преобразовать код, приведенный в ссылке ниже, в код Python, но я не очень хорош в C ++ / Java. Я хочу понять код, приведенный в ссылке ниже, и применить его для Python.
https://www.geeksforgeeks.org/multiply-large-numbers-represented-as-strings/
Я застрял в точке сложения.
Я хочу сделать это так, как показано на рисунке ниже
Итак, я составил список, в котором хранятся значения от i th цифры первого числа до j th цифры секунды , Пожалуйста, помогите мне решить дополнительную часть.
def mul(upper_no,lower_no):
upper_len=len(upper_no)
lower_len=len(lower_no)
list_to_add=[] #saves numbers in queue to add in the end
for lower_digit in range(lower_len-1,-1,-1):
q='' #A queue to store step by step multiplication of numbers
carry=0
for upper_digit in range(upper_len-1,-1,-1):
num2=int(lower_no[lower_digit])
num1=int(upper_no[upper_digit])
print(num2,num1)
x=(num2*num1)+carry
if upper_digit==0:
q=str(x)+q
else:
if x>9:
q=str(x%10)+q
carry=x//10
else:
q=str(x%10)+q
carry=0
num=x%10
print(q)
list_to_add.append(int(''.join(q)))
print(list_to_add)
mul('234','567')
У меня есть [1638,1404,1170]
в результате для вызова функции mul('234','567')
Я должен добавить эти числа, но застрял, потому что эти числа должны быть сдвинуты для каждого списка. например, 1638 предполагается добавить как 16380 + 1404 с 6, выравнивая с 4, 3 с 0 и 8 с 4 и так далее. Как:
1638
1404x
1170xx
--------
132678
--------