题目:https://www.luogu.org/problemnew/show/P4525
https://www.luogu.org/problemnew/show/P4526
学习辛普森积分:https://blog.csdn.net/VictoryCzt/article/details/80660113
代码如下:

#include<cstdio> #include<cstring> #include<algorithm> #include<cmath> #define eps 1e-8 using namespace std; typedef double db; db a,b,c,d,L,R; db f(db x){return (c*x+d)/(a*x+b);} db simp(db a,db b){return (b-a)/6*(f(a)+4*f((a+b)/2)+f(b));} db asr(db l,db r,db lst) { db mid=(l+r)/2; db ls=simp(l,mid),rs=simp(mid,r); if(fabs(ls+rs-lst)<eps)return ls+rs; else return asr(l,mid,ls)+asr(mid,r,rs); } db asme(db l,db r){return asr(l,r,simp(l,r));} int main() { scanf("%lf%lf%lf%lf%lf%lf",&a,&b,&c,&d,&L,&R); printf("%.6f ",asme(L,R)); return 0; }

#include<cstdio> #include<cstring> #include<algorithm> #include<cmath> #define eps 1e-8 using namespace std; typedef double db; db a; db f(db x){return pow(x,a/x-x);} db simp(db l,db r){return (r-l)/6*(f(l)+4*f((l+r)/2)+f(r));} db asr(db l,db r,db lst) { db mid=(l+r)/2; db ls=simp(l,mid),rs=simp(mid,r); if(fabs(ls+rs-lst)<eps)return ls+rs; return asr(l,mid,ls)+asr(mid,r,rs); } db asme(db l,db r){return asr(l,r,simp(l,r));} int main() { scanf("%lf",&a); if(a<0){puts("orz"); return 0;} printf("%.5f ",asme(eps,15)); return 0; }