2 条题解
-
1
#include <iostream> #include <cmath> using namespace std; const double eps=0.00001; int _x1,_y1,_x2,_y2,_x3,_y3,_x4,_y4; double ts,d1,d2,d3; char a; inline double dis(int _x1,int _y1,int _x2,int _y2){ return sqrt((_x2-_x1)*(_x2-_x1)+(_y2-_y1)*(_y2-_y1)); } inline double S(double a,double b,double c){ double p=(a+b+c)/2; return sqrt(p*(p-a)*(p-b)*(p-c)); } inline double _S(int _x1,int _y1,int _x2,int _y2,int _x3,int _y3){ return S(dis(_x1,_y1,_x2,_y2),dis(_x2,_y2,_x3,_y3),dis(_x3,_y3,_x1,_y1)); } int main(void){ cin>>a>>_x1>>a>>_y1>>a>>a>>_x2>>a>>_y2>>a>>a>>_x3>>a>>_y3>>a>>a>>_x4>>a>>_y4>>a; if((_x4==_x1&&_y4==_y1)||(_x4==_x2&&_y4==_y2)||(_x4==_x3&&_y4==_y3)){ cout<<"4"; return 0; } d1=dis(_x1,_y1,_x2,_y2); d2=dis(_x2,_y2,_x3,_y3); d3=dis(_x1,_y1,_x3,_y3); if(fabs(dis(_x4,_y4,_x1,_y1)+dis(_x4,_y4,_x2,_y2)-d1)<=eps||fabs(dis(_x4,_y4,_x2,_y2)+dis(_x4,_y4,_x3,_y3)-d2)<=eps||fabs(dis(_x4,_y4,_x1,_y1)+dis(_x4,_y4,_x3,_y3)-d3)<=eps){ cout<<"3"; return 0; } ts=_S(_x1,_y1,_x2,_y2,_x3,_y3); if(fabs(_S(_x1,_y1,_x2,_y2,_x4,_y4)+_S(_x2,_y2,_x3,_y3,_x4,_y4)+_S(_x1,_y1,_x3,_y3,_x4,_y4)-ts)<=eps){ cout<<"1"; return 0; }else{ cout<<"2"; return 0; } }
-
0
#include<iostream> #include<cmath> using namespace std; int s,t,u,v,w,x,y,z; char ch; double m(int a,int b,int c,int d,int e,int f)//海伦公式算三角形面积 { double x,y,z,p; x=sqrt((a-c)*(a-c)+(b-d)*(b-d)); y=sqrt((a-e)*(a-e)+(b-f)*(b-f)); z=sqrt((c-e)*(c-e)+(d-f)*(d-f)); p=(x+y+z)/2; return sqrt(p*(p-x)*(p-y)*(p-z)); } int main() { cin>>ch>>s>>ch>>t>>ch;//点A cin>>ch>>u>>ch>>v>>ch;//点B cin>>ch>>w>>ch>>x>>ch;//点C cin>>ch>>y>>ch>>z>>ch;//点D double abc,abd,acd,bcd;//几个三角形的面积 abc=(int)m(s,t,u,v,w,x)*100,abd=(int)m(s,t,u,v,y,z)*100,acd=(int)m(s,t,w,x,y,z)*100,bcd=(int)m(u,v,w,x,y,z)*100;//吐槽本题精度问题= = if((s==y&&t==z)||(u==y&&v==z)||(w==y&&x==z)) { cout<<4; //4 return 0; } if(abd+acd+bcd>abc) { cout<<2; //2 return 0; } else { if(!abc||!abd||!acd||!bcd) { cout<<3; //判断3 return 0; } cout<<1;//1 } }
- 1
信息
- ID
- 356
- 时间
- 1000ms
- 内存
- 125MiB
- 难度
- 3
- 标签
- 递交数
- 3
- 已通过
- 2
- 上传者