藍橋杯試題 演算法提高 P1001

2021-10-04 08:50:35 字數 1382 閱讀 2752

題目描述:

資源限制

時間限制:1.0s 記憶體限制:256.0mb

當兩個比較大的整數相乘時,可能會出現資料溢位的情形。為避免溢位,可以採用字串的方法來實現兩個大數之間的乘法。具體來說,首先以字串的形式輸入兩個整數,每個整數的長度不會超過8位,然後把它們相乘的結果儲存在另乙個字串當中(長度不會超過16位),最後把這個字串列印出來。例如,假設使用者輸入為:62773417和12345678,則輸出結果為:774980393241726.

輸入:62773417 12345678

輸出:774980393241726

解題思路:

模擬兩個數字相乘的方法,和我們平時計算兩個數字相乘是乙個思路,細心一點,其實不難。注意,最後再進行進製。

具體可以看下圖的模擬:

;//b當做模擬乘法的時候下面的數

int k1=

0,k2=0;

while

(a)//將a逆序儲存在陣列arr1中

while

(b)//將b逆序儲存在陣列arr2中

int cnt,i;

int kk,r,sum;

//這個時候,無疑k1>k2

for(cnt=

0;cnt

)//乘幾次,即b是幾位數

if(r)

//多出來的進製

ans[kk++]+

=r;}

//某個索引位置的數值如果是兩位數,那麼應該向後乙個索引位置進製(這裡指i+1的位置)

for(i=

0;ii=kk-1;

if(ans[kk]

)//如果有進製的話

i=kk;

for(

;i>=

0;i--

)//逆向輸出最後的答案

cout<

; cout<

return0;

}

藍橋杯 ADV 197 演算法提高 P1001

當兩個比較大的整數相乘時,可能會出現資料溢位的情形。為避免溢位,可以採用字串的方法來實現兩個大數之間的乘法。具體來說,首先以字串的形式輸入兩個整數,每個整數的長度不會超過8位,然後把它們相乘的結果儲存在另乙個字串當中 長度不會超過16位 最後把這個字串列印出來。例如,假設使用者輸入為 6277341...

演算法提高 P1001

當兩個比較大的整數相乘時,可能會出現資料溢位的情形。為避免溢位,可以採用字串的方法來實現兩個大數之間的乘法。具體來說,首先以字串的形式輸入兩個整數,每個整數的長度不會超過8位,然後把它們相乘的結果儲存在另乙個字串當中 長度不會超過16位 最後把這個字串列印出來。例如,假設使用者輸入為 6277341...

演算法提高 P1001

演算法提高 p1001 時間限制 1.0s 記憶體限制 256.0mb 當兩個比較大的整數相乘時,可能會出現資料溢位的情形。為避免溢位,可以採用字串的方法來實現兩個大數之間的乘法。具體來說,首先以字串的形式輸入兩個整數,每個整數的長度不會超過8位,然後把它們相乘的結果儲存在另乙個字串當中 長度不會超...