PRoblem Description HDU 2006’10 ACM contest的頒獎晚會隆重開始了! 為了活躍氣氛,組織者舉行了一個別開生面、獎品豐厚的抽獎活動,這個活動的具體要求是這樣的:
首先,所有參加晚會的人員都將一張寫有自己名字的字條放入抽獎箱中; 然后,待所有字條加入完畢,每人從箱中取一個字條; 最后,如果取得的字條上寫的就是自己的名字,那么“恭喜你,中獎了!”
大家可以想象一下當時的氣氛之熱烈,畢竟中獎者的獎品是大家夢寐以求的Twins簽名照呀!不過,正如所有試圖設計的喜劇往往以悲劇結尾,這次抽獎活動最后竟然沒有一個人中獎!
我的神、上帝以及老天爺呀,怎么會這樣呢?
不過,先不要激動,現在問題來了,你能計算一下發生這種情況的概率嗎?
不會算?難道你也想以悲劇結尾?!
Input 輸入數據的第一行是一個整數C,表示測試實例的個數,然后是C 行數據,每行包含一個整數n(1
import java.util.*;class Main{ public static void main(String args[]){ Scanner sc=new Scanner(System.in); int c=sc.nextInt(); while(c-->0){ int n=sc.nextInt();double y; switch(n){ case 2:y=1.0/2*100;break; default : y=(z(n)*1.0)/(JieCheng(n)*1.0)*100; } // x=100*y+0.005; System.out.println(String.format("%.2f", y)+"%"); // System.out.println(y); } } public static long JieCheng(int n){ long s=1; for(int i=1;i<n+1;i++){ s=s*i; } return s; } public static long z(int n){ long x; long f[] = new long[21]; f[2] = 1; f[3] = 2; for (int i = 4; i < 21; i++) { f[i] = (i-1) * (f[i-1] + f[i-2] ); } x=f[n]; return x; } }新聞熱點
疑難解答