#include#includeview code#include
#define max 100
intmain()
; scanf(
"%s %s
",s1,s2);
len1=strlen(s1);
len2=strlen(s2);
for(i=0;i)
}for(i=len1+len2-2;i>=1;i--)//
因為最後一項result[len1-1+len2-1]
}//當i=1,result[0]是進了位的,他有可能大於9,甚至result[1]給他進幾十,所以直接輸出
for(i=0;i<=len1+len2-2;i++)
return0;
}
演算法思路:輸入如:3456
用3分別乘7、8、9,用4分別乘7、8、9,5分別乘7、8、9,01
2334
5678
96分別乘7、8、9
若按照res[i+j]=s1[i]*s2[j],得到res:01
2345
2124
2728
3236
3540
4542
4854
res陣列本身是1維的,只有一排,外部的for迴圈每進完一次,res陣列就被更新一次
發現規律:len1=4,len2=3,最後一位是res[len1-1+len2-1]
將得到的res陣列從最後一位開始進製,巧妙的是,邏輯上if(res>9)更好,不加,也沒問題
result[i-1]+=(result[i]/10讓前一位進好位,又保留這一位的餘數,我只讓這段**做到了res[1],但在res[0]處進了位); result[i] %= 10;
聯絡大數加法:poj1503
同樣的定義乙個res(fin)陣列
POJ2389 高精度乘法
直接上 了 include include include include include include include include include include define ll long long define max a,b a b?a b define min a,b a 0 i ...
POJ 1001 大數的乘法
對這道題的理解 大數的乘法 關鍵是 實型的 那麼首先就是數出來小數點有幾位這個相信很簡單 從後面往前數剛開始0 不算接著就是遇到小數點結束如果沒有小數點 那麼置為0 接著就是輸出地時候首先算出小數點的位置然後輸出 你想怎麼樣都行 從後往前數這個時候輸出 那麼就是你也知道了 嘿嘿 剩下的就是 大數的乘...
6 大數乘法
對於32位字長的機器,大約超過20億,用int型別就無法表示了,我們可以選擇int64型別,但無論怎樣擴充套件,固定的整數型別總是有表達的極限!如果對超級大整數進行精確運算呢?乙個簡單的辦法是 僅僅使用現有型別,但是把大整數的運算化解為若干小整數的運算,即所謂 分塊法 如圖 1.jpg 表示了分塊乘...