fork download
  1. #include <iostream>
  2. #include <iomanip>
  3. using namespace std;
  4.  
  5. long double F[10100];
  6. long double ToAns[10100];
  7.  
  8. long double l;
  9.  
  10. long double Q(long double x, int n){
  11. long double y = (1.0 + l + x - l*x)/2.0;
  12. return F[n-1]*x*x + l*l/2 + (1.0-y)*(1.0-y)/2.0 + (1.0 - y) * l + (y-x)*(y-x)/2.0 + (y-x)*l*x;
  13.  
  14. }
  15.  
  16. int main(){
  17.  
  18. int w,h,n;
  19. cin >> w >> h >> n;
  20. l = (h+0.0)/(w+0.0);
  21.  
  22. F[0] = l*l/4.0 + l/2.0 + 1/4.0;
  23. for (int i=1;i<=n;i++){
  24. long double L = 0;
  25. long double R = 1;
  26. long double K1;
  27. long double K2;
  28. while (R - L > 1e-14){
  29. K1 = (2*L+R)/3.0;
  30. K2 = (L+2*R)/3.0;
  31. if (Q(K1,i) > Q(K2,i))
  32. L = K1;
  33. else R = K2;
  34. }
  35. ToAns[i] = L;
  36. F[i] = Q(L,i);
  37. }
  38. cout << setprecision(15) << F[n] * w * w << endl;
  39. long double CurOff = w;
  40. for (int i=n;i>0;i--)
  41. CurOff*=ToAns[i];
  42. for (int i=1;i<=min(n,10);i++){
  43. cout << setprecision(15) << CurOff << endl;
  44. CurOff/=ToAns[i];
  45. }
  46.  
  47. }
Runtime error #stdin #stdout 0.07s 3376KB
stdin
Standard input is empty
stdout
Standard output is empty