做除法時,每一次上商的值都在0~9,每次求得的餘數連線以後的若干位得到新的被除數,繼續做除法。因此,在做高精度除法時,要涉及到乘法運算和減法運算,還有移位處理。當然,為了程式簡潔,可以避免高精度乘法,用0~9 次迴圈減法取代得到商的值。顯然高精度除法相對是比較麻煩的,由於競賽中很少涉及高精度數除以高精度數,所以,我們在這裡只討論一下高精度數除以普通整數的演算法,採取的方法是按位相除法。
1program
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,總的來說高精除是四則運算 裡最難的。但是,高精度都是可以利用我們平時做算術時的方法手動模擬的,接下來我 們來學一下高精除。思路 首先,除法是建立在減法的基礎上的,我們可以考慮每次...