题目描述
高精度减法
输入输出格式
输入格式:
两个数(第二个可能比第一个大)
输出格式:
结果(是负数要输出负号)
输入输出样例
输入样例#1:
2 1
输出样例#1:
1
说明
无
const
maxn=10000;
var
i,j,k,n,m,len1,len2:longint;
a,b:array[0..maxn]of longint;
procedure init;
var
s1,s2,s:string;
i:longint;
begin
readln(s1);
readln(s2);
len1:=length(s1);
len2:=length(s2);
if (len2>len1) or (len1=len2) and (s1<s2) then
begin
write('-');
s:=s1;s1:=s2;s2:=s;
len1:=length(s1);
len2:=length(s2);
end;
for i:=1 to len1 do
a[maxn-len1+i]:=ord(s1[i])-ord('0');
for i:=1 to len2 do
b[maxn-len2+i]:=ord(s2[i])-ord('0');
end;
procedure add;
var
g,i:longint;
begin
g:=0;
for i:=maxn 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<maxn)and(a[i]=0) do inc(i);
for j:=i to maxn do
write(a[j]);
end;
begin
init;
add;
print;
end.
maxn=10000;
var
i,j,k,n,m,len1,len2:longint;
a,b:array[0..maxn]of longint;
procedure init;
var
s1,s2,s:string;
i:longint;
begin
readln(s1);
readln(s2);
len1:=length(s1);
len2:=length(s2);
if (len2>len1) or (len1=len2) and (s1<s2) then
begin
write('-');
s:=s1;s1:=s2;s2:=s;
len1:=length(s1);
len2:=length(s2);
end;
for i:=1 to len1 do
a[maxn-len1+i]:=ord(s1[i])-ord('0');
for i:=1 to len2 do
b[maxn-len2+i]:=ord(s2[i])-ord('0');
end;
procedure add;
var
g,i:longint;
begin
g:=0;
for i:=maxn 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<maxn)and(a[i]=0) do inc(i);
for j:=i to maxn do
write(a[j]);
end;
begin
init;
add;
print;
end.