1265 四點共面
基準時間限制:1 秒 空間限制:131072 kb 分值: 0
難度:基礎題
給出三維空間上的四個點(點與點的位置均不相同),判斷這4個點是否在同乙個平面內(4點共線也算共面)。如果共面,輸出"yes",否則輸出"no"。
input
第1行:乙個數t,表示輸入的測試數量(1 <= t <= 1000)output第2 - 4t + 1行:每行4行表示一組資料,每行3個數,x, y, z, 表示該點的位置座標(-1000 <= x, y, z <= 1000)。
輸出共t行,如果共面輸出"yes",否則輸出"no"。input示例
1output示例1 2 0
2 3 0
4 0 0
0 0 0
yes程式設計之美.....
判斷四點共面可以用向量的方法,首先,我們假設a,b,c,d四點共面,我們知道,三個向量可能共線,可能共面,也可能在同乙個三維空間內,如果學過線性代數的話就會知道,三個向量如果線性相關,則至少存在乙個向量能夠被其餘的兩個向量線性表示,這就意味著這三個向量只能在乙個平面內或者在一條直線上了,如此便證明了三個向量共面,我們設 ba,ca,da三個向量,如果這三個向量線性相關便能證明 a,b,c,d四點共面了,那麼如果三個向量線性相關,那麼必有不全為0的三個數 i,j,k使得 i*ba+j*ca+k*da=0,此齊次方程組有非零解,則其係數行列式的值一定等於0(根據克拉默法則),即
#include using namespace std;
struct pot
a,b,c,d;
struct vec
ba,ca,da;
double judge(pot a, pot b, pot c, pot d)
int main()
{ int t;
cin>>t;
while(t--)
{ cin>>a.x>>a.y>>a.z>>b.x>>b.y>>b.z>>c.x>>c.y>>c.z>>d.x>>d.y>>d.z;
if(judge(a,b,c,d))
{ cout<
51nod1265四點共面
原題鏈結 四點共面即以某點指向其它三點的向量的混合積為0 如下 include include include include include include include include include include include include define ll long long us...
51Nod 1265 四點共面
1265 四點共面 基準時間限制 1 秒 空間限制 131072 kb 分值 0 難度 基礎題 給出三維空間上的四個點 點與點的位置均不相同 判斷這4個點是否在同乙個平面內 4點共線也算共面 如果共面,輸出 yes 否則輸出 no input 第1行 乙個數t,表示輸入的測試數量 1 t 1000 ...
51nod1265 四點共面
傳送門 點我 給出三維空間上的四個點 點與點的位置均不相同 判斷這4個點是否在同乙個平面內 4點共線也算共面 如果共面,輸出 yes 否則輸出 no input 第1行 乙個數t,表示輸入的測試數量 1 t 1000 第2 4t 1行 每行4行表示一組資料,每行3個數,x,y,z,表示該點的位置座標...