#include <iostream>
#include <cstdio>
#include <cmath>
using namespace std;
double a,b,c,d,l,r;
const double eps = 1e-10;
double f(double x)
{
return (c*x+d)/(a*x+b);//函数
}
double simpson(double ll,double rr)
{
return (rr-ll)/6.0*( f(ll)+f(rr)+4.0*f( (ll+rr)/2.0) );
}
double integral(double ll,double rr)
{
double mid=(ll+rr)/2.0;
double res=simpson(ll,rr);
if(fabs( res-simpson(ll,mid)-simpson(mid,rr) ) <eps) return res;
else return integral(ll,mid)+integral(mid,rr);
}
int main()
{
scanf("%lf%lf%lf%lf%lf%lf",&a,&b,&c,&d,&l,&r);
printf("%.6lf",integral(l,r));
return 0;
}
洛谷P4525题解
同解决 P4526(这个要证明a<0时发散)