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

本文介绍了一种高精度除法算法的实现方法,通过数组存储大整数并逐位进行除法运算,解决了大数除以小数的问题。文章详细展示了如何初始化变量、读取输入、处理除法过程,并给出了完整的Pascal代码示例。
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.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值