演算法提高 p1001
時間限制:1.0s 記憶體限制:256.0mb
當兩個比較大的整數相乘時,可能會出現資料溢位的情形。為避免溢位,可以採用字串的方法來實現兩個大數之間的乘法。具體來說,首先以字串的形式輸入兩個整數,每個整數的長度不會超過8位,然後把它們相乘的結果儲存在另乙個字串當中(長度不會超過16位),最後把這個字串列印出來。例如,假設使用者輸入為:62773417和12345678,則輸出結果為:774980393241726.
輸入:62773417 12345678
輸出:774980393241726
問題分析:其實就是模擬乘法的過程,但是因為數太大,所以這裡用字元型陣列來表示,但是這裡有個主意點就是迴圈中,a[i]與b[j]相乘的結果應該儲存在ans[i+j+1]而不是ans[i+j],因為這裡ans[0]是留給最高位進製的情況,如果相乘結果直接存在ans[i+j]中,若嗎最高位進製了,那麼就會產生錯誤,若有ans[0]留一位,就可以儲存。同時這裡由於模擬的原因,所以比如:乘數分別為0,1234,那麼結果就是0000,顯然顯示乙個零就可以,這裡有兩種判斷方法,乙個很基礎判斷其中乙個為0而另乙個不為0即可,另乙個判斷方法就是判斷ans[1]不為0,因為m位數和n為數都不為0相乘最少也是m+n-1位數,而ans[1]就是第m+n-1位數,所以如果ans[1]==0,那麼肯定整個數為0,這時輸出0即可
#include#include#includeusing namespace std;
int main()
} if ((len1==1 && a[0]=='0') || (len2==1 && b[0]=='0'))
printf("0");
/* if(0 == mulnum[1] ) //說明整體為0
cout<<"0"<
演算法提高 P1001
當兩個比較大的整數相乘時,可能會出現資料溢位的情形。為避免溢位,可以採用字串的方法來實現兩個大數之間的乘法。具體來說,首先以字串的形式輸入兩個整數,每個整數的長度不會超過8位,然後把它們相乘的結果儲存在另乙個字串當中 長度不會超過16位 最後把這個字串列印出來。例如,假設使用者輸入為 6277341...
演算法提高 P1001
必須感嘆下,大數模板就是好用!ac include include include include include include include include include include include include using namespace std define eps 1e 10...
演算法提高 P1001
當兩個比較大的整數相乘時,可能會出現資料溢位的情形。為避免溢位,可以採用字串的方法來實現兩個大數之間的乘法。具體來說,首先以字串的形式輸入兩個整數,每個整數的長度不會超過8位,然後把它們相乘的結果儲存在另乙個字串當中 長度不會超過16位 最後把這個字串列印出來。例如,假設使用者輸入為 6277341...