problem description
hdu 2006'10 acm contest的頒獎晚會隆重開始了!
為了活躍氣氛,組織者舉行了乙個別開生面、獎品豐厚的**活動,這個活動的具體要求是這樣的:
首先,所有參加晚會的人員都將一張寫有自己名字的字條放入**箱中;
然後,待所有字條加入完畢,每人從箱中取乙個字條;
最後,如果取得的字條上寫的就是自己的名字,那麼「恭喜你,中獎了!」
大家可以想象一下當時的氣氛之熱烈,畢竟中獎者的獎品是大家夢寐以求的twins簽名照呀!
不過,正如所有試圖設計的喜劇往往以悲劇結尾,這次**活動最後竟然沒有乙個人中獎!
我的神、上帝以及老天爺呀,怎麼會這樣呢?
不過,先不要激動,現在問題來了,你能計算一下發生這種情況的概率嗎?
不會算?難道你也想以悲劇結尾?!
input
輸入資料的第一行是乙個整數c,表示測試例項的個數,然後是c 行資料,每行包含乙個整數n(1
output
對於每個測試例項,請輸出發生這種情況的百分比,每個例項的輸出佔一行, 結果保留兩位小數(四捨五入),
具體格式請參照sample output。
sample input12
sample output
50.00%
分析:錯排問題(dn)
顯然d1
=0,d
2=1。
當n≥3時,不妨設n排在了第k位,其中k≠n,也就是1≤k≤n-1。那麼我們現在考慮第n位的情況。
所以當n排在第k位時共有ddn=(n-1)(dn-1+dn-2)n-2+d
n-1種錯排方法,
又k有從1到n-1共n-1種取法,我們可以得到:
注意點:
1 #include2 #include3using
namespace
std;45
long
long jc (inti)6
12int
main ()
1327
if(m==1
)28 cout<2)<"%"
<30else
if(m==2
)31 cout<2)<<"
50.00%
"<33else
34 cout<2)<1.0)*100
<<"%"
<37return0;
38 }
錯排問題 hdu2048
錯排問題 問題 十本不同的書放在書架上。現重新擺放,使每本書都不在原來放的位置。有幾種擺法?這個問題推廣一下,就是錯排問題,是組合數學中的問題之一。考慮乙個有n個元素的排列,若乙個排列中所有的元素都不在自己原來的位置上,那麼這樣的排列就稱為原排列的乙個錯排。n個元素的錯排數記為d n 研究乙個排列錯...
杭電2048錯排問題
首先分析題目,題目中要求計算出沒有乙個人獲獎的概率,即所有人全部錯排的情況除於所有可能的情況 然後,在這裡,重點分析錯排情況共有多少種的演算法 首先考慮,如果有n 1個人,並且這n 1個人已經完成了完全錯排,則有f n 1 種可能,那麼,現在又來了乙個人 那麼後來的第n個人可以通過用自己的姓名牌去和...
錯排問題 hdu2048
n個有序的元素有n 種排列方式,如果乙個排列使得所有元素都不在原來的位置上的排列就叫錯排。1 錯排有兩種方法進行計算,一種是基於容斥定理最後得出來的乙個階乘的計算式,計算機對於階乘非常的不友好,因此第一種很少使用。2 由於階乘的原因,我們不得不再尋找一種計算錯排dn的方法。首先我們以1,2,3,4的...