hdu1071

大致题意:告诉你一个抛物线和直线,求2者围成的面积

测试案例:

input:

2(T)
5.000000 5.000000(抛物线顶点)
0.000000 0.000000(直线与抛物线交点1)
10.000000 0.000000(直线与抛物线交点2)
10.000000 10.000000
1.000000 1.000000
14.000000 8.222222

output:

33.33
40.69



解题思路:这题我是用不定积分算的,首先我们令抛物线顶点公式为(x1,y1),抛物线设为y=a*(x-x1)^2+y1,那么代入任意一点得a的值,然后假设直线为y=kx+t,这里的面积就是求x1到x2的a*(x-x1)^2+y1-kx-t的不定积分值

代码:

#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>

using namespace std;


int main()
{
    double x1,y1,x2,y2,x3,y3,a,area,d1,d2,d3,k,t,minn,maxn;
    int T;
    scanf("%d",&T);
    while (T--)
    {
        area=0;
        scanf("%lf%lf%lf%lf%lf%lf",&x1,&y1,&x2,&y2,&x3,&y3);
        if (y1==y2&&y1==y3)
        {
            printf("%.2lf\n",area);
        }
        else
        {
            a=(y2-y1)/((x2-x1)*(x2-x1));
            k=(y2-y3)/(x2-x3);
            t=y2-k*x2;
            d1=a/3;
            d2=-a*x1-k/2;
            d3=a*x1*x1+y1-t;


            double temp=x2;
            area=d1*pow(temp,3)+d2*temp*temp+d3*temp;
            temp=x3;
            area=area-(d1*pow(temp,3)+d2*temp*temp+d3*temp);

            printf("%.2lf\n",fabs(area));

        }

    }

}




评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值