题意
n<=107 20MB
题解
也就是给n个点,把他们一个分为一组,或两个分为一组,有多少种方法。
空间大点随便做。
我们靠递推。
一个新点,要不自己一组,要不和前面的一个点构成一组。
所以f[0]=f[1]=1
f[i]=f[i-1]*f[i-2]*(i-1)就行了
1 #include2 #include 3 #include 4 #include 5 #include 6 using namespace std; 7 const int mod=14233333; 8 long long n,a,b,c; 9 int main(){10 scanf("%lld",&n);11 a=b=1;12 for(int i=2;i<=n;i++){13 c=b+a*(i-1);14 c%=mod; 15 a=b;b=c;16 }17 printf("%lld",c);18 return 0;19 }