兩個大數相乘:char* multiply(char*,char*)。給了兩個字串,每個都是代表了乙個很長的10進製表示的數, 比如 string str1 = "23456789009877666555544444"; string str2 = "346587436598437594375943875943875", 最後求出它們的乘積。 不用jdk的數**算包biginteger.或者類似的包。
這是乙個大數相乘為題,大家都知道int、long等變數表示的數值有限,當出現超過這個限度的數值計算的時候,就是乙個大數的計算問題,就需要用到陣列了。
大致思想就是,把改進制的先儲存,先不進製,儲存到陣列中,計算出"每一位「的值之後,在從"最低位"開始往高位進製。
之前寫過c的**:
[cpp]view plain
copy
?/*問題描述:當兩個數比較大的時候就會出現溢位的現象。
解決方案:利用陣列來儲存結果。*/
#include
#include
#define max 100
unsigned arr1[max+10];
unsigned arr2[max+10];
unsigned result[max*2+10];
char str1[max+10];
char str2[max+10];
int main()
j = 0;
for(i = len2-1; i >= 0; i--)
// for(i = 0; i
} "color: #ff0000">//進製
for(i = 0; i
} //輸出結果(注意輸出的時候把陣列最後的一連串的0全部去掉)
for(i = max*2; i >= 0; i--)
else
if(result[i])
} // if(!flag)
printf("0");
printf("\n");
return 0;
}
演算法 兩個超大整數相乘
處理問題時有時候會遇到兩個超大數相乘,那麼他們的乘積整數就有可能存不下。說一下各個整型的範圍 型別說明 名稱 位元組數範圍 int4 2147483648 2147483647 short int 2 32768 32767 long 4 2147483648 2147483647 long lon...
求兩個正整數的乘積
給你兩個正整數 aa 和 bb,1 a,b 10 1 a,b 102000 求 aa 與 bb 的乘積。包括一行,兩個正整數aa 和 bb,1 a,b 10 1 a,b 102000 一行,乙個正整數表示乘積。輸入 1複製 3 7 輸出 1複製 21 解題思路 1.通過歸納得出乘法對應的位置兩乘數和...
程式設計實現兩個正整數的除法
程式設計實現兩個正整數的除法,當然不能用除法操作符。常規的想,100 7,可以試著7 1,7 2,7 3,7 14做,但這樣子太慢了。於是有人說以2的指數次遞增,也就是7 1,7 2,7 4,7 8,好了,因為7 16 100,所以這個時候就100 7 8 44接著下一次迴圈。int div con...