1. 程式人生 > >藍書幾何訓練之UVA 11524 InCircle(海倫公式)

藍書幾何訓練之UVA 11524 InCircle(海倫公式)

題目連結:
Uva-11524

題目大意:
△abc的內切圓半徑把三角形的三邊劃分成m1:n1,m2:n2,m3:n3的比例。給定內切圓半徑r,求△abc面積

解題思路:
此題需要用到海倫公式求解, 然後聯立內切圓計算面積S△ABC = r*k(a+b+c)/ 2;

AC程式碼:

#include <iostream>
#include <algorithm>
#include <cmath>

using namespace std;

int main(){
	
	int t;
	cin>>t;
	while(t--){
		double r,m1,n1,m2,n2,m3,n3,k;
		cin>>r>>m1>>n1>>m2>>n2>>m3>>n3;
		
		double a = 1.0;
		double b = n1*(m2+n2)/(m2*(n1+m1));
		double c = m1*(m3+n3)/(n3*(n1+m1)); 
		
		k = r*sqrt((a+b+c)/(a+b-c)/(a+c-b)/(b+c-a));
		
		printf("%.4f\n",r*k*(a+b+c));
	}
	return 0;
}