演算法 高精度計算乘法1(高精度乘單精度)

2021-10-01 14:35:34 字數 831 閱讀 5069

題目描述

高精度乘單精度,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,...