题目:现在有一条二次曲线,直到这条二次曲线的顶点P,还知道这条曲线上的一点B,B点相对于对称轴的对称点是A点。
让你求二次曲线与AB连线围成的面积。【简单积分】【韦达定理:x1+x2=-b/a; x1*x2=c/a 】【平移】
如上图所示:
代码:
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <iostream>
#include <string>
#include <algorithm>
#define LL long long int
using namespace std;
struct point
{
double x, y;
};
int main()
{
point p, b; //p点是顶点坐标 b点是线段上一点
point a;
while(~scanf("%lf %lf %lf %lf", &p.x, &p.y, &b.x, &b.y))
{
a.x=-1.0*b.x;
a.y=b.y; //对称点
//根据积分的特性 在任意位置进行的积分 不一定等于面积
//
double dd, ff;
dd=p.x-0.0; // dd<0 在y轴左边 否则右边
ff=b.y-0.0; // ff<0 在x轴下边 否则上边
//修改点坐标
if(dd<=0.0)
{
p.x=0.0;
a.x+=dd; b.x+=dd;
}else{
p.x=0.0;
a.x-=dd; b.x-=dd;
}
if(ff<=0.0)
{
a.y=0.0; b.y=0.0;
p.y+=ff;
}else{
a.y=0.0; b.y=0.0;
p.y-=ff;
}//平移坐标
double A, B, C; //方程的参数
A = p.y/(-1.0*b.x*b.x);
B = 0.0;
C = p.y;
double ans=0.0;
ans = (1.0/3.0*A*b.x*b.x*b.x + C*b.x) - 0;
ans = ans*2.0;
printf("%lf\n", ans );
}
return 0;
}