给出两个正整数A和B,计算A-B的值。保证A和B的位数不超过500位。
输入描述 Input Description
读入两个用空格隔开的正整数
输出描述 Output Description
输出A-B的值
样例输入 Sample Input
3 12
样例输出 Sample Output
-9
数据范围及提示 Data Size & Hint
两个正整数的位数不超过500位
代码:
var
a,b,c:array [0..500] of longint;
len,temp,i,j,k:longint;
flag:boolean;
s,s1,s2:ansistring;
begin
readln(s);
temp:=1;
for i:=1 to length(s) do
if s[i]<>' ' then
s1:=s1+s[i]
else
break;
for j:=i+1 to length(s) do
s2:=s2+s[j];
i:=length(s1);
j:=length(s2);
if i>j then
begin
len:=i;
flag:=true;
end
else
begin
len:=j;
flag:=false;
end;
for k:=len downto 1 do
begin
if i>0 then
begin
a[k]:=ord(s1[i])-48;
dec(i);
end
else
a[k]:=0;
if j>0 then
begin
b[k]:=ord(s2[j])-48;
dec(j);
end
else
b[k]:=0;
if flag then
c[k]:=a[k]-b[k]
else
c[k]:=b[k]-a[k];
end;
for k:=len downto 1 do
if c[k]<0 then
begin
c[k]:=c[k]+10;
dec(c[k-1]);
end;
if not flag then
write('-');
for k:=1 to len do
if c[k]=0 then
inc(temp)
else
break;
for k:=temp to len do
write(c[k]);
end.
本文介绍了一种处理大数减法的算法实现方法,通过将字符串形式的大数转换为数组,并逐位进行减法运算来计算两个大数之间的差值。文章详细展示了算法流程,包括如何处理借位等情况。

被折叠的 条评论
为什么被折叠?



