标签:acm算法 algorithm amp iostream
2 0 0 0 0 1 0 1 0 0 1 1 0 1 1 1 2 2 2 3 3 3 4 4 4
Case #1: Yes Case #2: No
#include <cstdio>
#include <algorithm>
#include <map>
#include <cstring>
#include <cmath>
#include <iostream>
using namespace std;
#define lson l , m , rt << 1
#define rson m + 1 , r , rt << 1 | 1
#define LL __int64
typedef long long ll;
#define PI 3.1415926
#define eps 1e-7
double dist(double a,double b,double c,double a1,double b1,double c1)
{
return sqrt((a-a1)*(a-a1)+(b-b1)*(b-b1)+(c-c1)*(c-c1));
}
int main()
{
int t,i,j,k,p;
int Case=0;
cin>>t;
while(t--)
{
double x1[4];
double x2[4];
double x3[4];
double x4[4];
double x,y,z;
cin>>x1[0]>>x1[1]>>x1[2]>>x2[0]>>x2[1]>>x2[2]>>x3[0]>>x3[1]>>x3[2]>>x4[0]>>x4[1]>>x4[2];
int flag=0;
//枚举x1的三种邻点情况。
if(((x1[0]-x3[0])*(x1[0]-x2[0])+(x1[1]-x3[1])*(x1[1]-x2[1])+(x1[2]-x3[2])*(x1[2]-x2[2]))==0&&dist(x1[0],x1[1],x1[2],x2[0],x2[1],x2[2])==dist(x1[0],x1[1],x1[2],x3[0],x3[1],x3[2]))
{
x=x2[0]+x3[0]-x1[0];
y=x2[1]+x3[1]-x1[1];
z=x2[2]+x3[2]-x1[2];
if(x==x4[0]&&y==x4[1]&&z==x4[2])
flag=1;
}
if(((x1[0]-x4[0])*(x1[0]-x2[0])+(x1[1]-x4[1])*(x1[1]-x2[1])+(x1[2]-x4[2])*(x1[2]-x2[2]))==0&&dist(x1[0],x1[1],x1[2],x2[0],x2[1],x2[2])==dist(x1[0],x1[1],x1[2],x4[0],x4[1],x4[2]))
{
x=x2[0]+x4[0]-x1[0];
y=x2[1]+x4[1]-x1[1];
z=x2[2]+x4[2]-x1[2];
if(x==x3[0]&&y==x3[1]&&z==x3[2])
flag=1;
}
if(((x1[0]-x4[0])*(x1[0]-x3[0])+(x1[1]-x4[1])*(x1[1]-x3[1])+(x1[2]-x4[2])*(x1[2]-x3[2]))==0&&dist(x1[0],x1[1],x1[2],x3[0],x3[1],x3[2])==dist(x1[0],x1[1],x1[2],x4[0],x4[1],x4[2]))
{
x=x3[0]+x4[0]-x1[0];
y=x3[1]+x4[1]-x1[1];
z=x3[2]+x4[2]-x1[2];
if(x==x2[0]&&y==x2[1]&&z==x2[2])
flag=1;
}
cout<<"Case #"<<++Case<<":"<<" ";
if(flag)
cout<<"Yes"<<endl;
else
cout<<"No"<<endl;
}
return 0;
}
标签:acm算法 algorithm amp iostream
原文地址:http://blog.csdn.net/sky_miange/article/details/45127009