UVa 11524 InCircle 关于内切圆的计算

题目地址: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);
        
        
    }
}

  

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值