兩個數字轉換為字串,為了便於操作,分別逆轉字串,將短的字串補上『0』,使得長度相等。各個位分別相加,處理進製問題。最後再將結果倒置,從第乙個不為0的字元開始輸出
#reverse返回乙個迭代器,用list()
s1=list(reversed(num1))
s2=list(reversed(num2))
if len(s1)>len(s2):
for i in range(len(s1)-len(s2)):
else:
for i in range(len(s2)-len(s1)):
print(s1,s2)
ans=[0]*(len(s1)+1)
for i in range(len(s1)):
sum = int(s1[i]) + int(s2[i])+ans[i]
if(sum>9):
ans[i+1]=ans[i+1]+sum//10
ans[i] = sum % 10
ans=list(reversed(ans))
print(ans)
i=0flag=0
for i in range(len(ans)):
if ans[i] != 0 and flag==0:
break
if ans[i]!=0:
flag=1
else:
flag=0
while i與大數相加類似,模擬乘法,n位數*m位數,結果為n+m位數。先算出每一位的數,最後處理進製。
in1=input('').split(' ')
num1=in1[0];
num2=in1[1];
s1=list(reversed(num1))
s2=list(reversed(num2))
if len(s1)>len(s2):
for i in range(len(s1)-len(s2)):
else:
for i in range(len(s2)-len(s1)):
print(s1,s2)
ans=[0]*(max(len(s1),len(s2))*2)
for i in range(min(len(s1),len(s2))):
for j in range(max(len(s1),len(s2))):
if len(s1)>len(s2):
ans[i+j]+=int(s1[j])*int(s2[i])
else:
ans[i+j]+=int(s1[i])*int(s2[j])
#print(ans[i])
#print(ans)
for i in range(len(ans)):
temp=ans[i]
ans[i]=temp%10
if temp>9:
ans[i+1]+=temp//10
print(ans)
ans=list(reversed(ans))
print(ans)
i=0flag=0
while 1:
if ans[i]!=0 and flag==0:
break
i+=1
#print(i)
while i!=len(ans):
print(ans[i],end='')
i+=1
for i in range(k-1):
ans=bignummul(ans,n)
華為機試 最小最大數之和
輸入整型陣列求陣列的最小數和最大數之和,例如輸入1,2,3,4則輸出為5,當輸入只有乙個數的時候,則最小數和最大數都是該數,例如只輸入1,則輸出為2 另外陣列的長度不超過50 include include include using namespace std int main int len c...
華為機試 四則運算
題目 四則運算 問題描述 輸入乙個只包含個位數字的簡單四則運算表示式字串,計算該表示式的值 注 3.1 表示式只含 四則運算符,不含括號 3.2 表示式數值只包含個位整數 0 9 且不會出現0作為除數的情況 3.3 要考慮加減乘除按通常四則運算規定的計算優先順序 3.4 除法用整數除法,即僅保留除法...
華為機試簡單四則運算
簡單四則運算 問題描述 輸入乙個只包含個位數字的簡單四則運算表示式字串,計算該表示式的值 注 1 表示式只含 四則運算符,不含括號 2 表示式數值只包含個位整數 0 9 且不會出現0作為除數的情況 3 要考慮加減乘除按通常四則運算規定的計算優先順序 4 除法用整數除法,即僅保留除法運算結果的整數部分...