codevs 高精度減法 3115

題目描述 Description
給出兩個正整數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.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章