高精度除法

2022-07-17 04:18:11 字數 868 閱讀 4583

做除法時,每一次上商的值都在0~9,每次求得的餘數連線以後的若干位得到新的被除數,繼續做除法。因此,在做高精度除法時,要涉及到乘法運算和減法運算,還有移位處理。當然,為了程式簡潔,可以避免高精度乘法,用0~9 次迴圈減法取代得到商的值。顯然高精度除法相對是比較麻煩的,由於競賽中很少涉及高精度數除以高精度數,所以,我們在這裡只討論一下高精度數除以普通整數的演算法,採取的方法是按位相除法。

1

program

exam4;

2const max=200;3

var a,c:array[1..max] of

0..9;4

x,b:longint;

5n1:string;

6lena,i,j:integer;

7begin

8readln(n1);

9 lena:=length(n1);

10for i:=1

to lena do a[i] := ord(n1[i]) - ord(』0

』);11

readln(b);

12 x:=0;

13for i:=1

to lena do

14begin //按位相除

15 c[i]:=(x*10+a[i]) div

b;16 x:=(x*10+a[i]) mod

b;17

end;

18 j:=1;19

while (c[j]=0) and (jdo inc(j);

20for i:=j to lena do

write(c[i]) ;

21end.

高精度除法(高精度除以高精度)

先貼乙個簡單的高精度除以單精度的 include include include using namespace std int main else ys ys 10 a i 0 while c i 0 i for int j i j 0 j printf d c j if ys printf d ...

高精度除法

演算法思想 反覆做減法,看看從被除數裡最多能減去多少個除數,商就是多少 所以演算法核心是寫乙個大整數的減法函式 反覆呼叫該函式進行減法操作 演算法步驟 用陣列a表示被除數,陣列b表示除數,陣列res表示商 先用被除數a減去除數b得到差的位數k,同時商 1 再用被除數a減去若干個除數b 10 k 不夠...

高精度除法

codevs 1331 西行寺幽幽子 codevs 3118 高精度練習之除法 學了高精度這麼久到現在才開始搞除法txt,總的來說高精除是四則運算 裡最難的。但是,高精度都是可以利用我們平時做算術時的方法手動模擬的,接下來我 們來學一下高精除。思路 首先,除法是建立在減法的基礎上的,我們可以考慮每次...