sdut 2416:Fruit Ninja II(第三届山东省省赛原题,数学题)
Fruit Ninja II
Time Limit: 5000MS Memory limit: 65536K
题目描述
Have you ever played a popular game named "Fruit
Ninja"?
Fruit Ninja (known as Fruit Ninja HD on the iPad and Fruit Ninja
THD for Nvidia Tegra 2 based Android devices) is a video game developed by
Halfbrick. It was released April 21, 2010 for iPod Touch and iPhone devices,
July 12, 2010 for the iPad, September 17, 2010 for Android OS devices. Fruit
Ninja was well received by critics and consumers. The iOS version sold over
200,000 copies in its first month. By March 2011 total downloads across all
platforms exceeded 20 million. It was also named one of Time magazine‘s 50 Best
iPhone Apps of 2011.
"Swipe your finger across the screen to deliciously slash and splatter fruit
like a true ninja warrior. Be careful of bombs - they are explosive to touch and
will put a swift end to your juicy adventure!" - As it described on
http://www.fruitninja.com/, in Fruit Ninja the player slices fruit with a blade
controlled via a touch pad. As the fruit is thrown onto the screen, the player
swipes their finger across the screen to create a slicing motion, attempting to
slice the fruit in parts. Extra points are awarded for slicing multiple fruits
with one swipe, and players can use additional fingers to make multiple slices
simultaneously. Players must slice all fruit; if three pieces of fruit are
missed the game ends. Bombs are occasionally thrown onto the screen, and will
also end the game should the player slice them.
Maybe you are an
excellent player of Fruit Ninja, but in this problem we focus on something more
mathematically. Consider a certain slicing trace you create on the touch pad,
you slice a fruit (an apple or a banana or something else) into two parts at
once. Can you figure out the volume of each part?
Impossible task? 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 polar radius OC is always equals to it‘s equatorial radius OB. Formally, we
can get this kind of solid by revolving a certain ellipse on the x-axis. And the
slicing trace the player created (represented as MN in Illustration III) is a
line parallel to the x-axis. The slicing motion slice the watermelon into two
parts, and the section (shown as the dark part in Illustration III) is parallel
to plane x-O-y.
Given the length of OA, OB, OM (OM is the distance
between the section and plane x-O-y), your task is to figure out the volume of
the bigger part.
输入
There are multiple test cases. First line is an integer T (T ≈
100), indicating the number of test cases.
For each test case, there are
three integers: a, b, H, corresponding the length of OA, OB, OM. You
may suppose that 0 < b <= a <= 100 and 0 <= H <= 100.
输出
Output case number "Case %d: " followed by a floating point number (round to 3) 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://www.fruitninja.com/
http://en.wikipedia.org/wiki/Fruit_Ninja
http://en.wikipedia.org/wiki/Ellipsoid
来源
1 #include <iostream>
2 #include <stdio.h>
3 #include <cmath>
4 const double PI = acos(-1);
5 using namespace std;
6
7 int main()
8 {
9 int T;
10 cin>>T;
11 for(int i=1;i<=T;i++){
12 double a,b,m;
13 cin>>a>>b>>m;
14 double Vsum = 4*PI*a*b*b/3/2;
15 double Vsma = PI*a*b*(m-m*m*m/(3*b*b));
16 if(m>=b)
17 printf("Case %d: %.3lf\n",i,2*Vsum);
18 else
19 printf("Case %d: %.3lf\n",i,Vsum+Vsma);
20 }
21 return 0;
22 }
23
24
25 /**************************************
26 Problem id : SDUT OJ J
27 User name : Miracle
28 Result : Accepted
29 Take Memory : 540K
30 Take Time : 0MS
31 Submit Time : 2014-04-27 11:53:58
32 **************************************/
Freecode : www.cnblogs.com/yym2013