⑨要写信

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)种放置方法。
*/

以上是关于⑨要写信的主要内容,如果未能解决你的问题,请参考以下文章

CodeVS 1697-⑨要写信

outlook邮箱怎么写信和发信

读/写信息到另一个线程中的类

Polymer 2.0 - 你能写信给 fs 吗?

为什么TCP要3次握手?4次挥手?

CSSCSS 背景设置 ⑨ ( 背景半透明设置 )