HZAU 1099 Die Die Die!(分类讨论水题)

<center style="color&#58;rgb&#40;51&#44;51&#44;51&#41;&#59;font&#45;family&#58;&#39;Helvetica Neue&#39;&#44; Helvetica&#44; Arial&#44; sans&#45;serif&#59;font&#45;size&#58;14px&#59;">

1099: Die Die Die!

Time Limit: 1 Sec   Memory Limit: 128 MB
Submit: 3514   Solved: 483
[ Submit][ Status][ Web Board] </center>

Description

do not play Overwatch
do not not play Overwatch
do not play Overwatch
do not not play Overwatch
the game will consume your soul
and drag you to the depth of hell
I'm not f**king joking around bro
I woke up at nine pm dawg
this game is not f**king joke bro
I stayed up till five pm dawg
this is a f**king problem dawg
what the f**k did Blizzard do to make it so addictive
I never play no Diablo
I never play no World of Warcraft
I never f**k with no Hearthstone
who give a f**k about the Heroes of the Storm
and you god damn bitches sweet ass 
that ya boy never put his dick anywhere near no Starcraft
but Overwatch
Overwatch
What the f**k's in Overwatch!
But you are still playing Overwatch ~2333333333,and now you control a character who‘s name is Reaper. The most powerful skill of him is called Death Blossom, when he use this skill, Reaper will shot around to kill his enemy. Here is the question, you want to know the area of the skill that Reaper can kill his enemy. We assume that each time when Reaper using this skill, he will never move, so we can suppose that he is a point, and the bullets which he shots will fly L meters, because he is so fast that he can shot 360 degrees around him. Now, please tell me the area of his skill. To make it more interesting, you must just print n bits after decimal point.

Input

The input file will contain several tests,it will end with EOF, each test contain two integers L and n .(0<=L<=25,0<=n<=6)

Output

Your answer .Please notice that when your answer is 0, as you can see 0 is the same to 0.0 or 0.00 or 0.000 ……, so you should just print 0. And when the n is 0, you should not print decimal point.

Sample Input

1 0
1 1
1 4

Sample Output

3
3.1
3.1415 


题意:

求圆的面积,并控制小数点后输出位数。

因为.nf没办法实时控制那个n,所以只能分类讨论n的值。并且这题要注意.f格式的自动四舍五入问题,所以要对末位的更小的那一位进行是否<5的特判。

注:以后坚决不会再用fixed<<setprecision(n)了...事实证明C++里面的控制格式输出符根本毫无卵用...还有那个hex之类的...都不要用了,没用的。


代码:

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<queue>
#include<stack>
#include<cstdlib>
#include<iomanip>
#define PI 3.14159265358979
using namespace std;
 
 
int main()
{
    int l,n;
    while(scanf("%d%d",&l,&n)!=EOF)
    {
        if(l==0)
        {
            cout<<"0"<<endl;
            continue;   
        }
        double area=PI*l*l;
        int length=area/10;
         long long num=area*pow(10,n+1);
         if(num%10<5)
         {
            if(n==0)printf("%.0f\n",area);
            else if(n==1)printf("%.1f\n",area);
            else if(n==2)printf("%.2f\n",area);
            else if(n==3)printf("%.3f\n",area);
            else if(n==4)printf("%.4f\n",area);
            else if(n==5)printf("%.5f\n",area);
            else if(n==6)printf("%.6f\n",area);
         }
         else  
         {
            area=area-5*pow(10,-(n+1));
            if(n==0)printf("%.0f\n",area);
            else if(n==1)printf("%.1f\n",area);
            else if(n==2)printf("%.2f\n",area);
            else if(n==3)printf("%.3f\n",area);
            else if(n==4)printf("%.4f\n",area);
            else if(n==5)printf("%.5f\n",area);
            else if(n==6)printf("%.6f\n",area);
         }
    }
    return 0;
}
/**************************************************************
    Problem: 1099
    User: 2016_hhu09
    Language: C++
    Result: Accepted
    Time:0 ms
    Memory:1592 kb
****************************************************************/

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务