luogu P3795 钟氏映射(递推)

题意

n<=107 20MB

题解

也就是给n个点,把他们一个分为一组,或两个分为一组,有多少种方法。

空间大点随便做。

我们靠递推。

一个新点,要不自己一组,要不和前面的一个点构成一组。

所以f[0]=f[1]=1

f[i]=f[i-1]*f[i-2]*(i-1)就行了

 1 #include<iostream>
 2 #include<cstring>
 3 #include<cstdio>
 4 #include<cmath>
 5 #include<algorithm>
 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 }
原文地址:https://www.cnblogs.com/Xu-daxia/p/9564831.html