王道计算机机试——不容易系列错误排列方法
题目描述
有个网名叫做 8006 的男性同学,结交网友无数,最近该 同学玩起了浪漫,同时给 n 个网友每人写了一封信,这都没什么,要命的是,他 竟然把所有的信都装错了信封!注意了,是全部装错哟!现在的问题是:请大家 帮可怜的 8006 同学计算一下,一共有多少种可能的错误方式呢?
输入: 输入数据包含多个多个测试实例,每个测试实例占用一行,每行包含一个正 整数 n(1<n<=20),n 表示 8006 的网友的人数。
输出: 对于每行输入请输出可能的错误方式的数量,每个实例的输出占用一行。
样例输入:
2
3
样例输出:
1
2
代码
#include<stdio.h>
long long F[21];
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", F[n]);//输出
}
return 0;
}