• 1265 四点共面


    基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题
    给出三维空间上的四个点(点与点的位置均不相同),判断这4个点是否在同一个平面内(4点共线也算共面)。如果共面,输出"Yes",否则输出"No"。
    Input
    第1行:一个数T,表示输入的测试数量(1 <= T <= 1000)
    第2 - 4T + 1行:每行4行表示一组数据,每行3个数,x, y, z, 表示该点的位置坐标(-1000 <= x, y, z <= 1000)。
    Output
    输出共T行,如果共面输出"Yes",否则输出"No"。
    Input示例
    1
    1 2 0
    2 3 0
    4 0 0
    0 0 0
    Output示例
    Yes


    //开始做几何题,有点难啊,四点,做成 3 个向量的话,必须是线性相关的,才会共面
    线性相关,Xa = k1*Xb + k2*Xc ,存在一组,不全为 0 的 k1,k2,使之满足
     1 #include <bits/stdc++.h>
     2 using namespace std;
     3 #define LL long long
     4 #define MOD 1000000007
     5 
     6 struct Point
     7 {
     8     int x,y,z;
     9 }pt[5];
    10 
    11 int main()
    12 {
    13     int T;
    14     scanf("%d",&T);
    15     while (T--)
    16     {
    17         for (int i=1;i<=4;i++)
    18             scanf("%d%d%d",&pt[i].x,&pt[i].y,&pt[i].z);
    19         Point xa,xb,xc;
    20         xa.x = pt[1].x-pt[2].x; xa.y = pt[1].y-pt[2].y; xa.z = pt[1].z-pt[2].z;
    21         xb.x = pt[2].x-pt[3].x; xb.y = pt[2].y-pt[3].y; xb.z = pt[2].z-pt[3].z;
    22         xc.x = pt[3].x-pt[4].x; xc.y = pt[3].y-pt[4].y; xc.z = pt[3].z-pt[4].z;
    23         int val = xa.x*xb.y*xc.z + xa.y*xb.z*xc.x + xa.z*xb.x*xc.y;
    24         val -= xa.z*xb.y*xc.x + xa.y*xb.x*xc.z + xa.x*xb.z*xc.y;
    25         
    26         if (val)
    27             printf("No
    ");
    28         else
    29             printf("Yes
    ");
    30     }
    31     return 0;
    32 }
    View Code



  • 相关阅读:
    css3skew
    github如何使用
    互联网历史
    html知识点
    人类的终极目标是什么?
    如何提高自我学习能力?
    为什么富人越富,穷人越穷?
    关于游戏小说与学习知识的不同
    关于写代码的一点体会
    监听多行文本框字数输入
  • 原文地址:https://www.cnblogs.com/haoabcd2010/p/7582368.html
Copyright © 2020-2023  润新知