高精度减法

来源:互联网 发布:域名注册机构查询 编辑:程序博客网 时间:2024/06/05 13:27

题目描述

高精度减法

输入输出格式

输入格式:

两个数(第二个可能比第一个大)

输出格式:

结果(是负数要输出负号)

输入输出样例

输入样例#1:
21
输出样例#1:
1




var
 s1,s2:ansistring;
 bool:boolean;
 long1,long2,i:longint;
 a,b,c:array[0..10001] of longint;
begin
 readln(s1);
 readln(s2);
 bool:=false;
 long1:=length(s1);
 long2:=length(s2);
 if (long1<long2)or((long1=long2)and(s1<s2)) then begin
                                                   bool:=true;
                                                   for i:=1 to long1 do
                                                    b[i]:=ord(s1[long1-i+1])-ord('0');
                                                   for i:=1 to long2 do
                                                    a[i]:=ord(s2[long2-i+1])-ord('0');
                                                  end
                                             else begin
                                                   for i:=1 to long1 do
                                                    a[i]:=ord(s1[long1-i+1])-ord('0');
                                                   for i:=1 to long2 do
                                                    b[i]:=ord(s2[long2-i+1])-ord('0');
                                                  end;
 if long1<long2 then begin
                      i:=long1;
                      long1:=long2;
                      long2:=i;
                     end;
 for i:=1 to long1 do
  begin
   if a[i]<b[i] then begin
                      dec(a[i+1]);
                      c[i]:=a[i]+10-b[i];
                     end
                else c[i]:=a[i]-b[i];
  end;
 if bool then write('-');
 for i:=10000 downto 1 do
  if c[i]<>0 then break;
 for i:=i downto 1 do
  write(c[i]);
end.












0 0
原创粉丝点击