Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- program NUMBER1;
- {$APPTYPE CONSOLE}
- uses
- SysUtils,
- Math;
- var
- s1, s2, s, sw: string;
- i, asize, bsize, per, j : integer;
- a, b, sum: array [1..10001] of integer;
- x, y, c, plus: boolean;
- begin
- readln (s);
- i := 1;
- x := true;
- y := true;
- while (ord(s[i]) - 48 < 0) or (ord(s[i]) - 48 > 9) do begin
- if (s[i] = '-') then
- x := false;
- inc(i);
- end;
- while (ord(s[i]) - 48 >= 0) and (ord(s[i]) - 48 <= 9) do begin
- s1 := s1 + s[i];
- inc (i);
- end;
- while i <= length(s) do begin
- if (ord(s[i]) - 48 >= 0) and (ord(s[i]) - 48 <= 9) then
- s2 := s2 + s[i];
- if (s[i] = '-') then
- y := false;
- inc (i);
- end;
- c := true;
- if (length(s1) = length(s2)) then begin
- for i := 1 to length (s1) do begin
- if (s1[i] > s2[i]) then begin
- c := true;
- break;
- end
- else if (s1[i] < s2[i]) then begin
- c := false;
- break;
- end;
- end;
- end
- else if (length(s1) < length(s2))then
- c := false;
- if (c = false) then begin
- sw := s1;
- s1 := s2;
- s2 := sw;
- end;
- plus := true;
- if ((x = false) and (y = true) and (c = true) or (x = true) and (y = false) and (c = false) or (x = false) and (y = false)) then
- plus := false;
- asize := 10001;
- bsize := 10001;
- for i := length (s1) downto 1 do begin
- dec (asize);
- a[asize] := ord(s1[i]) - 48;
- end;
- for i := length (s2) downto 1 do begin
- dec (bsize);
- b[bsize] := ord(s2[i]) - 48;
- end;
- if (y = true) and (x = true) or (x = false) and (y = false) then begin
- per := 0;
- for i := 10000 downto 1 do begin
- per := per + a[i] + b[i];
- sum [i] := per mod 10;
- per := per div 10;
- end;
- end
- else begin
- per := 0;
- for i := 10000 downto 1 do begin
- per := per + a[i] - b[i] + 10;
- sum[i] := per mod 10;
- if (per < 10) then
- per := -1
- else
- per := 0;
- end;
- end;
- for i := 1 to 10000 do begin
- if (sum[i] = 0) then
- inc (j)
- else
- break;
- end;
- if (j >= 10000) then begin
- writeln (0);
- exit;
- end;
- if (plus = false) then
- write('-');
- j := 1;
- while (sum[j] = 0) do begin
- inc (j);
- end;
- for i := j to 10000 do begin
- write(sum[i]);
- end;
- readln;
- readln;
- end.
RAW Paste Data