思路:用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, vector<
int>
&bignumber)
}vector<
int>
mutiply
(vector<
int>
& a, vector<
int>
& b)
} c.
push_back
(t % demical)
; t /
= demical;
}while
(t)while
(c.size()
>
1&& c.
back()
==0)return c;
}int
main
(void))
; cout << endl;
numbera.
clear()
; numberb.
clear()
;}return0;
}
輸入示例:case1.input.txt
1 2
3 11
14512451451245124512 15125125124512451245
輸出示例:case1.output.txt
2
33219502644063494817653152060344354417440
高精度乘高精度
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 通過這個例子我們再來...
大數相乘「高精度乘低精度」和「高精度乘高精度」
二 高精度乘高精度 如下 由於計算機的儲存位元組有限,所以不能完整表示乙個很大整數的精確值,這時候就得用到其他的方法,稱之為高精度演算法。這裡的高精度乘法主要指按位模擬乘法,實際上就是模擬乘法的過程,也就是筆算的過程。高精度乘低精度,即乙個大數與乙個小於10000的數相乘,大數使用字串來進行儲存,較...
演算法 高精度乘法2(高精度乘高精度)
題目描述 高精度乘,求兩個很大的非負整數相乘的結果。輸入 2個非負整數,每個一行,每個整數不超過240位。輸出 乙個整數,表示相乘的結果。例子 為了和演算法對應方便,用上面數乘下面數的方法12 5 2512 5502 5312 5為了運算方便,將上面兩數倒置,得到的結果也為倒序下標0 1234 56...