📄 1465.cpp
字号:
#include<stdio.h>
void main()
{
int a,i;
__int64 s[21];
s[1]=0;
s[2]=1;
for(i=3;i<=20;i++)
s[i]=(i-1)*(s[i-1]+s[i-2]);
//寻找递规关系
/*1465不容易系列之一(错排公式)
当有N封信的时候,前面N-1封信可以有N-1或者 N-2封错装
前者,对于每一种错装,可以从N-1封信中任意取一封和第 N封错装,故=F(N-1) * (N-1)
后者,只能是没装错的那封信和第N封信交换信封,没装错的那封信可以是前面N-1封信中的任意一个,故= F(N-2) * (N-1)
由于数超出了32位int的范围,故在这里用64位的
*/
while(scanf("%d",&a)!=EOF)
printf("%I64d\n",s[a]);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -