• ZOJ 3898


    有一个陶罐,陶罐是由函数Y=2+cosX,截取x=Z1到x=Z2段后,形成的旋转体,陶罐只有底x=Z1,没有盖子。

    问陶罐能乘多少的水(体积),以及它的表面积

    体积还是比较好求的,直接用旋转体体积公式,pi*∫[z1,z2](2+cosX)2dX=  pi* ( 4sinX+sin2X/4+9X/2 | [z1,z2] )

    比较难求的是表面积,套用旋转体侧面积公式,2pi*∫[z1,z2](2+cosX)*sqrt(1+sin2X)dX

    然而这个积分相当难求(好像是第二类椭圆积分),我们需要用辛普森积分法求(这个公式太厉害啦OTZ,强行求积分)

    ∫[l,r] f(x) dx= (r-l)/6*( f(r) + 4f((l+r)/2) + f(l)) ;

    然而辛普森积分法误差很大,所以我们可以把这个区间分成10000等分,每份分别用辛普森积分法求,这样就可以减小误差

    还有,样例有错误,第二个样例的表面积应该是28.28,当然样例的答案跟正解来比也是在误差范围内,应该是出题人故意迷惑人吧

    事实上等分5000份就可以AC这道题目

    #include<cstdio>
    #include<cstring>
    #include<cmath>
    #include<iostream>
    #include<algorithm>
    #include<set>
    #include<map>
    #include<stack>
    #include<vector>
    #include<queue>
    #include<string>
    #include<sstream>
    #define eps 1e-9
    #define ALL(x) x.begin(),x.end()
    #define INS(x) inserter(x,x.begin())
    #define rep(i,j,k) for(int i=j;i<=k;i++)
    #define MAXN 20005
    #define MAXM 40005
    #define INF 0x3fffffff
    #define PB push_back
    #define MP make_pair
    #define X first
    #define Y second
    #define clr(x,y) memset(x,y,sizeof(x));
    using namespace std;
    typedef long long LL;
    int i,j,k,n,m,x,y,T,ans,big,cas,num,len;
    bool flag;
    const double pi=acos(-1.0);
    double l,r;
    
    double f(double u)
    {
        return cos(u)+2.0;
    }
    
    double df(double u)
    {
        return (2.0+cos(u))*sqrt(1.0+sin(u)*sin(u));
    }
    
    double xps(double l,double r)
    {
        return (r-l)*(df(r)+4.0*df((l+r)/2)+df(l))/6.0;
    }
    
    double f2(double u)
    {
        return 4.0*sin(u)+sin(u*2.0)/4.0+9.0*u/2.0;
    }
    
    int main()
    {
        scanf("%d",&T);
        while (T--)
        {
            scanf("%lf%lf",&l,&r);
            double ans=0;
            double g=l;
            double h=(r-l)/5001;
            for (i=1;i<=5001;i++)
            {
                ans+=xps(g,g+h);
                g+=h;
            }
            printf("%.2lf ",pi*(f2(r)-f2(l)));
            printf("%.2lf
    ",2.0*pi*ans+pi*f(l)*f(l));
        }
    }
  • 相关阅读:
    toj4119HDFS
    hdu2952Counting Sheep
    hdu2393Higher Math
    hdu2317Nasty Hacks
    hdu2309ICPC Score Totalizer Software
    hdu2304Electrical Outlets
    hdu2399GPA
    一、 软件测试概述
    JQuery选择器大全
    如何避免jQuery库和其他库的冲突
  • 原文地址:https://www.cnblogs.com/zhyfzy/p/4803901.html
Copyright © 2020-2023  润新知