高精度除法

5.高精度除以低精度
procedure devide(a:hp;b:longint; var c:hp; var d:longint);
  {c:=a div b; d:= a mod b}
  var i,len:integer;
  begin
    fillchar(c,sizeof(c),0);
    len:=a[0]; d:=0;
    for i:=len downto 1 do begin
      d:=d*10+a[i];
      c[i]:=d div b;
      d:=d mod b;
    end;
    while (len>1) and (c[len]=0) then dec(len);
    c[0]:=len;
  end;
6.高精度除以高精度
procedure high_devide(a,b:hp; var c,d:hp);
  var
    i,len:integer;
  begin
    fillchar(c,sizeof(c),0);
    fillchar(d,sizeof(d),0);
    len:=a[0];d[0]:=1;
    for i:=len downto 1 do begin
      multiply(d,10,d);
      d[1]:=a[i];
      while(compare(d,b)>=0) do {即d>=b}
      begin
        Subtract(d,b,d);
        inc(c[i]);
      end;
    end;
    while(len>1)and(c.s[len]=0) do dec(len);
    c.len:=len;
  end;
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值