最近做了几道卡特兰数的题,发现单独考卡特兰数的题貌似不多,卡特兰一般结合一些东西出现
1.高精(你要会python就当我没说)当没模数时要用到
2.质因数分解:(重点)
1 for(int i=2;i<=n;++i) 2 { 3 if(!v[i]) 4 for(int j=2;j*i<=nn;++j)v[i*j]=1,fr[i*j]=i; 5 }常用代码
在筛素数时瞎处理一下。。。
1 --sum[n+1]; 2 for(int i=nn;i>n;--i) 3 { 4 ++sum[i]; 5 if(!v[i]) 6 { 7 q.pb(i); 8 } 9 else 10 { 11 sum[fr[i]]+=sum[i]; 12 sum[i/fr[i]]+=sum[i]; 13 } 14 } 15 for(int i=n;i>=2;--i) 16 { 17 --sum[i]; 18 if(!v[i]) 19 { 20 q.pb(i); 21 } 22 else 23 { 24 sum[fr[i]]+=sum[i]; 25 sum[i/fr[i]]+=sum[i]; 26 } 27 }求卡特兰数
一层一层地下传指数
讲道理,这样处理出来后再加一些快速幂或高精乘之类的东西就可以求出卡特兰数。。