using namespace std; int T; double a,b; double (double x){ return sqrt((1-(x*x)/(a*a))*(b*b)); } double simpson(double a,double b){ double c=(a+b)/2.0; return (f(a)+4*f(c)+f(b))*(b-a)/6.0; } double asr(double l,double r,double eps,double A){ double c=(l+r)/2.0; double L=simpson(l,c),R=simpson(c,r); if(fabs(L+R-A)<=15.0*eps) return L+R+(L+R-A)/15.0; return asr(l,c,eps/2,L)+asr(c,r,eps/2,R); } int main(){ scanf("%d",&T); while(T--){ int l,r; scanf("%lf%lf%d%d",&a,&b,&l,&r); printf("%.3fn",asr(l,r,1e-6,simpson(l,r))*2); } return 0; }
|
近期评论