标签:
题目:现在有一条二次曲线,直到这条二次曲线的顶点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; }
标签:
原文地址:http://www.cnblogs.com/yspworld/p/4564478.html