51nod 1265 四点共面

题目链接:传送门
给出四个点,看看是否共面。
因为三个点能确定一个平面,所以先把前三个点构成一个平面,看看第四个在不在就行了
三点确定一个平面的公式如下:
a(x-x1)+b(y-y1)+c(z-z1)=0
a=(y2-y1)(z3-z1)-(y3-y1)(z2-z1)
b=(z2-z1)(x3-x1)-(z3-z1)(x2-x1)
c=(x3-x1)(y3-y1)-(x2-x1)(y2-y1)
代码如下:

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
int x[10],y[10],z[10];
int main(){
    int t,i,j,n,m;
    int x1,y1,z1,x2,y2,z2,x3,y3,z3,x4,y4,z4;
    cin>>t;
    while(t--){
           cin>>x1>>y1>>z1;
           cin>>x2>>y2>>z2;
           cin>>x3>>y3>>z3;
           cin>>x4>>y4>>z4;
           int a=(y2-y1)*(z3-z1)-(y3-y1)*(z2-z1);
           int b=(z2-z1)*(x3-x1)-(z3-z1)*(x2-x1);
           int c=(x2-x1)*(y3-y1)-(x3-x1)*(y2-y1);

            if(a*(x4-x1)+b*(y4-y1)+c*(z4-z1)==0) cout<<"Yes"<<endl;
            else cout<<"No"<<endl;
    }
    return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值