UVa - 375 - Inscribed Circles and Isosceles Triangles

本文分享了一位作者在解决几何类型计算题时遇到的精度问题,通过调整变量和算法逻辑,成功解决了最后一组数据不匹配的问题。文章详细介绍了从发现到解决的过程,包括使用面积法寻找关系、调试过程中的小技巧以及最终优化后的代码实现,为读者提供了解决类似问题的思路和方法。

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

好吧一直以来都对这种几何类型的计算题有种恐惧的感觉,不是题目难而是总觉得算出来的结果要考虑精度什么很麻烦而且总是算不对

这算是好的开始吧有了第一道就有后面的了!

做这道题目时很神奇啊 第一次写的时候交上去WA 对了几组数据发现总是最后两位数不对就怀疑是精度的问题了 然后一不小心没保存就关了IDE 然后就只能重新再写一次,两次写的思路是一模一样的啊谁知道第二次写出来一测数据呀都对了... 好吧,那就应该是第一次写的时候某个变量的乘除写错了吧...

关系不难找(我是用面积找的,角度应该也可以吧还没试过)所以上面废话就多点了...

#include<stdio.h>
#include<math.h>
#define min 0.000001
#define pi acos(-1)

int main()
{
    double b,h,r,c,temp_h;
    int t;
    scanf("%d",&t);
    while(t--)
    {
        scanf("%lf%lf",&b,&h);
        c=0;
        r=b*h/(b+sqrt(b*b+4*h*h));
        while(r>=min)
        {
            c+=2*pi*r;
            temp_h=h;
            h=h-2*r;
            b=(h/temp_h)*b;
            r=b*h/(b+sqrt(b*b+4*h*h));
        }
        printf("%13lf\n",c);
        if(t) putchar('\n');
    }

}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值