QOJ.ac

QOJ

Time Limit: 1 s Memory Limit: 512 MB Total points: 10

#5234. 流行音乐 2 [C]

Statistics

如你所记得的那样,Mateusz 热爱流行音乐。他刚刚创作了一首新曲子,现在只需要为它编排一个合适的结尾。

Mateusz 希望他的曲子结尾由一个非空的音符序列组成,每个音符都可以用其响度来描述,响度是一个正整数。Mateusz 可以使用任意响度的音符,但结尾的任务是让曲子逐渐减弱——因此,结尾处的音符响度必须构成一个严格递减序列。

正如你可能知道或记得的那样,流行音乐中“比特”很重要。这一次,Mateusz 规定响度为 $x$ 的音符具有“比特强度”,等于 $x$ 的二进制表示中 1 的个数。考虑到曲子的其余部分,他确定结尾处所有音符的比特强度之和必须恰好等于 $n$。

请帮助他找到一个合适的音符响度序列。可以证明,至少存在一个这样的序列,因此你的任务是找到字典序最小的那个。

注意:我们称数字序列 $A$ 在字典序上小于数字序列 $B$,如果它们在第一个不同的位置上,$A$ 的数值小于 $B$。如果不存在这样的位置,那么当 $A$ 比 $B$ 短时,$A$ 在字典序上小于 $B$。例如,序列 $[1, 10000000]$ 在字典序上小于 $[2, 2]$,序列 $[4, 2, 20, 30, 40]$ 在字典序上小于 $[4, 2, 100, 1]$,而序列 $[5, 4, 3, 2]$ 在字典序上小于 $[5, 4, 3, 2, 1]$。

输入格式

标准输入的第一行包含一个整数 $n$ ($1 \le n \le 1\,000\,000$),表示所求序列中音符比特强度之和的要求。

输出格式

第一行输出一个整数 $k$,表示所求序列的长度。

第二行输出 $k$ 个正整数——这是满足所有元素比特强度之和为 $n$ 的字典序最小的严格递减序列。

样例

输入 1

3

输出 1

2
3 1

输入 2

10

输出 2

6
7 5 4 3 2 1

说明

在第一个样例中,其他合法的序列还包括 $[3, 2]$、$[7]$ 或 $[4, 2, 1]$,但序列 $[3, 1]$ 是字典序最小的。请注意,例如序列 $[1, 3]$、$[3, 1, 0]$ 或 $[2, 2, 2]$ 不是合法的序列,因为它们要么不是严格递减的,要么包含非正整数。

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.