题目链接:点击打开链接
题目大意:略。
解题思路:卡特兰数 点击打开链接 + 乘法逆元 点击打开链接。
AC 代码
#include<bits/stdc++.h>
#include<cmath>
#define mem(a,b) memset(a,b,sizeof a);
#define INF 0x3f3f3f3f
using namespace std;
typedef long long ll;
const int mod=1000000007;
ll h[10000000];
// 快速模幂(配合:费马小定理)
ll qpow(ll a,ll b)
{
ll ans=1; a=a%mod;
while(b)
{
if(b&1) ans=ans*a%mod;
b>>=1;
a=a*a%mod;
}
return ans;
}
int main()
{
//h(n)=h(n-1)*(4*n-2)/(n+1);
h[0]=h[1]=1;
for(int i=2;i<1000100;i++)
{
h[i]=h[i-1]*(4*i-2)%mod*qpow(i+1,mod-2)%mod;
}
ll n;
while(~scanf("%lld",&n))
{
printf("%lld\n",h[n]);
}
return 0;
}