又是一道数学题
而且刚开始一时疏忽竟然把抛物线方程设成了y=-(x-x1)^2+y1,连a都忘记设了,后来检查时才发现,后面的就很简单了,把抛物线和直线都表示出来然后算一下定积分即可。
代码如下:
#include <cstdio>
#include <iostream>
#include <cmath>
#include <cstring>
using namespace std;
double f(double x,double k,double b,double a,double x1,double y1)
{
double r=-1.0*a/3*x*x*x+(2*a*x1-k)/2.0*x*x-(a*x1*x1-y1+b)*x;
return r;
}
int main()
{
int T;
cin>>T;
while(T--){
double x1,y1,x2,y2,x3,y3;
scanf("%lf%lf%lf%lf%lf%lf",&x1,&y1,&x2,&y2,&x3,&y3);
double k=(y3-y2)/(x3-x2);
double b=y2-(y3-y2)/(x3-x2)*x2;
double a=(y1-y2)/((x2-x1)*(x2-x1));
a=fabs(a);
double res=f(x3,k,b,a,x1,y1)-f(x2,k,b,a,x1,y1);
res=fabs(res);
printf("%.2lf\n",res);
}
return 0;
}