⑨要写信
Posted 【對策局】
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了⑨要写信相关的知识,希望对你有一定的参考价值。
【题目描述】
某日,琪露诺写了N封信要装到N个信封里面,却全都装错了……现在想知道有多少种装错的可能性。
【输入描述】
信和信封的数量N。
【输出描述】
装错的可能性的数量。
【样例输入】
输入样例1
2
输入样例2
4
【样例输出】
输出样例1
1
输出样例2
9
【数据范围及提示】
1≤N≤100
源代码: #include<cstdio> int n,f[101]; int main() { scanf("%d",&n); f[1]=0; f[2]=1; for (int a=3;a<=n;a++) f[a]=(a-1)*(f[a-1]+f[a-2]); //应用了错排公式。 printf("%d",f[n]); //本题还应使用高精度算法,但在此忽略。 return 0; } /* 数论——《错排公式》: f[n]=(n-1)*(f[n-1]+f[n-2]) Step 1: 把第n个元素放在任意的一个位置,例如位置k(除位置n外)。 Step 2: 放置第k个元素无非为以下两种可能: (1)放置在位置n: 则剩下的(n-2)个元素就有f(n-2)种放置方法。 (2)不放置在位置n: 则剩下的(n-2)个元素就有f(n-1)种放置方法。 */
以上是关于⑨要写信的主要内容,如果未能解决你的问题,请参考以下文章