题目描述
我们有很多种方案去把一个正整数拆分成若干个正整数之和。
例如,正整数 $3$ 可以被拆分成 $1+1+1$,$1+2$ 或者 $2+1$,等等。
一般来讲,如果 $n=\sum\limits_{i=1}^{j} a_i$ $(a_i>0)$,我们就称 $\{a_1,a_2,\cdots,a_j\}$ 是 $n$ 的一种拆分方案。
solemntee 发现对于某个正整数而言,它的很多种拆分方案从本质上讲其实是一样的。
例如对于正整数 $4$ 而言,$\{1,1,2\},\{1,2,1\},\{2,1,1\}$ 这三种方案都只是把 $4$ 拆成了 $1,1,2$ 这三个正整数而已。
因此,对于两种拆分方案而言,当**每种正整数在这两种方案中出现的次数均相同**时,那么这两种拆分方案便被认作是**本质相同**的。
我们记 $S(N,\{a_1,a_2,\cdots,a_j\})$ 表示在正整数 $N$ 的所有拆分方案中,与 $\{a_1,a_2,\cdots,a_j\}$ 本质相同的拆分方案的个数。
现在,solemntee 想知道对于正整数 $N$ 的任意一种可能的拆分方案 $\{a_1,a_2,\cdots,a_j\}$ 而言,$S(N,\{a_1,a_2,\cdots,a_j\})$ 的**最大值**是多少?
输入格式
仅一行,包含一个整数 $N$ $(1 \le N \le 100)$.
输出格式
一行一个整数,表示对于正整数 $N$ 的任意一种可能的拆分方案 $\{a_1,a_2,\cdots,a_j\}$ 而言,$S(N,\{a_1,a_2,\cdots,a_j\})$ 的**最大值**。
样例输入 #1
5
样例输出 #1
4
样例输入 #2
20
样例输出 #2
15840
提示
对于样例一:
在 $5$ 的所有拆分方案中:
- 与 $\{1,1,1,1,1\}$ 本质相同的拆分方案共有 $1$ 种
- $S\{5,\{1,1,1,1,1\}\}=1$
- 与 $\{2,1,1,1\}$ 本质相同的拆分方案共有 $4$ 种,分别是 $\{2,1,1,1\},\{1,2,1,1\},\{1,1,2,1\},\{1,1,1,2\}$
- $S(5,\{2,1,1,1\})=S(5,\{1,2,1,1\})=S(5,\{1,1,2,1\})=S(5,\{1,1,1,2\})=4$
- 与 $\{3,1,1\}$ 本质相同的拆分方案共有 $3$ 种,分别是 $\{3,1,1\},\{1,3,1\},\{1,1,3\}$
- $S(5,\{3,1,1\})=S(5,\{1,3,1\})=S(5,\{1,1,3\})=3$
- 与 $\{2,2,1\}$ 本质相同的拆分方案共有 $3$ 种,分别是 $\{2,2,1\},\{2,1,2\},\{1,2,2\}$
- $S(5,\{2,2,1\})=S(5,\{2,1,2\})=S(5,\{1,2,2\})=3$
- 与 $\{3,2\}$ 本质相同的拆分方案共有 $2$ 种,分别是 $\{3,2\},\{2,3\}$
- $S(5,\{3,2\})=S(5,\{2,3\})=2$
- 与 $\{4,1\}$ 本质相同的拆分方案共有 $2$ 种,分别是 $\{1,4\},\{4,1\}$
- $S(5,\{1,4\})=S(5,\{4,1\})=2$
- 与 $\{5\}$ 本质相同的拆分方案共有 $1$ 种
- $S(5,\{5\})=1$
可得最大值为 $4$.
---
**注意**:本题可能需要用到比 `long long int` 所能表示的范围更大的数据类型,以下是 `__int128` 类型的输出方法:
```cpp
void print(__int128 x) {
// if(x<0) putchar('-'),x=-x;
if(x>9) print(x/10);
putchar(x%10+'0');
}
```
来源
2023-05 多校联合训练 ZJNU站 正式赛