题目描述
高精度减法
输入输出格式
输入格式:
两个数(第二个可能比第一个大)
输出格式:
结果(是负数要输出负号)
输入输出样例
输入样例#1:
2
1
输出样例#1:
1
说明
这也没什么好说的,没什么特别的要求,就是一个普普通通的高精减。
程序如下:
const
max=500;
var
s:integer;
a,b:array[1..max] of integer;
f:boolean;
procedure init;
var
i:integer;
s,s1,s2:string;
l1,l2,l:integer;
begin
f:=true;
readln(s1);
readln(s2);
l1:=length(s1);
l2:=length(s2);
if (l1<l2) or (l1=l2) and (s1<s2) then
begin
s:=s1; s1:=s2; s2:=s;
l:=l1; l1:=l2; l2:=l;
f:=false;
end;
for i:=1 to l1 do
a[max-l1+i]:=ord(s1[i])-48;
for i:=1 to l2 do
b[max-l2+i]:=ord(s2[i])-48;
end;
procedure main;
var
i,g:integer;
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]:=10+a[i]-b[i]-g;
g:=1;
end;
end;
procedure print;
var
i,j:integer;
begin
if not f then write('-');
i:=1;
while (a[i]=0)and(i<max) do inc(i);
for j:=i to max do
write(a[j]);
end;
begin
init;
main;
print;
end.