#include #include #include #define EPSILON (1e-12) #define LT(x,y) (((x)-(y)) < -EPSILON) #define LE(x,y) (((x)-(y)) <= +EPSILON) using namespace std; double Hmin(double H1, double H2) { double axis = (H1 - H2 + 3.0) / 2.0; double a = floor(axis + EPSILON); double b = ceil(axis - EPSILON); double Ha = (a - 2) * (a - 1) + (a - 1) * H2 - (a - 2) * H1; double Hb = (b - 2) * (b - 1) + (b - 1) * H2 - (b - 2) * H1; return (Ha < Hb) ? Ha : Hb; } double compute(double N, double H1) { double H2min = ((N-2) * H1 - (N-1) * (N-2)) / (N-1) - EPSILON; double H2max = H1 - 1.0; double H2; // Can H[N] get 0.0? double axis = (H1 - H2min + 3.0) / 2.0; if(LE(N, axis)) return 0.0; // Compute by iteration while(LT(H2min, H2max)) { H2 = (H2min + H2max) / 2.0; if(Hmin(H1, H2) < 0.0) H2min = H2; else H2max = H2; } H2 = (H2min + H2max) / 2.0; return (N-2) * (N-1) + (N-1) * H2 - (N-2) * H1; } int main(void) { double N, A; cin >> N >> A; cout << setprecision(2) << fixed << compute(N, A) << endl; return 0; }