華為機試 大數相加,相乘,冪運算

2022-09-07 00:48:10 字數 1790 閱讀 7448

兩個數字轉換為字串,為了便於操作,分別逆轉字串,將短的字串補上『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 除法用整數除法,即僅保留除法運算結果的整數部分...