acm 光棍節的快樂

2021-06-19 03:54:26 字數 1251 閱讀 5073

時間限制:

1000

ms  

| 記憶體限制:

65535

kb

難度: 2

描述

光棍們,今天是光棍節。聰明的

ns想到了乙個活動來豐富這個光棍節。

規則如下:

每個光棍在乙個紙條上寫乙個自己心儀女生的名字,然後把這些紙條裝進乙個盒子裡,這些光

棍依次抽取一張紙條,如果上面的名字就是自己心儀的女生,那麼主持人就在現場給該女生打**,告訴這個光棍對她的愛慕之情,並讓光棍當場表白,並得到現場所有人的祝福,沒抽到的,嘿嘿就可以倖免了。

假設一共有

n個光棍

,其中有

m個沒有抽到自己的紙條

,求發生這種情況一共有多少種可能.。

輸入

每行包含兩個整數n和m(1<=20),以eof結尾。

輸出對於每個測試例項,請輸出一共有多少種發生這種情況的可能,每個例項的輸出佔一行。

樣例輸入

2 2

3 2

樣例輸出

1

3

上傳者林海雪原

解題思路:

這個叫全錯排列問題,最早是由尤拉給出的答案.我們不妨設n個人的拿法為f(n),則f(n)=(n-1)[f(n-1)+f(n-2)].f(0)=0,f(1)=1.這個遞推公式是很容易證明的.

證明如下:

設n個人為a,b,c,d...,n張卡為a,b,c,d...

若a拿b的卡b,b也拿a的卡a,則顯然只剩下n-2個人拿卡,自然是f(n-2)種了.

若a拿b的卡b,b沒拿a的卡a(與"b沒拿b的卡b"相同),則顯然與n-1個人拿卡一樣,自然是f(n-1)種了.

而a不一定拿b,只要是b,c,d...(n-1個)中的乙個就可以了,所以在f(n-1)+f(n-2)再乘上n-1就行了.

如果你學過解抽象函式方程的話,f(n)=(n-1)[f(n-1)+f(n-2)]在自然數內的解是f(n)=n![1/2!-1/3!+...+(-1)^n/n!](n=1時f(n)=1).

**:

#include

int main()

for(i=n;i>n-m;i--)

for(i=m;i>0;i--)

if(n==m)

printf("%lld\n",f[m]);

else

}}

光棍節快樂

光棍節就是今天,11月11日,多麼形象且有意思的節日啊。也許今天注定我們將孤獨,但是我們的影子跟隨著我們,所以我們不算孤獨。孤獨又有什麼可怕,孤獨使人高傲,孤獨使人冷靜,孤獨使人思考,孤獨使人寂寞,孤獨使 淚 上午11點11分的時候,我正在忙,我沒有關注網路,現在是晚上,冬天的晚上,可以說是夜深人靜...

1149 光棍節的快樂

光棍節的快樂 time limit 1000ms memory limit 65536k total submit 125 accepted 32 description 光棍們,今天是光棍節。聰明的ns想到了乙個活動來豐富這個光棍節。規則如下 每個光棍在乙個紙條上寫乙個自己心儀女生的名字,然後把這...

光棍節的快樂 (錯排)

時間限制 1000 ms 記憶體限制 65535 kb 難度 2描述 光棍們,今天是光棍節。聰明的ns想到了乙個活動來豐富這個光棍節。規則如下 每個光棍在乙個紙條上寫乙個自己心儀女生的名字,然後把這些紙條裝進乙個盒子裡,這些光棍依次抽取一張紙條,如果上面的名字就是自己心儀的女生,那麼主持人就在現場給...