2 solutions
-
3
这道题花了我一个多小时,最后发现PI写错了
①PI=acos(-1)而我写成了PI=cos(-1),一度怀疑人生
②r1的求解比较难想到,是利用的三角函数 看图吧!
//非(常规)二分,含有精度,估算高度而不是去计算高度 //使用到eps的l,r不需要+1-1 #include<iostream> #include<math.h> using namespace std; #define PI acos(-1) double r, R, H, V, v2, r1; bool check(double h) { r1 = (h / H) * (R - r) + r; v2 = (1.0 / 3.0) * PI * h * (r1 * r1 + r * r1 + r * r); return v2 <= V; } int main() { int t; scanf("%d", &t); while (t--) { scanf("%lf%lf%lf%lf", &r, &R, &H, &V); double l = 0, r = 100, mid; while (r - l > 1e-7) { mid = (l + r) / 2; if (check(mid)) l=mid; else r=mid; } printf("%.6lf", r); } return 0; }
Information
- ID
- 282
- Time
- 1000ms
- Memory
- 256MiB
- Difficulty
- 6
- Tags
- # Submissions
- 121
- Accepted
- 36
- Uploaded By