首页 > 代码库 > 51nod1265 四点共面
51nod1265 四点共面
题目链接:51nod 1265 四点共面
四个点构成的三个向量a,b,c共面的充要条件是存在不全为零的实数x,y,z满足x*a+y*b+z*c=0,然后想到线代了..
其实就是三个向量的混合积为0:(a,b,c)=(a×b)·c=
|ax ay az|
|bx by bz| = ax*by*cz+ay*bz*cx+bx*cy*az-az*by*cx-ay*bx*cz-ax*bz*cy = 0;
|cx cy cz|
看到行列式我就想到线性代数快考试了,然而我还没预习~~~(>_<)~~~
1 #include<cstdio> 2 #include<cstring> 3 #include<algorithm> 4 using namespace std; 5 struct Point{ 6 int x,y,z; 7 }p[3]; 8 int main(){ 9 int t, i, k; 10 int x,y,z; 11 int ax,ay,az,bx,by,bz,cx,cy,cz; 12 scanf("%d", &t); 13 for(k = 1; k <= t; ++k){ 14 scanf("%d%d%d",&x,&y,&z); 15 for(i = 0; i < 3; ++i) 16 scanf("%d%d%d",&p[i].x,&p[i].y,&p[i].z); 17 ax=p[0].x-x; ay=p[0].y-y; az=p[0].z-z; 18 bx=p[1].x-x; by=p[1].y-y; bz=p[1].z-z; 19 cx=p[2].x-x; cy=p[2].y-y; cz=p[2].z-z; 20 if(ax*by*cz+ay*bz*cx+bx*cy*az-az*by*cx-ay*bx*cz-ax*bz*cy == 0) 21 puts("Yes"); 22 else puts("No"); 23 } 24 return 0; 25 }
51nod1265 四点共面
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。