#4223. 骑士捉双(Knight Fork)

骑士捉双(Knight Fork)

题目描述

xyxy坐标平面上,是否存在一个格点,它到两个给定格点(x1,y1)(x_1,y_1)(x2,y2)(x_2,y_2)的距离都恰好为5\sqrt{5}?

格点是指xxyy坐标都是整数的点。
两点(a,b)(a,b)(c,d)(c,d)之间的距离定义为欧几里得距离(ac)2+(bd)2\sqrt{(a-c)^2+(b-d)^2}
下图展示了以(0,0)(0,0)为中心,距离为5\sqrt{5}的格点(白色圆圈):

输入格式

输入x1x_1 y1y_1 x2x_2 y2y_2

输出格式

如果存在满足条件的格点,输出Yes;否则,输出No

样例

0 0 3 3
Yes
0 1 2 3
No
1000000000 1000000000 999999999 999999999
Yes

样例解释

【样例1说明】

  • (2,1)(2,1)(x1,y1)(x_1,y_1)的距离为(02)2+(01)2=5\sqrt{(0-2)^2+(0-1)^2}=\sqrt{5};
  • (2,1)(2,1)(x2,y2)(x_2,y_2)的距离为(32)2+(31)2=5\sqrt{(3-2)^2+(3-1)^2}=\sqrt{5};
  • (2,1)(2,1)是一个格点。

所以点(2,1)(2,1)满足条件。因此,应该输出Yes
同样可以断定点(1,2)(1,2)也满足条件。
【样例2说明】
没有格点满足条件,所以应该输出No
【样例3说明】
(109+1,1092)(10^9+1,10^9-2)和点(1092,109+1)(10^9-2,10^9+1)满足条件。

数据范围

  • 109x1,y1,x2,y2109-10^9 \leq x_1,y_1,x_2,y_2 \leq 10^9
  • (x1,y1)(x2,y2)(x_1,y_1) \neq (x_2,y_2)
  • 所有输入均为整数

来源

  • AtCoder ABC239C