题目地址:pdf版
告诉你,内切圆切点所分边的比,还有内切圆半径,求面积。 一个纯高中数学题啊。
首先,第三组比是多余的条件,因为三个比例乘起来一定等于1.
然后里利用前两组数据可以求出边的比(不妨设c==1,然后用克拉默法则解线性方程组)。这样就可以用余弦定理求出内角,内角的一半的正切值可以计算(a+b-c)/2的值。我们需要的就是周长,然后求周长和这个的比例就可以了。
代码:
#include<iostream>
#include<cmath>
#include<cstdio>
using namespace std;
double det2(double a11,double a12,double a21,double a22)
{
return a11*a22-a12*a21;
}
void calc_function(double a11,double a12,double a21,double a22,double b1,double b2,double &x1,double &x2)
{
double det=det2(a11,a12,a21,a22);
double det_1=det2(b1,a12,b2,a22);
double det_2=det2(a11,b1,a21,b2);
x1=det_1/det;
x2=det_2/det;
}
int main()
{
double r;
double a,b,c,d,e,f;
int cas;
cin>>cas;
while(cin>>r>>a>>b>>c>>d>>e>>f)
{
double x1=a/b;
double x2=c/d;
c=1;
calc_function(-(1+x1), (x1+1), x2-1, x2+1, x1-1, x2+1, a, b);
double angle_c=acos((a*a+b*b-1)/(2*a*b));
double perimeter=r/tan(angle_c/2)*2*(a+b+1)/(a+b-1);
double area=perimeter*r/2;
printf("%.4lf\n",area);
}
}