# hdu5673(默慈金数、卡特兰数)

Robot
Time Limit: 12000/6000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)
Total Submission(s): 337 Accepted Submission(s): 173

Problem Description
There is a robot on the origin point of an axis.Every second, the robot can move right one unit length or do nothing.If the robot is
on the right of origin point,it can also move left one unit length.A route is a series of movement. How many different routes there are
that after n seconds the robot is still located on the origin point?

Input
There are multiple test cases. The first line of input contains an integer T(1≤T≤100) indicating the number of test cases. For each test case:

The only line contains one integer n(1≤n≤1,000,000).

Output
For each test case, output one integer.

Sample Input

3
1
2
4

Sample Output

1
2
9

#include<cstdio>

typedef long long ll;
const ll mod=1000000007;
const int maxn=1000005;
ll catalan[maxn],inv[maxn],fact[maxn];

ll Pow(ll n,ll m){
ll sum=1,t=n;
//    printf("%lld %lld\n",n,m);
while(m){
if(m&1){
sum*=t;
if(sum>=mod)sum%=mod;
}
t*=t;
if(t>=mod)t%=mod;
m>>=1;
}
return sum;
}

ll C(ll n,ll m){
if(m>n||m<0)return 0;
return fact[n]*inv[m]%mod*inv[n-m]%mod;
}

int main(){
//    printf("%lld %lld\n",Pow(2,3),Pow(2,0));return 0;
catalan[0]=1;
for(int i=1;i<maxn;++i){
catalan[i]=(catalan[i-1]*(4*i-2)%mod)*Pow(i+1,mod-2)%mod;
}
fact[0]=1;
for(int i=1;i<maxn;++i){
fact[i]=fact[i-1]*i%mod;
}
inv[0]=1;
for(int i=1;i<maxn;++i){
inv[i]=Pow(fact[i],mod-2)%mod;
}

int T;
scanf("%d",&T);
while(T--){
int n;
scanf("%d",&n);
ll ans=0;
for(int i=0;i<=(n>>1);++i){
ans=ans+((catalan[i]*C((ll)n,(ll)i<<1))%mod);
ans%=mod;
}
printf("%lld\n",ans);
}
return 0;
}

• 本文已收录于以下专栏：

## 默慈金数

• ACdreamers
• 2014年11月18日 19:38
• 3799

## HDU-5673-Robot（卡特兰数+逆元 / 默慈金数）

Robot Accepts: 38 Submissions: 146 Time Limit: 12000/6000 MS (Java/Others) Memory Limit: 65536/6...
• qq978874169
• 2016年04月26日 15:52
• 415

## 默慈恩金数

• shiyongyang
• 2017年09月29日 09:43
• 38

## 默慈金数 (hdu3723)

• whai362
• 2015年01月13日 11:19
• 994

## hdu 5673 robot【默慈金数or卡特兰数】

• lhfl911
• 2016年04月26日 20:33
• 384

## 51nod-1556 计算(默慈金数)

• qq_26122039
• 2016年08月22日 20:22
• 110

## 51nod 1556 计算（默慈金数）

• gyhguoge01234
• 2017年05月31日 15:12
• 160

## hdoj 5673 Robot 【默慈金数】

• chenzhenyu123456
• 2016年04月24日 18:36
• 202

## HDU5673 Robot DP 默慈金数 线性求1~n逆元 bestcoder

Robot Time Limit: 12000/6000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Tot...
• qdbszsj
• 2016年04月23日 23:07
• 510

## 卡特兰数的数学解释和分析

• ATM246800
• 2016年09月25日 22:56
• 1747

举报原因： 您举报文章：hdu5673(默慈金数、卡特兰数) 色情 政治 抄袭 广告 招聘 骂人 其他 (最多只允许输入30个字)