Description
设给定 n 个变量 x1, x2, …, xn, 将这些变量依序作底和各层幂, 可得 n 重幂如下:
x 1 x 2 x 3 . . . x n x_1^{x_2^{x_3^{...^{x_n}}}} x1x2x3...xn
这里将上述 n 重幂看作是不确定的. 当在其中加入适当的括号后, 才能成为一个确定的 n 重幂.
不同的加括号方式导致不同的 n 重幂. 例如: 当 n = 4 时, 全部 4 重幂有 5 个.
本题对 n 个变量计算出有多少个不同的 n 重幂.
Input
有多个测试用例. 每个测试为一个正整数 n. 输入直至没有数据为止.
Output
对于每个测试用例, 在一行上输出不同的 n 重幂种数. 你可以假设这个数可以用 C++ 的内部数据类型表示.
Sample Input
4
Sample Output
5
#include<iostream>
#include<algorithm>
using namespace std;
long long f[1001] = {0, 1, 1, 2};
inline long long search(int T)
{
if(f[T])return f[T];
for(int i = 1; i < T; i++)
{
f[T] += search(T - i) * search(i);
}
return f[T];
}
int main()
{
int n;
while(cin >> n)cout << search(n) << endl;
return 0;
}