社区讨论
一个大蒟蒻黄题求助
P1355神秘大三角参与者 2已保存回复 2
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 2 条
- 当前快照
- 1 份
- 快照标识符
- @mi86blr2
- 此快照首次捕获于
- 2025/11/21 09:20 4 个月前
- 此快照最后确认于
- 2025/11/21 09:20 4 个月前
CPP
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<algorithm>
using namespace std;
int x1,x2,x3,x4,y1,y2,y3,y4;
double sqrt(int x){
if(x==0)return 0;
double result=1,pre=0;
while(result!=pre){
pre=result;
result=(result+x/result)/2;
}
return result;
//本函数摘自https://blog.csdn.net/sinat_35678407/article/details/82764988
//做法:牛顿迭代法
}
double juli(int xa,int ya,int xb,int yb){
return sqrt((xb-xa)*(xb-xa)+(yb-ya)*(yb-ya));
}
bool dunjiao(){
int a=min((int)juli(x1,y1,x2,y2),min((int)juli(x1,y1,x3,y3),(int)juli(x2,y2,x3,y3)));
int c=max((int)juli(x1,y1,x2,y2),max((int)juli(x1,y1,x3,y3),(int)juli(x2,y2,x3,y3)));
int b=(int)juli(x1,y1,x2,y2)+(int)juli(x1,y1,x3,y3)+(int)juli(x2,y2,x3,y3)-a-c;
if(a*a+b*b<c*c)return true;
else return false;
}
void check4(){
bool f=false;
if(x4==x1&&y4==y1)f=true;
if(x4==x2&&y4==y2)f=true;
if(x4==x3&&y4==y3)f=true;
if(f){
cout<<4;
exit(0);
}
return;
}
void check3(){
double ab=juli(x1,y1,x2,y2),ac=juli(x1,y1,x3,y3),bc=juli(x2,y2,x3,y3);
double ad=juli(x1,y1,x4,y4),bd=juli(x2,y2,x4,y4),cd=juli(x3,y3,x4,y4);
//cout<<ab<<' '<<bc<<' '<<ac<<endl;
//cout<<ad<<' '<<bd<<' '<<cd<<endl;
if(ad+bd==ab||ad+cd==ac||bd+cd==bc){
cout<<3;
exit(0);
}
return;
}
void check2(){
bool f=false;
if(x4<=x1&&x4<=x2&&x4<=x3)f=true;
if(x4>=x1&&x4>=x2&&x4>=x3)f=true;
if(y4<=y1&&y4<=y2&&y4<=y3)f=true;
if(y4>=y1&&y4>=y2&&y4>=y3)f=true;
if(f||dunjiao()){
cout<<2;
exit(0);
}
return;
}
int read(){
int s=0,w=1;
char ch=getchar();
while(ch<'0'||ch>'9'){if(ch=='-')w=-1;ch=getchar();}
while(ch>='0'&&ch<='9') s=s*10+ch-'0',ch=getchar();
return s*w;
}
int main(){
x1=read();y1=read();
x2=read();y2=read();
x3=read();y3=read();
x4=read();y4=read();
check4();
check3();
check2();
if(!dunjiao())cout<<1;
else cout<<2;
return 0;
}
回复
共 2 条回复,欢迎继续交流。
正在加载回复...