var
m,n,b,a,c,k:integer;
i,j,d:qword;
flag1,flag2:boolean;
st,st1,str1,str2:string;
procedure judge;
begin
b:=1;
str(j,st);
m:=length (st);
k:=m mod 3;
for c:=1 to k do
write (st[c]);
if c<>m then write (,);
for c:=k+1 to m do
begin
write (st[c]);
if (b mod 3=0) and (c<>m) then write (,);
inc(b);
end;
end;
begin
readln (st);
if st[1]=- then
begin
flag1:=true;
delete(st,1,1);
end;
b:=pos(-,st);
if b<>0 then
begin
flag2:=true;
delete (st,b,1);
end;
b:=pos( ,st);
a:=length (st);
str1:=copy(st,1,b-1);
str2:=copy(st,b+1,a);
c:=1; d:=1;
b:=length (str1);
for m:=b downto 1 do
begin
for k:=1 to m-1 do
d:=d*10;
d:=d*(ord(st[c])-ord(0));
inc(i,d);
inc(c);
d:=1;
end;
c:=1;
b:=length (str2);
for n:=b downto 1 do
begin
for k:=1 to n-1 do d:=d*10;
d:=d*(ord(str2[c])-ord(0));
inc(j,d);
inc(c);
d:=1;
end;
if (flag1=true)and (flag2=false) then
begin
write (-);
j:=i+j;
judge;
end;
if (flag2=true)and (flag1=false) then begin j:=i+j; judge; end;
if (flag1=true)and (flag2=true) then
if i>j then
begin
write (-);
j:=j-i;
judge;
end
else
begin
j:=j-i;
judge;
end;
if (flag1=false) and (flag2=false) then
if i<j then
begin
write (-);
j:=j-i;
judge;
end
else
begin
j:=i-j;
judge;
end;
end.
var s,s1,s2:string;
la,lb,i,j,k,n:integer; k1,k2:boolean;
a,b,c,d:array[1..200] of integer;
procedure gj;
var i,j,m,n:integer;
begin
if la<lb then la:=lb;
for i:=1 to la do
begin
a[i]:=a[i]+b[i];
a[i+1]:=a[i+1]+a[i] div 10;
a[i]:=a[i] mod 10;
end;
if a[la+1]=1 then inc(la);
m:=0;
for i:=1 to la do
begin
if (i mod 3=1) and (i>3) then begin inc(m); d[m]:=96; end;
inc(m); d[m]:=a[i];
end; la:=m;
for i:=1 to la do
c[i]:=d[la-i+1];
end;
procedure gjj;
var i,j,m,n:integer; t:array[1..200] of integer;
begin
if la<lb then begin t:=a; a:=b; b:=t; n:=la; la:=lb; lb:=n; end;
if la=lb then
if s1<s2 then begin t:=a; a:=b; b:=t; n:=la; la:=lb; lb:=n; end;
for i:=1 to la do
begin
if a[i]<b[i] then begin
dec(a[i+1]); a[i]:=a[i]+10-b[i]; end
else a[i]:=a[i]-b[i];
end;
while a[la]=0 do dec(la);
m:=0;
for i:=1 to la do
begin
if (i mod 3=1) and (i>3) then begin inc(m); d[m]:=96; end;
inc(m); d[m]:=a[i];
end;
la:=m;
for i:=1 to la do
c[i]:=d[la-i+1];
end;
begin
readln(s);
s1:=copy(s,1,pos( ,s)-1);
delete(s,1,pos( ,s));
s2:=s;
if s1=s2 then begin writeln(0); halt; end;
if s1[1]=- then begin k1:=true; delete(s1,1,1); end;
if s2[1]=- then begin k2:=true; delete(s2,1,1); end;
for i:=1 to length(s1) do
a[i]:=ord(s1[length(s1)-i+1])-48;
for i:=1 to length(s2) do
b[i]:=ord(s2[length(s2)-i+1])-48;
la:=length(s1);
lb:=length(s2);
if (not k1) and (k2) then
begin
gj;
for i:=1 to la do
begin
if c[i]=96 then write(,) else
write(c[i]);
end;
end;
if (k1) and (not k2) then
begin write(-);
gj;
for i:=1 to la do
begin
if c[i]=96 then write(,) else
write(c[i]);
end;
end;
if (not k1) and (not k2) then
begin
gjj;
if (la<lb) or ((la=lb) and (s1<s2)) then write(-);
for i:=1 to la do
begin
if c[i]=96 then write(,) else
write(c[i]);
end;
end;
if (k1) and (k2) then
begin
gjj;
if (la>lb) or ((la=lb) and (s1>s2)) then write(-);
for i:=1 to la do
begin
if c[i]=96 then write(,) else
write(c[i]);
end;
end;
end.
100多行的高精度~~~
var
i,j:longint;
m,n:int64;
k:qword;
s:string;
begin
readln(m,n);
if m<n then
begin
write(’-’);
k:=n-m;
end
else
k:=m-n;
str(k,s);
for i:=length(s) downto 1 do
begin
inc(j);
if j mod 3=0 then
insert(’,’,s,i);
end;
writeln(s);
end.