链接:登录—专业IT笔试面试备考平台_牛客网
来源:牛客网
空间限制:C/C++ 262144K,其他语言524288K
64bit IO Format: %lld
题目描述
Rain_w gives you two different points P(x1,y1),Q(x2,y2)P(x_1,y_1),Q(x_2,y_2)P(x1,y1),Q(x2,y2) and a line l:Ax+By+C=0l:Ax+By+C=0l:Ax+By+C=0 . She wants to know if PPP and QQQ are on the same side of the line lll . Please help her.输入描述:
The input has multiple test cases.
The first line contains a single integer T(1≤T≤104)T(1\leq T\leq 10^4)T(1≤T≤104) - the number of test case.
Next TTT lines, each line contains 7 integers x1,y1,x2,y2,A,B,C(−109≤x1,y1,x2,y2,A,B,C≤109)x_1,y_1,x_2,y_2,A,B,C(-10^9\leq x_1,y_1,x_2,y_2,A,B,C\leq 10^9)x1,y1,x2,y2,A,B,C(−109≤x1,y1,x2,y2,A,B,C≤109) separated by space. It is guaranteed that A2+B2≠0,(x1,y1)≠(x2,y2)A^2+B^2\neq 0,(x_1,y_1)\neq (x_2,y_2)A2+B2=0,(x1,y1)=(x2,y2),and P,QP,QP,Q are not on the line lll.
输出描述:
The output should contains TTT lines. Each line should be a string "Yes" if P,QP,QP,Q on the same side of the line lll, or a string "No" if P,QP,QP,Q on the different side of the line lll.示例1
输入
复制2 1 1 -1 -1 1 1 0 1 1 2 2 1 1 02 1 1 -1 -1 1 1 0 1 1 2 2 1 1 0
输出
复制No YesNo Yes
//签到题
#include<stdio.h>
#include<math.h>
int main()
{
int t;
scanf("%d", &t);
while (t--)
{
long long x1, y1, x2, y2, a, b, c;
double p, q;
scanf("%lld %lld %lld %lld %lld %lld %lld", &x1, &y1, &x2, &y2, &a, &b, &c);
if (b == 0)
{
double o = -1 * c * 1.0 / a;
if (x1 > o && x2 > o || x1 < o && x2 < o)
printf("Yes");
else
printf("No");
}
else
{
p = -1 * (a * 1.0 / b);
q = -1 * (c * 1.0 / b);
double lowy1 = p * x1 + q;
double lowy2 = p * x2 + q;
if (lowy1 > y1 && lowy2 > y2 || lowy1 < y1 && lowy2 < y2)
printf("Yes");
else
printf("No");
}
if (t > 0)
printf("\n");
}
return 0;
}