博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
九度 1551 切蛋糕(数学)
阅读量:4960 次
发布时间:2019-06-12

本文共 1172 字,大约阅读时间需要 3 分钟。

有如下图半价为R的圆形蛋糕,被切一刀后(图中红色直线),分成两个部分(黄色和绿色),已知其比例为r,求刀痕长度(图中红色直线)。

 

思路

1. 画个图比划比划, 可以看出是道数学题

2. 将刀痕的长度设成 l, 就能建立等式, 接下来就是求 l 了

3. 写成等式后需要以编程的角度出发求解未知数 l, 很自然就能联想到二分法搜索, 但是需要从数学的角度去证明 L 在区间 (0, R) 是单调的

4. 再看图, 发现不需要求导数证明单调, L 越大黄色部分越大, L 越小黄色部分越小, 单调性是 straight forward

5. 对 double 进行二分搜索还是第一次做, 二分后对 low, high 更新时, 我随手取了 0.0001, 觉得精度应该差不多

 

代码 未通过九度测试

#include 
#include
#include
using namespace std;const double PI = 3.14159;double r, l, h;double theta, portion;int main() { freopen("H:\\Copy\\workplace_cpp\\tt.txt", "r", stdin); while(scanf("%lf%lf", &r, &portion) != EOF) { double low = 0.00001, high = 2*r; while(low <= high) { l = (low+high)/2; double fff0 = r * r * acos(l/2/r); double fff1 = l * sqrt(r*r-l*l/4) / 2; double fff2 = PI * r * r / 2 * (1-portion) / (1+portion); double fff3 = fff0 + fff1; if(fff3 >= fff2) { low = l + 0.0001; }else{ high = l - 0.0001; } } printf("%0.2f\n", l); } return 0;}

 

 

转载于:https://www.cnblogs.com/xinsheng/p/3590648.html

你可能感兴趣的文章
网易新闻侧滑抽屉效果(利用父子控制器实现)
查看>>
Ceph:pg peering过程分析
查看>>
4.高级特性(1)
查看>>
【读书笔记】【独立思考】2018-04-14
查看>>
初始化
查看>>
Piggy-Bank(复习完全背包)
查看>>
mongoDb 给表添加+ 删除字段
查看>>
关情纸尾-----OC-Foundation框架中常用的类
查看>>
.net mvc 防止 xss 与 CSRF
查看>>
git-02 下载代码
查看>>
qsort 的用法
查看>>
004--面试之ES6其他常用的功能
查看>>
CURL方式使用代理访问网站
查看>>
php中面向对象的概念
查看>>
npm 更新及做淘宝镜像
查看>>
react:高阶组件wrappedComponent
查看>>
vue: data binding
查看>>
基本控件文档-UIButton属性---iOS-Apple苹果官方文档翻译
查看>>
one2many &&many2many
查看>>
大小端序
查看>>