Description
同時給n個網友每人寫了一封信,這都沒什麼,要命的是,他竟然把所有的信都裝錯了信封!注意了,是全部裝錯喲!
現在的問題是:請大家幫可憐的8006同學計算一下,一共有多少種可能的錯誤方式呢?
Input
輸入數據包含多個多個測試實例,每個測試實例佔用一行,每行包含一個正整數n(1<n<=20),n表示8006的網友的人數。
Output
對於每行輸入請輸出可能的錯誤方式的數量,每個實例的輸出佔用一行。
Sample Input
2
3
Sample Output
1
2
Solution
錯排問題,狀態轉移方程
#include <stdio.h>
long long F[21]; //數值較大選用long long
int main()
{
F[1] = 0;
F[2] = 1; //初始值
for (int i = 3; i <= 20; i++)
//遞推求得數列每一個數字
F[i] = (i - 1) * F[i - 1] + (i - 1) * F[i - 2];
int n;
while (scanf("%d", &n) != EOF)
printf("%lld\n", F[n]); //輸出
return 0;
}