組合數學 全錯位排序公式

2021-07-27 21:44:57 字數 1450 閱讀 2440

problem description

大家常常感慨,要做好一件事情真的不容易,確實,失敗比成功容易多了!

做好「一件」事情尚且不易,若想永遠成功而總從不失敗,那更是難上加難了,就像花錢總是比掙錢容易的道理一樣。

話雖這樣說,我還是要告訴大家,要想失敗到一定程度也是不容易的。比如,我高中的時候,就有乙個神奇的女生,在英語考試的時候,竟然把40個單項選擇題全部做錯了!大家都學過概率論,應該知道出現這種情況的概率,所以至今我都覺得這是一件神奇的事情。如果套用一句經典的評語,我們可以這樣總結:乙個人做錯一道選擇題並不難,難的是全部做錯,乙個不對。

不幸的是,這種小概率事件又發生了,而且就在我們身邊:

事情是這樣的——hdu有個網名叫做8006的男性同學,結交網友無數,最近該同學玩起了浪漫,同時給n個網友每人寫了一封信,這都沒什麼,要命的是,他竟然把所有的信都裝錯了信封!注意了,是全部裝錯喲!

input

輸入資料報含多個多個測試例項,每個測試例項占用一行,每行包含乙個正整數n(1

output

對於每行輸入請輸出可能的錯誤方式的數量,每個例項的輸出占用一行。

sample input

2 3

sample output

1 2

author

lcymean:

analyse:

就是錯排公式的簡單運用。下面來了解一下錯排公式。

所謂錯排就是全錯位排序公式,即被著名數學家尤拉(leonhard euler,1707-1783)稱為組合數論的乙個妙題的「裝錯信封問題」,他求解這樣的問題:

乙個人寫了n封不同的信及相應的n個不同的信封,他把這n封信都裝錯了信封,問都裝錯信封的裝法有多少種?

遞推公式:f(n)=(n-1) *

time complexity:

o(n)

source code:

// memory   time

// 1347k 0ms

// by : snarl_jsb

// 2014-09-15-21.27

#include#include#include#include#include#include#include#include#include#include#include#include#define n 1000010

#define ll long long

using namespace std;

long long a[n];

void cuopai(long long n) formula : f(n)=(n-1)* ;

}int main()

return 0;

}

全錯位排序公式推導

全錯位排列被著名數學家尤拉 leonhard euler,1707 1783 稱為 組合數論的乙個妙題 的 裝錯信封問題 的兩個特例。裝錯信封問題 是由當時最有名的數學家約翰 伯努利 johann bernoulli,1667 1748 的兒子丹尼爾 伯努利 danidbernoulli,1700 ...

NYOJ 451 組合數 全錯位

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

組合數公式

若表示在 n 個物品中選取 m 個物品,則如存在下述公式 所以可以用遞推算組合數 題目描述 開學了,學校又迎來了好多新生。acmer想為新生準備乙個節目。來報名要表演節目的人很多,多達n個,但是只需要從這n個人中選m個就夠了,一共有多少種選擇方法?輸入 測試例項包括多組測試資料,每組資料佔一行。每組...