高精度减法

  • const
     max=1000;
    var
    a,b:array[0..max]of longint;
    procedure init;
    var
    s1,s2,s:string;
    l1,l2,i:longint;
    begin
        readln(s1);
        readln(s2);
        l1:=length(s1);
        l2:=length(s2);
        if (l2>l1)or(l1=l2)and(s1<s2) then
        begin
            write('-');
            s:=s1;s1:=s2;s2:=s;
            l1:=length(s1);
            l2:=length(s2);
        end;
        for i:=1 to l1 do
        a[max-l1+i]:=ord(s1[i])-ord('0');
        for i:=1 to l2 do
        b[max-l2+i]:=ord(s2[i])-ord('0');
    end;
    procedure jf;
    var
    g,i:longint;
    begin
        g:=0;
        for i:=max downto 1 do
        if a[i]>=b[i]+g then
        begin
            a[i]:=a[i]-b[i]-g;
            g:=0;
        end else
        begin
            a[i]:=a[i]+10-b[i]-g;
            g:=1;
        end;
    end;
    procedure print;
    var
    i,j:longint;
    begin
        i:=1;
        while (i<max)and(a[i]=0) do inc(i);
        for j:=i to max do
        write(a[j]);
    
    end;
    begin
        init;
        jf;
        print;
    end.
    

转载于:https://www.cnblogs.com/YYC-0304/p/9500104.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值