[AHOI2012]树屋阶梯
题目描述
输入格式
一个正整数N( 1 ≤ N ≤ 500 1\le N \le 500 1≤N≤500),表示阶梯的高度。
输出格式
一个正整数,表示搭建方法的个数。(注:搭建方法的个数可能很大)
输入输出样例
样例输入1
3
样例输出1
5
说明/提示
40 % 40\% 40% 的数据: 1 ≤ N ≤ 20 1\le N \le 20 1≤N≤20
80 % 80\% 80% 的数据: 1 ≤ N ≤ 300 1\le N \le 300 1≤N≤300
100 % 100\% 100% 的数据: 1 ≤ N ≤ 500 1\le N \le 500 1≤N≤500
Code
#include<bits/stdc++.h>
#define LL long long
using namespace std;
LL n, p, f[505][505], len = 1;
void c(LL u)
{
for (LL i(1); i <= len; ++i)
f[u][i] = f[u - 1][i] + f[u][i];
for (LL i(1); i <= len; ++i)
f[u][i + 1] += f[u][i] / 10, f[u][i] %= 10;
if (f[u][len + 1] != 0)
++len;
}
int main()
{
cin >> n;
f[1][1] = 1;
for (LL i(2); i <= n + 1; ++i)
for (LL j(1); j <= i; ++j)
c(j);
for (LL i(len); i > 0; --i)
cout << f[n][i];
}