SDUT Fruit Ninja II (2416 积分)

大意:给定椭球的a,b,h并且b=c;其中椭球的公式为x^2/a^2+y^2/b^2+z^2/b^2=1,求沿着球心高出为h的地方切球分的两部分的最大一部分的体积。

思路:S椭圆=PI*a*b;SDUT Fruit Ninja II (2416 积分)_第1张图片

#include<map>
#include<queue>
#include<cmath>
#include<cstdio>
#include<stack>
#include<iostream>
#include<cstring>
#include<algorithm>
#define LL long long
#define inf 0x3f3f3f3f
#define eps 1e-8
#define ls l,mid,rt<<1
#define rs mid+1,r,rt<<1|1
const double PI=acos(-1.0);
using namespace std;
int main(){
    int n,m,i,j,k,a,b,h;
    scanf("%d",&k);
    for(int zu = 1;zu <= k;++ zu){
        scanf("%d%d%d",&a,&b,&h);

        if(h >= b){
            printf("Case %d: %.3lf\n",zu,PI*a*b*b*4.0/3.0  );
            continue;
        }
        printf("Case %d: %.3lf\n",zu, PI*a*b*b*2.0/3.0 + PI*a*b*(h-h*h*h/(3.0*b*b)) );
    }

    return 0;
}

你可能感兴趣的:(数论,积分)