童童和苗苗准备邀请小鳄鱼来观看大作战,可是小鳄鱼是出了名的爱洗澡,没有游泳池是请不到小鳄鱼的哟!于是童童和苗苗准备比比谁先请到小鳄鱼,为了公平起见,苗苗和童童画出的泳池底长必须相同。
童童画了一个弧状的游泳池,而苗苗把正六边形的一半用来当作游泳池,可是小鳄鱼觉得洗澡的地方越大越好,那么问题来了,你能告诉小鳄鱼这两个图形的面积吗?
如下图:
x轴上方是童童画的游泳池,为了好看童童用某二元一次方程 y = ax^2 + c 的一部分画出了这段弧,给你二次函数与 x 轴的交点 Px 的绝对值和二次函数与 y 轴的交点 Py, 你能告诉小鳄鱼x轴上方和x轴下方的图形面积吗?
Input
输入两个数 Px 和 Py (0 < Px, Py < 10000)
Output
输出两个数,分别代表 x 轴上方的图形面积和 x 轴下方的图形面积。(保留两位小数)
Sample Input
2 4
Sample Output
10.67 5.20
哈哈,大家读完题,一定会发现这tm是个数学题!没错!求抛物线的面积!那么,我们可以把抛物线按照Y轴分成两部分,每一部分又可以分成一个三角形和一个小的弧形,那么我们的任务又变成了求小弧形的面积。这个用到了高中的知识,首先我们可以根据题目给的坐标求出一元二次方程,并且求出过px,py两点的直线的方程。
求面积的方法很简单。抛物线方程减直线方程,得到一个新的函数,将这个函数作为导函数,求出它的原函数。将px点的横坐标值代入即可。
#include<iostream>
#include<algorithm>
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<math.h>
using namespace std;
int main()
{
double px,py;
while(scanf("%lf %lf",&px,&py)!=EOF)
{
double a,c,sx=0.0,sy=0.0;
sx=px*3*sqrt(px*px-(px*px/4))/2;
sy+=px*py;
//printf("**%.2lf**\n",sy);
c=py;
a=(-1.0)*(c/(px*px));
sy+=(a*px*px*px/3+py*px/2)*2;
printf("%.2lf %.2lf",sy,sx);
}
return 0;
}