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

Submit clink~

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

给出三点坐标,求面积!

法一:通过余弦定理   a^2+b^2-c^2=2*a*b*cos(C)  、正弦定理 S=\frac{1}{2}*a*b*sin(C)  求面积~ 

#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
*/

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

#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
*/

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

嵩韵儿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值