UVA 375 Inscribed Circles and Isosceles Triangles

本文介绍了解决UVA-375问题的方法,该问题涉及等腰三角形中一系列内切圆的计算。文章详细阐述了如何通过已知的底边和高来求得各内切圆的半径,并进一步计算所有有效圆的周长总和。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

UVA-375

题意:等腰三角形给出底边和高,首先求内切圆r1,再求切两腰和r1的圆r2,同理求r3……知道圆的半径小于0.000001。求这些圆的周长和。
解题思路:我们可以求出腰长 x=srqt( h*h+b*b*0.25) , 内切圆半径 r = 2*s/ c(c是周长) = h*b /(x+x+b)。后面的每一个圆要切前一个圆和两腰,过前一个圆作直线平行底边,上面的小三角行和整个三角形相似,而且每个小三角形和比它大的那个的比例都是想同的,所以两个r的比例也是相同的。这个比例t = (h- r*2)/h;
然后圆周率不要手打3.1415926……,用cmat里面的 acos(-1.0) 。

#include <iostream>
#include <algorithm>
#include <cstdio>
#include <cstring>
#include <cmath>
using namespace std;
double b,h,r,sum,s,x,pi;
int main () {
    freopen("xx.in","r",stdin);
    freopen("xx.out","w",stdout);
    int n;
    pi= acos(-1.0);
    scanf("%d",&n);
    while (n--) {
        scanf("%lf%lf",&b,&h);
        sum=0;
        x=sqrt(h*h+b*b*0.25);
        r=h*b/(x+x+b);
        h = (h - 2.0*r) / h;
        while (r > 0.000001) {
            sum+=r;
            r= r*h;
        }
        printf("%13.6lf\n",pi*2.0*sum);
        if (n) printf("\n");
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值