游客 Signup | Login
中文 | En

3643 - 装信

通过次数

0

提交次数

0

Time Limit : 1 秒 Memory Limit : 128 MB

Arthur写了n(1<n<999)封信,同时为每一封信写1个信封,共n个信封。如果把所有的信都装错了信封,问共有

多少种装法?

Input

信封个数:n(1<n<999)

Output

为装错的个数

Examples

Input Format

3

Output Format

2

Solution C

#include <stdio.h>
long long fun(int x)
{
	if(x==1)
	return 0;
	if(x==2)
	return 1;
	else
	return ((x-1)*(fun(x-2)+fun(x-1)));
}
int main()
{
	int n;
	while(scanf("%d",&n)!=EOF)
	{
		printf("%lld\n",fun(n));
	}
	return 0;
}

Solution C++

#include <bits/stdc++.h>
using namespace std;
#define maxn 100000007
int main()
{
	int d[1005];
	d[2]=1;d[1]=0;
	for (int i=3;i<999;i++){
		d[i]=(i-1)*(d[i-1]+d[i-2])%maxn;
	}
	
	int n;
	while(~scanf("%d",&n)){
		printf("%d\n",d[n]);
	}
	
	return 0;
}