題目描述
高精度乘單精度,a*b。 a是乙個很大的非負整數,但不超過240位,b是乙個非負整數不超過10000,求a * b。
高精度乘單精度的數學實現
1 2 5
× 25
——————————
25 50 125
諸位進製:3 1 2 512
5×2525
5012531
25實現步驟:
1、string s讀入高精度數,int b讀入單精度數
2、s逆序讀入陣列int a[250]
3、用b去乘a中的每個元素:a[i]=a[i]*b;
4、進製:a[i+1]=a[i+1]+a[i]/10;a[i]=a[i]%10;
5、從後往前找,找到不為0的位置p,然後從該位置開始輸出(要注意成績為0的情況,p初值設為0)
#include
using
namespace std;
int a[
250]
;string s;
intmain()
for(i=
0;i)for
(i=0
;i)int p=
0,len;
if(a[j]
>
0) len=j+1;
else len=j;
for(i=len-
1;i>=
0;i--)}
for(i=p;i>=
0;i--
)return0;
}
演算法 高精度乘法2(高精度乘高精度)
題目描述 高精度乘,求兩個很大的非負整數相乘的結果。輸入 2個非負整數,每個一行,每個整數不超過240位。輸出 乙個整數,表示相乘的結果。例子 為了和演算法對應方便,用上面數乘下面數的方法12 5 2512 5502 5312 5為了運算方便,將上面兩數倒置,得到的結果也為倒序下標0 1234 56...
高精度乘高精度
c a b a b均是高精度數 比如a 156,b 3,求a b 很容易知道答案是468,怎樣算的呢?首先讓3 6 18,然後向進一位,並且這位只保留8 讓3 5 進製1 16,然後向前進一位,並且這位只保留6 讓3 1 進製1 4,此時不向前進製,保留4 所以最終答案是468 通過這個例子我們再來...
高精度乘高精度
思路 用vector表示大整數,整數的低位存在陣列索引的低位 a x b c其中c的每一位 如第3位 是由a和b的相應位相乘累加,處理後得到 如 1 2,2 1 include using namespace std const int demical 10 void input string s,...