c - 如何在有 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;
这是我的解决方案。它为第一个测试用例返回正确的值,但无法解决第二个测试用例。有什么问题???
解决方案
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;
}
推荐阅读
- ruby-on-rails - 为什么我在登录时收到缺少列的错误?
- centos - 如何在绑定接口中设置桥接适配器?
- python - 如何从字典列表中获取值?
- php - 我的 PHP 代码没有在我的 Ubuntu 操作系统上运行
- python - 使用 for 循环遍历多个字符串列表
- java - 如何告诉 Ignore JSON 忽略属性名称而不是其中的响应
- java - 如何覆盖依赖jar的spring上下文占位符?
- excel - VBA 故障排除工作表函数和连接运算符
- c++ - std::map emplace 不可移动不可复制非默认构造类型
- c# - 如果第一列为空,则跳过一行 Excel 表