begin
readln(x,y);
if x<y then begin
tu:=x;x:=y;y:=tu;end;
repeat
inc(t);
if s[t]=1 then else
begin
inc(c);inc(a,t);b:=a+c;
s[a]:=1;s[b]:=1;
end;
until (a=x)or(b=x);
if (a=y)and(b=x)then writeln('N')
else writeln('Y');end.
var
m,n,i,j:longint;
a:array[0..1000000]of boolean;
pr1,pr2,now1,now2:longint;
procedure swap(var m,n:longint);
var s:longint;
begin
s:=m;m:=n;n:=s;
end;
procedure end1;
begin
write('N');
halt;
end;
procedure end2;
begin
write('Y');
halt;
end;
begin
read(m,n);
if m>n then swap(m,n);
if m=0 then end2;
if(m=n)then end2;{zhu yi}
if m=1 then if n=2 then end1
else end2;
if m=2 then end1;
if m=n then end2;
fillchar(a,sizeof(a),true);
a[0]:=false;a[1]:=false;a[2]:=false;
i:=1;
pr1:=1;pr2:=2;
repeat
while a[i]=false do inc(i);
now1:=i;
now2:=now1-pr1+1+pr2;
a[now1]:=false;a[now2]:=false;
pr1:=now1;pr2:=now2;
until now1=m;
if now2=n then end1;
end2;
end.
我的程序