void init(int a)
}
接收時往往是用字串的,所以它的位數就等於字串的長度。
c[i] = a[i] + b[i]
if(c[i]>10)
if(a[i] < b[i])
c[i] = a[i] - b[i];
i和j從1開始迴圈
c[i+j-1] = a[i] * b[i] + x + c[i+j-1];// 當前乘積 + 進製 + 原數
x = c[i+j-1] / 10;//記錄 進製
c[i+j-1] = c[i+j-1] % 10;
商和餘數的處理,視被除數和除數的位數情況進行處理。
高精度除以低精度:兩種方法
方法一:儲存高精度陣列可以保留多位數,可以減少很多操作次數
比如:
1234567891 ÷ 45 = 1』2345』6789 ÷ 45 = 274』3484∵ 1/45=0, 1%45=1
∴取12345/45=274 ∵12345%45=15
∴取156789/45=3484
∴答案為2743484,餘數為156789%45=9
//高精度除以低精度
#include
#include
#include
using
namespace std;
char a1[
101]
;int a[
101]
,c[101
],b,lena,i,j,x,lenc;
int l =4;
intmain()
} lena =
(lena /4)
+1;for
(i =
1; i <= lena; i++
) lenc =1;
while
(c[lenc]==0
&& lenc <= lena) lenc++
;for
(i = lenc; i <= lena; i++
) cout << c[i]
; cout << endl;
return0;
}
方法二:改進方法一,思路同上
//高精度除以低精度
#include
#include
#include
using
namespace std;
string a1;
int a[
101]
,c[101
],b,lena,i,j,x,lenc;
int l =4;
bool
allisnum
(string str)
return
true;}
intmain()
cin >> b ;
lena = a1.
length()
;int k =
(lena / l)+1
;for
(i =
1; i <= k; i++
)for
(i =
1; i <= k; i++
) lenc =1;
while
(c[lenc]==0
) lenc++
;for
(i = lenc; i <= k; i++
) cout << c[i]
; cout << endl;
return0;
}
基本演算法 高精度計算
五 高精度計算 高精度數的定義 type hp array 1.maxlen of integer 1 高精度加法 procedure plus a,b hp var c hp var i,len integer begin fillchar c,sizeof c 0 if a 0 b 0 then...
C C 演算法例項(五) 高精度計算
高精度數的定義 type hp array 1.maxlen of integer 1 高精度加法 procedure plus a,b hp var c hp var i,len integer begin fillchar c,sizeof c 0 if a 0 b 0 then len a 0...
基礎演算法 高精度計算 高精度加法
輸入兩個數到兩個變數中,然後用賦值語句求他們的和,輸出。但是,我們知道,在c 中任何資料型別都有一定表示範圍。當兩個被加數很大時,上述演算法顯然不能求出精確解,因此尋求另外一種方法。在讀小學時,我們做加法都採用豎式方法,這樣,我們可以寫出兩個整數相加的演算法。我們用陣列a b分別儲存加數和被加數,用...