题目描述:
1.给定t组测试数据
2.每行给一个点,每三个点构成一个三角形(不一定是三角形,可能是直线)
求给的三个点构成的三角形是否包含原点,如果是输出YES ,如果没有包含原点(边上也不算包含),或者不能构成三角形,输出NO
思路:
本题还是利用差积来解决
1.我们知道从原点引出的向量就等于该点的坐标,因此可以把给定的三个点都看成是向量。
俩俩向量求差积,如果他们三的值都为正或都为负,说明包含原点,否则不包含原点。
代码:
#include <cstdio> int T; int x1,y1,x2,y2,x3,y3; long long a,b,c; int main() { scanf("%d",&T); while(T--) { scanf("%d%d%d%d%d%d",&x1,&y1,&x2,&y2,&x3,&y3); a=x1*y2-x2*y1; b=x2*y3-x3*y2; c=x3*y1-x1*y3; if(a*b>0 && b*c>0) printf("YES\n"); else printf("NO\n"); } return 0; }
全部评论
(0) 回帖