您的位置:首页 > 其它

[卡特兰数] 51Nod 1120 机器人走方格 V3

2016-11-17 07:46 423 查看
卡特兰数×2

卡特兰数 C(2n,n)-C(2n,n-1)

#include<cstdio>
#include<cstdlib>
#include<algorithm>
using namespace std;

const int P=10007;

int fac[P+5],inv[P+5];

inline void Pre(){
fac[0]=1;
for (int i=1;i<P;i++) fac[i]=fac[i-1]*i%P;
inv[1]=1;
for (int i=2;i<P;i++) inv[i]=(P-P/i)*inv[P%i]%P;
inv[0]=1;
for (int i=1;i<P;i++) inv[i]=inv[i-1]*inv[i]%P;
}

inline int c(int n,int m){
if (n<m) return 0;
return fac
*inv[m]%P*inv[n-m]%P;
}

inline int C(int n,int m){
int ret=1;
while (n || m)
ret=ret*c(n%P,m%P)%P,n/=P,m/=P;
return ret;
}

int main(){
int n; Pre();
scanf("%d",&n); n--;
printf("%d\n",(C(n<<1,n)+P-C(n<<1,n-1))%P*2%P);
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: