基本演算法之高精度計算c c 實現

2021-10-06 07:23:31 字數 1890 閱讀 8541

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分別儲存加數和被加數,用...