Train Problem II

代码如下:
#include<iostream>
#include <cstring>
using namespace std;
const int MOD = 10000;
int n;
int c[105][20];
int main()
{
memset(c, 0, sizeof c);
c[1][1] = 1;
for(int i = 2; i <= 100; i ++ )
{
int rem = 0;
for(int j = 1; j <= 17; j ++ )
{
c[i][j] = c[i - 1][j] * (4 * i - 2) + rem;
rem = c[i][j] / MOD;
c[i][j] %= MOD;
}
rem = 0;
for(int j = 17; j >= 1; j -- )
{
c[i][j] += rem * MOD;
rem = c[i][j] % (i + 1);
c[i][j] /= (i + 1);
}
}
while(scanf("%d", &n) !=EOF)
{
bool flag = false;
for(int i = 17; i >= 1; i -- )
{
if(flag) printf("%04d", c[n][i]);
else if(c[n][i])
{
printf("%d", c[n][i]);
flag = true;
}
}
printf("\n");
}
return 0 ;
}
参考:https://www.796t.com/content/1504328302.html
https://zhuanlan.zhihu.com/p/97619085
https://www.cnblogs.com/Morning-Glory/p/11747744.html