#define _USE_MATH_DEFINES #define M_EPS (double)1e-20 #include #include #include #include double foo(double x) { return sqrt(sin(x)); } double integrate(double a, double b, int n) { double h = (b - a) / n; double res = 0; for (int i = 0; i <= n; i++) { if (i == 0 || i == n) { res += foo(a + i * h) / 2; } else { res += foo(a + i * h); } } return h * res; } int main(void) { double a, b, epsilon; scanf("%lf %lf %lf", &a, &b, &epsilon); if (a > b) { printf("a > b"); return 0; } else if (fabs(a - b) < M_EPS) { printf("0"); return 0; } else if (sin(a) < 0 || sin(b) < 0 || b - a > M_PI) { printf("sin(x) < 0"); return 0; } double sPrev = integrate(a, b, 1), sCur = 0; int n = 2; while (true) { sCur = integrate(a, b, n); if (fabs(sPrev - sCur) < epsilon) { break; } sPrev = sCur; n++; } printf("%.16f", sCur); return 0; }