#include #define REP(i,n) for(int i=0,i##_len=int(n);i class Polynomial{//f(x)=a_0+a_1x+a_1x^2+... std::vector fx; public: Polynomial(const std::vector &fx={T(1)}):fx(fx){} T operator[](size_t k)const{return fx[k];} size_t size()const{return fx.size();} size_t dim()const{return fx.size()-1;} T back()const{return fx.back();} Polynomial operator=(const Polynomial &gx){ fx.resize(gx.size()); for(int i=0;i hx(fs,T(0)); for(int i=0;i hx(fs,T(0)); for(int i=0;i hx(fs,T(0)); for(int i=0;i hx=fx; std::stack st; while(hx.size()>=gx.size()){ T t=hx.back()/gx.back(); size_t n=hx.size()-gx.size(); hx.pop_back(); for(int i=0;i hx=fx; while(hx.size()>=gx.size()){ T t=hx.back()/gx.back(); size_t n=hx.size()-gx.size(); hx.pop_back(); for(int i=0;i=0;--i){ f=f*x+fx[i]; } return f; } Polynomial integrate(){ fx.push_back(0); for(int i=fx.size()-1;i>0;--i){ fx[i]=fx[i-1]/i; } fx[0]=0; return *this; } Polynomial differencial(){ for(int i=0;i+10;--i){ d=d*a+fx[i-1]/i; u=u*b+fx[i-1]/i; } d*=a; u*=b; return u-d; } friend std::ostream& operator<<(std::ostream &os, const Polynomial &gx){ for(int i=0;i>a>>b; Polynomial f({(double)a*b,(double)-a-b,1}); printf("%.16f",-f.cintegrate(a,b)); }