Sdut 2416 Fruit Ninja II(山东省第三届ACM省赛 J 题)(解析几何)

Time Limit: 5000MS Memory limit: 65536K

题目描述

 

Haveyou ever played a popular game named "Fruit Ninja"?

Fruit Ninja (known as Fruit Ninja HD on the iPad and Fruit Ninja THD for NvidiaTegra 2 based Android devices) is a video game developed by Halfbrick. It wasreleased April 21, 2010 for iPod Touch and iPhone devices, July 12, 2010 forthe iPad, September 17, 2010 for Android OS devices. Fruit Ninja was wellreceived by critics and consumers. The iOS version sold over 200,000 copies inits first month. By March 2011 total downloads across all platforms exceeded 20million. It was also named one of Time magazine's 50 Best iPhone Apps of 2011.


 

 

"Swipeyour finger across the screen to deliciously slash and splatter fruit like atrue ninja warrior. Be careful of bombs - they are explosive to touch and willput a swift end to your juicy adventure!" - As it described onhttp://www.fruitninja.com/, in Fruit Ninja the player slices fruit with a bladecontrolled via a touch pad. As the fruit is thrown onto the screen, the player swipestheir finger across the screen to create a slicing motion, attempting to slicethe fruit in parts. Extra points are awarded for slicing multiple fruits withone swipe, and players can use additional fingers to make multiple slicessimultaneously. Players must slice all fruit; if three pieces of fruit aremissed the game ends. Bombs are occasionally thrown onto the screen, and willalso end the game should the player slice them.

Maybe you are an excellent player of Fruit Ninja, but in this problem we focus onsomething more mathematically. Consider a certain slicing trace you create onthe touch pad, you slice a fruit (an apple or a banana or something else) intotwo parts at once. Can you figure out the volume of each part?

 

 

Impossibletask? Let us do some simplification by define our own Fruit Ninja game.
In our new Fruit Ninja game, only one kind of fruit will be thrown into the air- watermelon. What's more, the shape of every watermelon is a special Ellipsoid(details reachable at http://en.wikipedia.org/wiki/Ellipsoid) that it's polarradius OC is always equals to it's equatorial radius OB. Formally, we can getthis kind of solid by revolving a certain ellipse on the x-axis. And theslicing trace the player created (represented as MN in Illustration III) is aline parallel to the x-axis. The slicing motion slice the watermelon into twoparts, and the section (shown as the dark part in Illustration III) is parallelto plane x-O-y.

Given the length of OA, OB, OM (OM is thedistance between the section and plane x-O-y), your task is to figure out thevolume of the bigger part.

 

输入

Thereare multiple test cases. First line is an integer T (T ≈ 100), indicating thenumber of test cases.

For each test case, there are three integers: a, b, H, corresponding the lengthof OA, OB, OM. You may suppose that0 < b <= a <= 100 and 0 <= H <= 100.

输出

Outputcase number "Case %d: " followed by a floating point number (round to3) for each test case.

示例输入

4

2 2 0

2 2 1

2 2 2

2 2 3

示例输出

Case 1: 16.755

Case 2: 28.274

Case 3: 33.510

Case 4: 33.510


时间紧急,图片处理的不是太好,大家将就看吧

 /***********************

刚看这个题目确实被吓到了,仔细看了以后你会发现这就是一个高数上的三重积分的问题。

求椭球缺的体积参考:http://zhidao.baidu.com/link?url=VGl0sArergv86msYl9wilJwfMk29d--x2frRo0pNEkRoY7-3K2r5sbL-aR15Vcd_VwKLU2xpmEMFUgGVq7SI1K

椭球长半轴 a ,短半轴 b ,高 h,(h 就是 题中 的 h)

则椭球缺体积可以这样求:(Word 里的数学符号不能显示,截个图片吧)

PI 为圆周率


然后用这个体积加上半球的体积就OK了。。

公式: V = 2/3*PI*a*b*b+PI *a*(b*h—h^3/(3*b))

 Code:

#include <iostream>
#include<stdio.h>
using namespace std;
const double PI =  3.14159265358;  //PI  = 3.1415926535  时 WA,所以注意精度
int main()
{
    int t,count = 1;;
    double a,b,h,V;
    scanf("%d",&t);
    while(t--)
    {
        scanf("%lf%lf%lf",&a,&b,&h);
        if(h>=b)
            h = b;
        V = 2.0/3.0*PI*a*b*b+PI*a*b*h-PI*a*h*h*h/(3.0*b);
        printf("Case %d: ",count++);
        printf("%.3lf\n",V);
    }
    return 0;
}



posted on 2014-04-27 18:43  CY_ 阅读( ...) 评论( ...) 编辑 收藏

转载于:https://www.cnblogs.com/gray1566/p/3704290.html

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值