高精度演算法:
所謂的高精度演算法實則就是計算的數值超過的計算機所能接受的最大值,無法正確的計算.這個時候就需要我們利用其他方法來模擬計算機計算的過程.
在這裡,我們可以估計計算的位數,定義乙個足夠儲存的陣列來儲存我們計算的數值,手動的模擬計算機計算的過程,就像我們小學學習加減乘除那樣計算,就是乙個模擬的過程.不過有一點需要注意的是我們要手動的去除數字最開始多餘的0.
一般的模擬我們都是用乙個一維陣列來按逆序儲存每一位的數字,當然也可以每個陣列元素儲存多位,乙個陣列的元素儲存多位的好處就是會提高計算的效率,減少迴圈的次數,不過就是可能會比儲存一位的方法難一點.
模擬過程:
資料的接收和存貯:當輸入的數很長時,可採用字串方式輸入,這樣可輸入數字很長的數,利用字串函式和操作運算,將每一位數取出,存入陣列中。另一種方法是直接用迴圈加陣列方法輸入資料。
void init(int a) //傳入乙個陣列
另一種方法是直接用迴圈加陣列方法輸入資料。
(2) 高精度數字數的確定
位數的確定:接收時往往是用字串的,所以它的位數就等於字串的長度。
(3) 進製,借位處理
加法進製:c[i]=a[i]+b[i];
if (c[i]>=10)
減法借位:if (a[i]1]; a[i]+=10; }
c[i]=a[i]-b[i];
乘法進製:c[i+j-1]= a[i]*b[j] + x + c[i+j-1];
x = c[i+j-1]/10;
c[i+j-1] %=
10;(4) 商和餘數的求法
商和餘數處理:視被除數和除數的位數情況進行處理.
高精度演算法小結
1.概念 高精度運算,是指參與運算的數 加數,減數,因子 範圍大大超出了標準資料型別 整型,實型 能表示的範圍的運算。例如,求兩個500位的數的和。這時,就要用到高精度演算法了。2.高精度運算涉及到的問題 1 資料的輸入 2 資料的儲存 3 資料的運算 進製和借位 4 結果的輸出 小數點的位置和處於...
演算法 高精度乘法2(高精度乘高精度)
題目描述 高精度乘,求兩個很大的非負整數相乘的結果。輸入 2個非負整數,每個一行,每個整數不超過240位。輸出 乙個整數,表示相乘的結果。例子 為了和演算法對應方便,用上面數乘下面數的方法12 5 2512 5502 5312 5為了運算方便,將上面兩數倒置,得到的結果也為倒序下標0 1234 56...
高精度演算法 791 高精度加法
給定兩個正整數,計算它們的和。輸入格式 共兩行,每行包含乙個整數。輸出格式 共一行,包含所求的和。資料範圍 1 整數長度 100000 輸入樣例 1223 輸出樣例 35注意點 1.兩個整數較大,用字串來存,這樣的話,可以呼叫它的size 方法 2.將兩個大的整數,存入vector陣列中,最好把整數...