UVA - 11524 InCircle 内切圆 (数学)

题意:

如图 有一个内切圆 告诉你内切圆的半径R,  并且三角形  比例知道  m1 : n1  m2 : n2  m3 : n3,注意  这些只是比例,并不是实际长度,刚开始以为一个大水题,结果样例都不对,错误的认为那是实际长度了!

思路:

需要知道一个内切圆的半径公式:

因此我们设AB = m1 x + n1 x;

可以将三角形三边表示出来!

将三边带入内切圆半径公式即可求出X的值

这样即可求出三角形三个边的实际长度!

在利用三角形面积公式:

即可求出S!

AC代码:

#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<cstdlib>
using namespace std;
int main(){
    int T;
    int kase=0;
    scanf("%d",&T);
    while(T--){
        double r;
        double m1,n1,m2,n2,m3,n3;
        scanf("%lf",&r);
        scanf("%lf %lf",&m1,&n1);
        scanf("%lf %lf",&m2,&n2);
        scanf("%lf %lf",&m3,&n3);
        double k1 = n1+m1;
        double k2 = (n1*m2+n2*n1)/m2;
        double k3 = (m1*n3+m3*m1)/n3;
        double A1 = k1+k2-k3;
        double B1 = k1-k2+k3;
        double C1 = -k1+k2+k3;
        double k4 = k1+k2+k3;
        double x = 2*r/sqrt(A1*B1*C1/k4);
        double sum = k4*x;
        double s = sum*r/2;
        printf("%.15lf\n",s);
    }
    return 0;
}


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值