大致题意:告诉你一个抛物线和直线,求2者围成的面积
测试案例:
input:
2(T)
5.000000 5.000000(抛物线顶点)
0.000000 0.000000(直线与抛物线交点1)
10.000000 0.000000(直线与抛物线交点2)
10.000000 10.000000
1.000000 1.000000
14.000000 8.222222
output:
33.33
40.69
解题思路:这题我是用不定积分算的,首先我们令抛物线顶点公式为(x1,y1),抛物线设为y=a*(x-x1)^2+y1,那么代入任意一点得a的值,然后假设直线为y=kx+t,这里的面积就是求x1到x2的a*(x-x1)^2+y1-kx-t的不定积分值
代码:
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>
using namespace std;
int main()
{
double x1,y1,x2,y2,x3,y3,a,area,d1,d2,d3,k,t,minn,maxn;
int T;
scanf("%d",&T);
while (T--)
{
area=0;
scanf("%lf%lf%lf%lf%lf%lf",&x1,&y1,&x2,&y2,&x3,&y3);
if (y1==y2&&y1==y3)
{
printf("%.2lf\n",area);
}
else
{
a=(y2-y1)/((x2-x1)*(x2-x1));
k=(y2-y3)/(x2-x3);
t=y2-k*x2;
d1=a/3;
d2=-a*x1-k/2;
d3=a*x1*x1+y1-t;
double temp=x2;
area=d1*pow(temp,3)+d2*temp*temp+d3*temp;
temp=x3;
area=area-(d1*pow(temp,3)+d2*temp*temp+d3*temp);
printf("%.2lf\n",fabs(area));
}
}
}