天天看点

[蓝桥杯2018决赛]三角形面积

Submit clink~

[蓝桥杯2018决赛]三角形面积

给出三点坐标,求面积!

法一:通过余弦定理   

[蓝桥杯2018决赛]三角形面积

  、正弦定理 

[蓝桥杯2018决赛]三角形面积

 求面积~ 

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn=1e5+10;
#define inf 0x3f3f3f3f
#define mem(a,b) memset(a,b,sizeof(a))

double a[10][10];
int main() {
//	for(int i=1; i<=3; i++)
//		cin>>a[i][0]>>a[i][1];
	a[1][0]=2.3,a[1][1]=2.5;
	a[2][0]=6.4,a[2][1]=3.1;
	a[3][0]=5.1,a[3][1]=7.2;
	double q1=pow(fabs(a[1][0]-a[2][0]),2)+pow(fabs(a[1][1]-a[2][1]),2);
	double q2=pow(fabs(a[1][0]-a[3][0]),2)+pow(fabs(a[1][1]-a[3][1]),2);
	double q3=pow(fabs(a[2][0]-a[3][0]),2)+pow(fabs(a[2][1]-a[3][1]),2);
//	cout<<q1<<" "<<q2<<" "<<q3<<endl;
//	cout<<sqrt(q1)<<" "<<sqrt(q2)<<" "<<sqrt(q3)<<endl;
	double c=(q1+q2-q3)/(2.0*sqrt(q1)*sqrt(q2));
	double C=acos(c);
	double S=0.5*sqrt(q1)*sqrt(q2)*sin(C);
	printf("%.03lf\n",S);
	return 0;
}
/*
2.3 2.5
6.4 3.1
5.1 7.2
*/
           

法二:三点-->三边-->海伦公式求面积

[蓝桥杯2018决赛]三角形面积
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn=1e5+10;
#define inf 0x3f3f3f3f
#define mem(a,b) memset(a,b,sizeof(a))

double len(double x1,double y1,double x2,double y2) {
	return sqrt(pow(fabs(x1-x2),2)+pow(fabs(y1-y2),2));
}
int main() {
	double x1=2.3,y1=2.5,x2=6.4,y2=3.1,x3=5.1,y3=7.2;
	double q1=len(x1,y1,x2,y2);
	double q2=len(x1,y1,x3,y3);
	double q3=len(x2,y2,x3,y3);

	double p=0.5*(q1+q2+q3);
	double S=sqrt(p*(p-q1)*(p-q2)*(p-q3));
	printf("%.03lf\n",S);
	return 0;
}
/*
2.3 2.5
6.4 3.1
5.1 7.2
*/
           

继续阅读