…我并不知道为什么事卡特兰数,反正用dp打的表就是卡特兰数,因为是两个三角所以再乘个2

卡特兰数使用\( h(n)=\frac{C_{2n}^{n}}{n+1} \)因为范围比较大所以组合数部分用卢卡斯定理来求。

#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<algorithm>
using namespace std;
const int mod=10007,N=10020;
int n,fac[N],inv[N];
int ksm(int a,int b)
{
a=a%mod;
int r=1;
while(b)
{
if(b&1)
r=r*a%mod;
a=a*a%mod;
b>>=1;
}
return r;
}
int C(int n, int m)
{
if(n<m)
return 0;
return fac[n]*inv[m]%mod*inv[n-m]%mod;
}
int lucas(int n,int m)
{
return m==0?1:C(n%mod,m%mod)*lucas(n/mod,m/mod)%mod;
}
int main()
{
fac[0]=1;
for(int i=1;i<mod;i++)
fac[i]=fac[i-1]*i%mod;
inv[mod-1]=ksm(fac[mod-1],mod-2);
for(int i=mod-2;i>=0;i--)
inv[i]=inv[i+1]*(i+1)%mod;
scanf("%d",&n);
n--;
printf("%d\n",(lucas(n<<1,n)+mod-lucas(n<<1,n-1))%mod*2%mod);
return 0;
}

最新文章

  1. [深入学习Web安全](5)详解MySQL注射
  2. Python强化训练笔记(五)——找出多个字典中的公共键
  3. 【jq】c#零基础学习之路(4)抽象类和密封
  4. IOS 今天学到太多的知识了,赶快记录下来
  5. UIStepper
  6. seeting菜单界面形成--优化
  7. Amazon S3 上传文件 SSL23_GET_SERVER_HELLO握手错误
  8. C#获取mac
  9. poj 2409+2154+2888(Burnside定理)
  10. J2EE请求和响应—Servlet
  11. HTML与XML总结
  12. .Neter玩转Linux系列之六:Linux下MySQL的安装、配置、使用
  13. js判断当前内容是否为空
  14. 在 Linux 中自动配置 IPv6 地址
  15. 在vue2.0中引用element-ui组件库
  16. UWP简单示例(二):快速开始你的3D编程
  17. 【HDOJ1598】【枚举+最小生成树】
  18. tomcat与jmeter
  19. 三维数组—— 与宝玉QQ群交流 之三
  20. canvars 画花

热门文章

  1. ZOJ 3471 【状态压缩DP】
  2. Eclipse注释模板配置
  3. Java生成验证码并进行验证(转)
  4. 【转】c++ 如何批量初始化数组 fill和fill_n函数的应用
  5. Android双向seekbar(带刻度)
  6. mtk刷机错误汇总
  7. ubuntu重新启动网卡
  8. 各项异性滤波简单介绍Anisotropic Filtering(AF)
  9. 【iOS9系列】- CoreSportlight内容索引的使用
  10. gdb条件断点