不容易系列之 4 考新郎

2021-09-03 01:23:12 字數 1838 閱讀 3163

國慶期間,省城hz剛剛舉行了一場盛大的集體婚禮,為了使婚禮進行的豐富一些,司儀臨時想出了有乙個有意思的節目,叫做"考新郎",具體的操作是這樣的:

首先,給每位新娘打扮得幾乎一模一樣,並蓋上大大的紅蓋頭隨機坐成一排;

然後,讓各位新郎尋找自己的新娘.每人只准找乙個,並且不允許多人找乙個.

最後,揭開蓋頭,如果找錯了物件就要當眾跪搓衣板…

看來做新郎也不是容易的事情…

假設一共有n對新婚夫婦,其中有m個新郎找錯了新娘,求發生這種情況一共有多少種可能.

input

輸入資料的第一行是乙個整數c,表示測試例項的個數,然後是c行資料,每行包含兩個整數n和m(1output

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

sample input

22 2

3 2sample output13

題解:首先明白錯排的定義:一段序列中一共有n個元素,那麼可知這些元素一共有n!種排列方法。假如在進行排列時,原來所有的元素都不在原來的位置,那麼稱這個排列為錯排。而錯排數所指的就是在一段有n個元素的序列中,有多少種排列方式是錯排。

遞迴關係:d(n)=(n−1)(d(n−1)+d(n−2))特別地有d(1)=0,d(2)=1;

錯排公式:d(n)=(n!)[(−1)0/0!+(−1)1/(1!)+(−1)2/(2!)+(−1)3/(3!)+…+(−1)n/(n!)];

其中n!=n∗(n−1)∗(n−2)∗…3∗2∗1特別地有0!=11!=1

遞推思想:

​ 一共分為兩步

第一步:

​ 錯排(不能選擇自己本來就在的位置)第乙個元素,在n個位置中任選乙個位置,有 n-1 種選法。

第二步:

​ 錯排其餘n-1個元素,也是需要分情況和種類的。因為這需要看第一步的結果,如果第乙個元素落在第k個位置上,第二步就需要把k號元素進行錯排,k號元素錯排位置的不同將導致不同的情況會發生:

①.假設k號元素正好落在了第乙個元素的位置,那麼就可以將第乙個元素和第k個元素完全剔除出去,因為相當於只是他們兩者互換了位置,其他元素暫時還沒有發生變動。留下來的n-2元素進行錯排的話,那麼我們就可以得到了d(n-2)種 的錯排方式。

②.若k號元素不排到第乙個元素的位置,我們可以暫時將現在排在k號位置的第乙個元素剔除出去,生下來的就只包含k號元素和原來n-2個的元素了。這時,我們可以將原來的第乙個元素的位置看做是現在k號元素的原本位置,因為k號元素不能夠放在原來的位置上,所以就相當於是原來的n-2個元素和k共計n-1個元素進行完全的錯排。那麼一共就有d(n-1)種方法。

綜上所述:第二步得到d(n-1)+d(n-2)種方法,第一步是n-1種,由於是分步進行,所以結果為(n-1)*[d(n-1)+d(n-2)]種方法。

在本題中 在n對新人裡面挑出m對新人來錯排,那麼實際讓我們求得就是挑出m對新人的方法乘以m對新人的錯排方法。就是下面這個公式。

cmn∗(n−1)∗[d(n−1)+d(n−2)]
ac**

#include typedef long long ll;

using namespace std;

ll factorial(int n, int m) //求組合數

int main()

; int i = 3;

int temp;

cin >> t;

while(t--)

for( ; i <= m; i++) //錯排

a[i] = (i-1)*(a[i-1]+a[i-2]);

cout << factorial(n,m)*a[m] << endl;//輸出錯排*組合數

}}

不容易系列之 4 考新郎

題目描述 國慶期間,省城hz剛剛舉行了一場盛大的集體婚禮,為了使婚禮進行的豐富一些,司儀臨時想出了有乙個有意思的節目,叫做 考新郎 具體的操作是這樣的 首先,給每位新娘打扮得幾乎一模一樣,並蓋上大大的紅蓋頭隨機坐成一排 然後,讓各位新郎尋找自己的新娘.每人只准找乙個,並且不允許多人找乙個.最後,揭開...

不容易系列之 4 考新郎

國慶期間,省城hz剛剛舉行了一場盛大的集體婚禮,為了使婚禮進行的豐富一些,司儀臨時想出了有乙個有意思的節目,叫做 考新郎 具體的操作是這樣的 首先,給每位新娘打扮得幾乎一模一樣,並蓋上大大的紅蓋頭隨機坐成一排 然後,讓各位新郎尋找自己的新娘.每人只准找乙個,並且不允許多人找乙個.最後,揭開蓋頭,如果...

不容易系列之 4 考新郎

國慶期間,省城hz剛剛舉行了一場盛大的集體婚禮,為了使婚禮進行的豐富一些,司儀臨時想出了有乙個有意思的節目,叫做 考新郎 具體的操作是這樣的 首先,給每位新娘打扮得幾乎一模一樣,並蓋上大大的紅蓋頭隨機坐成一排 然後,讓各位新郎尋找自己的新娘.每人只准找乙個,並且不允許多人找乙個.最後,揭開蓋頭,如果...