杭电1071 The area

/*********************************
* 日期:2011-2-16
* 作者:SJF
* 题号:杭电1071
* 题目:The area
* 结果:AC
* 注意:
已知抛物线与直线相交两点和抛物线顶点,顶点P1(-b/(2a), (4ac-b^2)/4a)。
抛物线方程:y=ax^2+bx+c;
直线方程:y=kx+h;
已知p1,p2,p3可以求出a,b,c,k,h
y1=ax1^2+bx1+c
y2=ax2^2+bx2+c
y1-y2=(x1-x2)(a(x1+x2)+b)
又x1=-b/2a,
所以a=(y2-y1)/(x2-x1)^2
面积用积分公式化简为:
S=a/3*(x3^3–x2^3)+(b-k)/2*(x3^2–x2^2)+(c-h)*(x3-x2);
**********************************/
#include<stdio.h>
int main()
{
int N;
while(scanf("%d",&N)!=EOF)
{
double a,b,c,k,h,s,x1,x2,x3,y1,y2,y3;
while(N--)
{
scanf("%lf %lf",&x1,&y1);
scanf("%lf %lf",&x2,&y2);
scanf("%lf %lf",&x3,&y3);
a=(y2-y1)/((x2-x1)*(x2-x1));
b=-2*a*x1;
c=y1-a*x1*x1-b*x1;
k=(y2-y3)/(x2-x3);
h=y2-k*x2;
s=a/3*(x3*x3*x3-x2*x2*x2)+(b-k)/2*(x3*x3-x2*x2)+(c-h)*(x3-x2);
printf("%.2lf\n",s);
}
}
return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值