首页 > 解决方案 > 如何在有 2 个圆圈的矩形中找到空白空间?

问题描述

我正在解决Toph中的一个问题。在这个问题中,我必须找出其中有 2 个相等圆的矩形的空白区域。

这是问题所在

#include <stdio.h>
float pi=3.1416;
int main()
{
    int i,t;
    float r,rest;
    scanf("%d",&t);
    for(i=1;i<=t;i++)
    {
        scanf("%f",&r);
        rest=(4*r*2*r)-(2*pi*r*r);
        printf("Case %d: %.2f\n",i,rest);
    }
    return 0;

这是我的解决方案。它为第一个测试用例返回正确的值,但无法解决第二个测试用例。有什么问题???

标签: carea

解决方案


float pi=3.1416;是问题的原因。在数学头文件 ( #include <math.h>) 下有一个常量M_PI使用它。

编辑:对不起,没有仔细阅读,显然问题出在浮点精度上。如果您将所有浮点值更改为双精度值,它应该可以工作。

#include <stdio.h>
double pi=3.1416;
int main()
{
    int i,t;
    double r,rest;
    scanf("%d",&t);
    for(i=1;i<=t;i++)
    {
        scanf("%lf",&r);
        rest=(4*r*2*r)-(2*pi*r*r);
        printf("Case %d: %.2lf\n",i,rest);
    }
    return 0;
}

推荐阅读