1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
| import java.io.*; import java.util.*; public class Main { static double a,b; static double eps=1e-9; public static void main(String[] args) { FastScanner sc=new FastScanner(); PrintWriter pw=new PrintWriter(System.out); int t=sc.nextInt(); while(sc.hasNext()){ a=sc.nextDouble(); b=sc.nextDouble(); double l=sc.nextDouble(); double r=sc.nextDouble(); pw.printf("%.3f",integral(l,r,1e-4)*2); pw.println(); pw.flush(); }
} static double f(double x){ return Math.sqrt(b*b-b*b/(a*a)*x*x); } static double simpson(double l,double r){ double mid=l+(r-l)/2; double res=1.0/6*(r-l)*(f(l)+4*f(mid)+f(r)); return res; } static double integral(double l,double r,double eps){ double mid=l+(r-l)/2; double res=simpson(l,r); double a=simpson(l,mid); double b=simpson(mid,r); if(Math.abs(res-a-b)<=eps*15)return a+b+(a+b-res)/15.0; else return integral(l,mid,eps/2)+integral(mid,r,eps/2); } }
|