hdoj 2048神、神、そして神様(プッシュ、全誤列)

2002 ワード

神様、神様、神様
Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 32717    Accepted Submission(s): 13379
Problem Description
HDU 2006'10 ACM contestの授賞式が盛大に始まりました!
雰囲気を盛り上げるために、組織者は個別に生麺を開き、賞品が豊富な抽選活動を行いました.この活動の具体的な要求はこうです.
まず、パーティーに参加したすべての人は自分の名前が書かれたメモを抽選箱に入れた.
それから、すべてのメモが入ってから、一人一人が箱からメモを取ります.
最後に、取得したメモに自分の名前が書かれていれば、「おめでとう、当選しました!」
当時の盛り上がりを想像してみてください.当選者の賞品はみんなが夢見ていたTwinsサイン写真ですね.しかし、すべてのデザインを試みた喜劇が悲劇的に終わるように、今回の抽選活動は最後に当選した人は一人もいなかった.
私の神、神と神様、どうしてこんなことになったのですか.
しかし、まず興奮しないでください.今問題が来ました.このような状況が発生する確率を計算してもらえますか.
計算できないの?あなたも悲劇で終わりたいの?!
 
Input
入力データの最初の行は整数Cであり、試験例の個数を表し、次いでC行データであり、各行には整数n(1 
Output
各テストインスタンスについて、このような状況が発生した割合を出力してください.各インスタンスの出力は1行を占め、結果は2桁の小数(四捨五入)を保持します.具体的なフォーマットはsample outputを参照してください.
 
Sample Input

   
   
   
   
1 2

 
Sample Output

   
   
   
   
50.00%

 
Author
lcy
 
Source
繰返し求解特別テーマ練習(For Beginner)
構想:全誤列と全配列、G++提出の
#include
#include
using namespace std;
int main()
{
   int t,n;
   double f[30];
   f[0]=0;
   f[1]=0;
   f[2]=1;
   for(int i=3;i<=30;i++)
   {
       f[i]=(i-1)*(f[i-1]+f[i-2]);
   }
   scanf("%d",&t);
   while(t--)
   {
       scanf("%d",&n);
       double s=1.0;
       for(int i=1;i<=n;i++)
       {
           s*=i;
       }
       double m=100*f[n]/s;
       printf("%.2lf%%",m);
   }
    return 0;
}