題目描述:
資源限制
時間限制: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位,然後把它們相乘的結果儲存在另乙個字串當中 長度不會超...