牛客14605 画三角

链接:https://ac.nowcoder.com/acm/problem/14605
来源:牛客网

时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 131072K,其他语言262144K
64bit IO Format: %lld

题目描述

小学时,JYM和XJ刚刚学习了三角形,XJ提议把眼睛闭起来在纸上画三角形,巩固知识。为了让三角形更好地表示,JYM去拿了一张坐标纸(不要问为什么小学的他就有坐标纸),坐标纸的范围是[-1000,1000]。于是,XJ就在坐标纸上画了N个三角形(当然他也可能画了一条直线出来)。因为小学的他们还没有学习小数,所以所有的三角形顶点的坐标,都被JYM近似成了整数点。现在,JYM和XJ想知道这些三角形有没有将坐标原点包含在里面,请你编写程序解决这个问题。

输入描述:

一个整数N(N<1000),表示有N个三角形。接下来每一行有两个整数x(-1000<=x<=1000)和y(-1000<=y<=1000),表示一个点的坐标;每三行的三个点构成一个三角形。

输出描述:

为每个三角形输出一个YES或者NO。YES表示三角形包含了坐标原点,NO表示三角没有包含坐标原点或者坐标原点在三角形的边界上或者当前的三个点不能构成三角形。

在这里插入图片描述

N = int(input())

def Area(x1,y1,x2,y2,x3,y3):
    return abs(x1 * y2 - x2 * y1 + x2 * y3 - x3 * y2 + x3 * y1 - x1 * y3) / 2

for _ in range(N):
    a, b, c = [list(map(int, input().split())) for _ in range(3)]
    x1, y1, x2, y2, x3, y3 = a[0], a[1], b[0], b[1], c[0], c[1]
    # 面积
    area = Area(x1, y1, x2, y2, x3, y3)
    # 分别和原点构成的三角形面积
    area1 = Area(x1, y1, x2, y2, 0, 0)
    area2 = Area(x1, y1, x3, y3, 0, 0)
    area3 = Area(x2, y2, x3, y3, 0, 0)
    if area != (area1 + area2 + area3):
        # 不能构成三角形或没有包含坐标原点
        print('NO')
    elif area1 == 0 or area2 == 0 or area3 == 0:
        # 原点在边界上
        print('NO')
    else:
        print('YES')

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值