求助
查看原帖
求助
733896
LeoChen1229A楼主2024/12/8 19:14
def multiply(num1, num2):
    if len(num1) == 1 and len(num2) == 1:
        return int(num1) * int(num2)
    n = max(len(num1), len(num2))
    n_half = n // 2
    # 拆分 num1
    num1_high = num1[:len(num1) - n_half]
    num1_low = num1[len(num1) - n_half:]
    # 拆分 num2
    num2_high = num2[:len(num2) - n_half]
    num2_low = num2[len(num2) - n_half:]
    # 递归计算子部分乘积
    z0 = multiply(num1_low, num2_low)
    z1 = multiply(str(int(num1_low) + int(num1_high)), str(int(num2_low) + int(num2_high)))
    z2 = multiply(num1_high, num2_high)
    return z2 * (10 ** (2 * n_half)) + (z1 - z2 - z0) * (10 ** n_half) + z0

a = input()
b = input()
print(multiply(a, b))
2024/12/8 19:14
加载中...