#1274. 和式

和式

题目描述

给定一个正整数 nn,请将它表示为一个或多个正整数之和,并输出所有不同的表示方法。

对于每一种表示方法,设加数依次为 b1,b2,…,bmb_1,b_2,\ldots,b_m,其中 m≥1m\ge1。它必须满足:

$$b_1+b_2+\cdots+b_m=n,\qquad 1\le b_1\le b_2\le\cdots\le b_m.$$

也就是说,加数必须按不降序排列。加数可以相等,也允许只有一个加数,此时对应的和式为 n=n。

请按照加数序列的字典序从小到大输出所有和式,每个和式只输出一次。

这里的字典序按照加数的整数值比较:从左到右找到第一处不同的加数,该加数较小的序列排在前面;若一个序列是另一个序列的前缀,则较短的序列排在前面。比较的是加数序列,而不是输出字符串。

输入格式

输入一行一个正整数 nn。

输出格式

输出若干行,每行一个合法和式,格式为:

n=b1+b2+...+bm

其中,n 和各个加数应替换为对应的十进制整数。等号两侧以及加号两侧均不输出空格,不输出多余的加号。

所有和式必须按题目要求的顺序输出。不要额外输出和式的总数。

样例 1

4
4=1+1+1+1
4=1+1+2
4=1+3
4=2+2
4=4

样例 1 解释

44 共有上述五种满足要求的表示方法。

4=2+1+1 中的加数没有按不降序排列,不应输出。只含一个加数的和式 4=4 也应输出。

样例 2

1
1=1

样例 2 解释

11 只能表示为它自身,因此只输出一行。

数据范围

对于所有测试数据,保证 1≤n≤201\le n\le20。

本题共有 2020 个测试点,每个测试点 55 分。

测试点编号 nn 的上限
1∼51\sim5 55
6∼106\sim10 1010
11∼2011\sim20 2020