標籤:turn ios names 參考 blank stream int str pac
題目:題目連結
思路:純高等數學問題,不過不是很好積分,具體積分思路及過程參考大佬部落格——53002695
AC代碼:
1 #include <iostream> 2 #include <cstdio> 3 #include <algorithm> 4 #include <cmath> 5 #include <iomanip> 6 7 using namespace std; 8 9 #define pi acos(-1.0)10 11 double h;12 13 double cal(double a) {14 return pi * cos(a) - a * cos(a) + sin(a) - pow(sin(a), 3) / 3;15 }16 17 double calV(double b) {18 double a = acos(2 * tan(b) - 1.0);19 return (cal(a) - cal(pi)) / tan(b);20 }21 22 int main()23 {24 int T;25 scanf("%d", &T);26 while(T--) {27 scanf("%lf", &h);28 double v = pi * h;29 if(h < 1e-10)30 printf("0.00000\n");31 else if(h >= 1.0) {32 double a = atan(2.0 - h);33 printf("%.5f\n", pi / cos(a));34 }35 else {36 double l = 0, r = pi / 4;37 while(r - l > 1e-9) {38 double m = (l + r) / 2;39 if(calV(m) < v) 40 l = m;41 else42 r = m;43 }44 double x = 2 * tan(r);45 double a = acos(x - 1);46 double s = (pi - a + sin(a) * cos(a)) / sin(r);47 printf("%.5f\n", s);48 }49 }50 return 0;51 }
Do not pour out HDU - 5954 數學積分