1.大数相加
class Solution:
def addStrings(self, num1: str, num2: str) -> str:
s1 = len(num1)
s2 = len(num2)
if s1>s2:
num2='0'*(s1-s2)+num2
elif s1<s2:
num1 = '0'*(s2-s1)+num1
cnt = max(s1,s2)-1
a = b = 0
res =""
while cnt>=0:
k = int(num1[cnt])+int(num2[cnt])
b = (k+a)%10 #余数加上进位值
res= str(b)+res
a = (k+a)//10 #当前位产生了进位
cnt-=1
res =str(a)+res if a!=0 else res
return res
2.大数相乘
class Solution:
def multiply(self, num1: str, num2: str) -> str:
def addStr(n1,n2):
s1 ,s2 = len(n1),len(n2)
abs_ = abs(s1-s2)
if s1>s2: n2 = '0'*abs_+n2
elif s1<s2: n1 = '0'*abs_ +n1
cnt = max(s1,s2)-1
a = b =0
res =''
while cnt>=0:
k = int(n1[cnt])+int(n2[cnt])
b = (k+a)%10
res = str(b)+res
a = (k+a)//10
cnt-=1
return str(a)+res if a!=0 else res
res_pre = ""
mul_cnt=0
for i in range(len(num1)-1,-1,-1):#456
a = b =0
res =""
for j in range(len(num2)-1,-1,-1):#123
s = int(num1[i])*int(num2[j])
b = (s+a)%10
res=str(b)+res
a = (s+a)//10
res = str(a)+res if a!=0 else res
res = res+'0'*mul_cnt if res[0]!='0' else '0'
res_pre = addStr(res,res_pre)
mul_cnt+=1
return res_pre
3.大数相减
。。。
4.大数相除
。。。