用到求抛物线系数公式,直线系数公式,再用简单积分来求面积。
注意:
做这类精度题目要小心
计算公式时能不用中间变量就不用,
虽然代码会明显增长,可是可以提高精度
在做这道题目时,我就花了很多时间在公式的优化上。
源代码如下:
#include<stdio.h>
int main()
{
double p1x,p2x,p3x,p1y,p2y,p3y;
double a,b,c,k,m,result,x;
int t;
scanf("%d",&t);
while(t--)
{
scanf("%lf%lf",&p1x,&p1y);
scanf("%lf%lf",&p2x,&p2y);
scanf("%lf%lf",&p3x,&p3y);
a=(p2y-p1y)/((p2x-p1x)*(p2x-p1x));
b=-2*p1x*(p2y-p1y)/((p2x-p1x)*(p2x-p1x));
c=p1y-p1x*p1x*(p2y-p1y)/((p2x-p1x)*(p2x-p1x))+2*p1x*p1x*(p2y-p1y)/((p2x-p1x)*(p2x-p1x));
k=(p3y-p2y)/(p3x-p2x);
m=p3y-p3x*(p3y-p2y)/(p3x-p2x);
x=p3x-p2x;
result=a*p3x*p3x*p3x/3+0.5*(b-k)*p3x*p3x+(c-m)*p3x-a*p2x*p2x*p2x/3-0.5*(b-k)*p2x*p2x-(c-m)*p2x;
printf("%.2lf\n",result);
}
}