首页 > 代码库 > NYOJ 869 切蛋糕
NYOJ 869 切蛋糕
切蛋糕
时间限制:1000 ms | 内存限制:65535 KB
难度:3
- 描述
有如下图半径为R的圆形蛋糕,被切一刀后(图中红色直线),分成两个部分(黄色和绿色),已知其比例为r,求刀痕长度(图中红色直线)。
- 输入
- 输入包括多组测试数据,包括一个整数R(1<=R<=1000),和一个浮点数r(0<r<1),精确到第四位小数。
- 输出
- 对于每组测试用例,输出一个浮点数,代表刀痕的长度,保留二位小数。
- 样例输入
1000 0.5000 500 0.6183
- 样例输出
1928.53 982.49
思路:二分加贪心
#include<iostream> using namespace std; #include<cstdio> #include<cmath> #include<cstdlib> const double PI=acos(-1); int main() { double rate,thita,sa,sb,ss,sleft,sright; double low,high,l,r; while(cin>>r>>rate) { ss=r*r*PI; low = 0.0000001,high = 2*r; while(low<=high) { l=(low+high)/2; thita = asin(l/2/r); sb=r*r/2.0*sin(2*thita); sa = r*r*thita; sleft = sa - sb; sright = ss - sleft; if(sleft>=sright*rate) high = l-0.00001; else low = l+0.00001; } printf("%0.2f\n",l); } return 0; }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。