大整数乘法

来源:互联网 发布:淘宝达人后台在哪里 编辑:程序博客网 时间:2024/06/01 22:22

简单的大整数乘法为模拟手动乘法计算方式:



最终结果的位数为m+n-1(无进位)或者m+n(有进位),因此可以用一个长度为m+n的数组保存答案。

def mul(s1, s2):    if not s1 or not s2:        return ''    s1_length = len(s1)    s2_length = len(s2)    result_length = s1_length + s2_length    result = [0] * result_length    for i in range(s1_length):        k = result_length - i - 1        for j in xrange(s2_length):            result[k] += int(s1[s1_length-1-i]) * int(s2[s2_length-1-j])            k -= 1    carry = 0    for i in xrange(result_length):        number = result[result_length-1-i] + carry        result[result_length-1-i] = number % 10        carry = number / 10    if result[0] == 0:        return ''.join([str(_) for _ in result[1:]])    return ''.join([str(_) for _ in result])if __name__ == '__main__':    s1, s2 = raw_input().split()    print mul(s1, s2)


原创粉丝点击