第五届趣味编程大赛——F 苗童大作战之爱洗澡的鳄鱼

童童和苗苗准备邀请小鳄鱼来观看大作战,可是小鳄鱼是出了名的爱洗澡,没有游泳池是请不到小鳄鱼的哟!于是童童和苗苗准备比比谁先请到小鳄鱼,为了公平起见,苗苗和童童画出的泳池底长必须相同。

童童画了一个弧状的游泳池,而苗苗把正六边形的一半用来当作游泳池,可是小鳄鱼觉得洗澡的地方越大越好,那么问题来了,你能告诉小鳄鱼这两个图形的面积吗?

如下图: 

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;
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值