program HPD;{高精度除以单精度(未压位)}
type
arr=array [1..1000] of integer;
var
s:ansistring;
b,tot,len:longint;
a,c:arr;
procedure init;
var
i:longint;
begin
readln(s);
readln(b);
len:=length(s);
for i:=1 to len do a[i]:=ord(s[i])-48;{因为做除法是从高位向低位运算,因此顺序存储就行。}
end;
procedure IHPD;
var
i:longint;
begin
for i:=1 to len do
begin
if (a[i] div b=0) and (tot=0) then{不停的除直到首位除以除数不为0。这样避免了删0。}
begin
inc(a[i+1],a[i]*10);
continue;
end;
inc(tot);
a[i+1]:=(a[i] mod b)*10+a[i+1];{得到上一位的余数。}
c[tot]:=a[i] div b;{记录一位商。}
end;
for i:=1 to tot do write(c[i]);
end;
begin
assign(input,'HPD.in'); reset(input);
assign(output,'HPD.out'); rewrite(output);
init;
IHPD;
close(input); close(output);
end.高精度除法(高精除以单精)
最新推荐文章于 2024-06-23 00:00:00 发布
本文介绍了一种高精度除法算法的实现方法,通过数组存储大整数并逐位进行除法运算,解决了大数除以小数的问题。文章详细展示了如何初始化变量、读取输入、处理除法过程,并给出了完整的Pascal代码示例。
&spm=1001.2101.3001.5002&articleId=6651931&d=1&t=3&u=12f2890328304008a84b72e308f193b1)
976

被折叠的 条评论
为什么被折叠?



