[R28A]灯塔 - 代码源竞赛平台
时空限制
1S/512M
题目描述
在一个无限大的二维坐标网格上,原点 (0,0) 有一个神奇的灯塔。这个灯塔可以向任意方向发射出笔直的光线。
每一束光线都可以由它穿过的另一个点来唯一确定。例如,灯塔发射了一束光线,它穿过了点 (3,4),那么这束光线就是一条从原点 (0,0) 出发,经过点 (3,4) 并无限延伸的直线。
现在,灯塔同时发射出两束光线。第一束光线穿过了点 (x1,y1),第二束光线穿过了点 (x2,y2)。我们想知道,这两束光线在原点相交时,是否形成了一个直角?
为了判断这两条线是否形成了直角,数学家们发现了一个神奇的公式:
假设第一束光线穿过点 (x1,y1),第二束光线穿过点 (x2,y2)。我们只需要做一个简单的计算:
x1×x2+y1×y2
如果这个算式的结果等于 0,那么这两束光线就形成了直角。如果结果不是 0,那它们就没有形成直角。
你的任务是编写一个程序,来帮助判断这两束来自灯塔的光线形成了直角。
格式
输入格式
本题包含多组测试数据。
第一行包含一个整数 T,表示有 T 组测试数据。
接下来 T 行,每行包含四个整数 x1,y1,x2,y2,分别代表第一束光线穿过的点 (x1,y1) 和第二束光线穿过的点 (x2,y2)。
输出格式
对于每组测试数据,输出一行。如果两条光线形成的角是直角的,输出 Yes,否则输出 No。
样例
样例输入 #1
2
3 4 -4 3
2 3 4 5
样例输出 #1
Yes
No
样例解释 #1
对于第一组数据,第一束光线穿过点 (3,4),第二束穿过点 (−4,3)。
根据公式计算:3×(−4)+4×3=−12+12=0。
结果是 0,所以它们形成了直角,输出 Yes。
对于第二组数据,第一束光线穿过点 (2,3),第二束穿过点 (4,5)。
根据公式计算:2×4+3×5=8+15=23。
结果不是 0,所以它们没有形成直角,输出 No。
数据规模
对于 100% 的数据,1≤T≤100,−109≤x1,y1,x2,y2≤109,且 (x1,y1),(x2,y2) 均不为 (0,0)。