题意:给出三个点,求抛物线和直线所围成的面积。
设抛物线的方程为y=a(x-h)^2+k, 直线方程为y=dx+e; 所以h和k分别是顶点的横纵坐标,即h=x1,k=y1.
把(x2,y2)或(x3,y3)代入抛物线方程求出 a,代入直线方程求出d和e 。(见代码)
然后分别对它们积分,求出面积,相减即可。
代码如下:
1 #include<iostream> 2 #include<cstdio> 3 4 using namespace std; 5 6 int main() 7 { 8 int T; 9 double s1, s2; 10 double a, h, k, e, d; 11 double x1, y1, x2, y2, x3, y3; 12 cin >> T; 13 while(T--) 14 { 15 cin >> x1 >> y1 >> x2 >> y2 >> x3 >> y3; 16 h=x1; 17 k=y1; 18 a=(y2-k)*1.0/((x2-h)*(x2-h)); 19 d=(y2-y3)*1.0/(x2-x3); 20 e=y2-d*x2; 21 s1=1.0/3*a*x2*x2*x2-a*h*x2*x2+a*h*h*x2+k*x2-1.0/2*d*x2*x2-e*x2; 22 s2=1.0/3*a*x3*x3*x3-a*h*x3*x3+a*h*h*x3+k*x3-1.0/2*d*x3*x3-e*x3; 23 printf("%.2lf\n", s2-s1); 24 } 25 return 0; 26 }