51Nod 1265 四点共面

给出三维空间上的四个点(点与点的位置均不相同),判断这4个点是否在同一个平面内(4点共线也算共面)。如果共面,输出"Yes",否则输出"No"。

输入

第1行:一个数T,表示输入的测试数量(1 <= T <= 1000)
第2 - 4T + 1行:每行4行表示一组数据,每行3个数,x, y, z, 表示该点的位置坐标(-1000 <= x, y, z <= 1000)。

输出

输出共T行,如果共面输出"Yes",否则输出"No"。

输入样例

1
1 2 0
2 3 0
4 0 0
0 0 0

输出样例

Yes

四个点,形成三个向量,判断三个向量的行列式是否为零即可
 1 #include <iostream>
 2 #include <algorithm>
 3 #include <cmath>
 4 #include <cstdio>
 5 using namespace std;
 6 int t;
 7 int x[4],y[4],z[4];
 8 int main()
 9 {
10     cin>>t;
11     while(t--){
12         for(int i=0;i<4;i++) cin>>x[i]>>y[i]>>z[i];
13         for(int i=1;i<4;i++){
14             x[i]-=x[0],y[i]-=y[0],z[i]-=z[0];
15         }
16         if(x[1]*y[2]*z[3]+x[2]*y[3]*z[1]+x[3]*y[1]*z[2]-x[1]*y[3]*z[2]-x[2]*y[1]*z[3]-x[3]*y[2]*z[1]==0) cout<<"Yes"<<endl;
17         else cout<<"No"<<endl;
18     }
19     return 0;
20 }
原文地址:https://www.cnblogs.com/shixinzei/p/10638109.html