切蛋糕
时间限制:
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> #include <cstring> #include <math.h> #include <cstdio> #define PI acos(-1) #define exp 0.00000001 using namespace std; int main() { double r, l; while (scanf("%lf%lf", &r, &l) != EOF) { double res = PI * l / (l + 1); double low = 0.0000001, high = PI / 2; double mid; while (1) { mid = (low + high) / 2; double temp = mid - sin(2 * mid) / 2; if (temp > res) high = mid; else low = mid; if (high - low < exp) break; } printf("%.2lf\n", 2 * r * sin(mid)); } return 0; }