csu 1320 Scoop water (数论)
题目链接:http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1320
题意:两个水瓢 A B 容量都为 1
有一个容积无限的水缸
用A 往水缸中倒水
用B 把水缸中的水舀出
必须使用N次A和N次B
问 有多少种方法
卡特兰数的应用
令h(0)=1,h(1)=1,catalan数满足递推式
h(n)= h(0)*h(n-1)+h(1)*h(n-2) + ... + h(n-1)h(0) (n>=2)
#include<cstdio>
#include<cstring>
#include<iostream>
#define ll long long
#define mod 1000000007
using namespace std;
ll a[10000+10];
int main()
{
int n;
int i,j;
a[0]=1;
for(i=1;i<=10000;i++)
{
for(j=0;j<i;j++)
{
a[i]=(a[j]*a[i-1-j]%mod+a[i])%mod;
}
}
while(cin>>n)
{
cout<<a[n]<<endl;
}
return 0;
}

浙公网安备 33010602011771号