点击打开题目

题目大意

给定L,n,C,L为红色线段,L(1+n*C)为绿色弧,求两者中点的距离

二分圆心角度数,接下来就是几何的能力了

根据正弦定理,可得:

Lsinθ=rsin(90°−θ)

则弧长:

a=πr⋅θ180

将a与nL作比较来二分

精度满天飞 QWQ

代码如下:

#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
double pi=3.1415926535897932384626433832795,eps=0.000000001;
double L,C,n,nL;
using namespace std;
double work(double mid)
{
double a1=sin(2*pi*mid/360),a2=sin(2*pi*(90-mid/2)/360);
double r=L/a1*a2;
return 2*r*pi*mid/360;
}
int main()
{
while(scanf("%lf%lf%lf",&L,&n,&C))
{
if(L==-1&&n==-1&&C==-1)return 0;
nL=(1+n*C)*L;
if(nL==L){printf("0.000\n");continue;}
double l=0,r=180,mid;
while(r-l>eps)
{
mid=(l+r)/2;
if(work(mid)<nL)l=mid;
else r=mid;
}
printf("%.3lf\n",L/sin(2*pi*l/360)*sin(2*pi*(90-mid/2)/360)-sqrt(pow(L/sin(2*pi*l/360)*sin(2*pi*(90-mid/2)/360),2)-pow(L/2,2)));
}
}

最新文章

  1. android存储方式的应用场景
  2. CentOS一键ftp
  3. 编写简单的ramdisk(选择IO调度器)
  4. 【温故Delphi】双击工程文件打开软件
  5. nodejs学习笔记三——nodejs使用富文本插件ueditor
  6. js实现身份证号码验证
  7. gpt格式下通过U盘装win7系统
  8. sftp 设置仅能访问自己目录的用户
  9. jszs 历史管理
  10. Group 原则
  11. 使用 .NET 平台,如何玩转 Universal Windows 应用?
  12. noip 2009 道路游戏
  13. hdu 4739【位运算】.cpp
  14. 前端学习之HTML
  15. SourceInsight宏插件2(非常好用,强力推荐)
  16. 洛谷P2868 [USACO07DEC]观光奶牛Sightseeing Cows(01分数规划)
  17. 【bzoj 2002】弹飞绵羊
  18. 在vue-cli项目中使用bootstrap的方法示例
  19. JAVA获取程序(打成jar或classpath)所在目录
  20. BinaryReader 自己写序列化

热门文章

  1. dotnet Framework 源代码 · Ink
  2. 2018宁夏邀请赛 L Continuous Intervals(单调栈+线段树)
  3. Cookie的使用、Cookie详解、HTTP cookies 详解、获取cookie的方法、客户端获取Cookie、深入解析cookie
  4. UE4 中的 C++ 与 蓝图交互
  5. QP移植
  6. 数据多js平均时间取固定条数展示,echarts数据多处理数据
  7. python类中的一些神奇方法
  8. JavaScript数组的方法 | 学习笔记分享
  9. Vue+Element实现网页版个人简历系统
  10. Java图形打印 上下对称三角星