卡特兰数
*不经过对角线的网格路线为卡特兰数
*用数组存卡特兰数的通项,会在65项左右爆longlong 。
#include <stdio.h>
using namespace std;
unsigned long long C[71][71];
unsigned long long K[35]={0};
int main()
{
int i,j,k,cou=1;
for (i = 0;i <=70;i++)//打表
{
C[i][0]=C[i][i]=1;
for (j =1;j< i;j++)
{
C[i][j]=C[i-1][j-1]+C[i-1][j];
}
}
for (i = 1;i <=33;i++)
{
K[i] = C[i*2][i-1]/(i);
//printf("%llu\n",K[i]);
}
K[34]=C[67][34]/5*2/7;
K[35] = C[70][35] = (C[67][32]/18+C[67][33]/6);
while (~scanf("%d",&k))
{
if (k == -1) break;
printf("%d %d %llu\n",cou++,k,K[k]*2);
}
return 0;
}