#两个20位数字的乘法 #-*- coding=utf-8 -*- import sys def list2str(li): while li[0] == 0: del li[0] res = '' for i in li: res += str(i) return res def multi(stra, strb): aa = list(stra) bb = list(strb) lena = len(stra) lenb = len(strb) result = [0 for i in range(lena + lenb)] for i in range(lena): for j in range(lenb): result[lena - i - 1 + lenb - j - 1] += int(aa[i]) * int(bb[j]) for i in range(len(result) - 1): if result[i] >= 10: result[i + 1] += result[i] // 10 result[i] = result[i] % 10 return list2str(result[::-1]) if __name__ == '__main__': if len(sys.argv) != 3: print('请输入两个参数') # exit() # a = sys.argv[1] # b = sys.argv[2] a = '20000000000000000000' b = '30000000000000000000' res = multi(a, b) print('multi', res) print('ok', int(a) * int(b))
######################################################################################
#-*- coding=utf-8 -*- def list2_str(list1): while list1[0] == 0: del list1[0] res = '' for i in list1: res += str(i) return res def multi(str1, str2): a = list(str1) b = list(str2) result = [0 for i in range(len(str1) + len(str2))] # result = [0 for i in range(len(str1) + len(str2))] for i in range(len(str1)): for j in range(len(str2)): result[len(str1) - i - 1 + len(str2) - j - 1] += int(a[i]) * int(b[j]) for i in range(len(result) - 1): if result[i] >= 10: result[i + 1] += result[i] // 10 result[i] = result[i] % 10 return list2_str(result[::-1]) if __name__ == '__main__': c = input() d = input() res = multi(c, d) print(res)
#################################################################################################