#D0949. 月饼拼凑

    ID: 19997 传统题 1000ms 256MiB 尝试: 12 已通过: 9 显示难度暂无评定 上传者: 标签>其他位运算贪心CSP-JT1二进制

月饼拼凑

月饼拼凑

题目描述

33DAI 有 3131 个月饼,编号从 00 到 3030,第 ii 个月饼的重量为 2i2^i。

2i2^i 表示 ii 个 22 相乘。例如 20=12^0=1,21=22^1=2,22=2×2=42^2=2\times2=4,23=2×2×2=82^3=2\times2\times2=8,210=10242^{10}=1024。

33DAI 想要送给 Tom 重量之和恰好为 xx 的月饼。

请求出要送哪些月饼,把它们的编号从小到大用空格隔开输出。

输入格式

一行一个整数 xx。

输出格式

一行若干个整数,表示要送的月饼编号,编号之间用一个空格隔开,按编号从小到大输出。

保证在题目给定的范围内,这样的送法总是存在。

样例

33
0 5
1
0

样例说明

样例 1: x=33x=33。取编号为 00 的月饼(重量 20=12^0=1)和编号为 55 的月饼(重量 25=322^5=32),重量之和为 1+32=331+32=33,恰好等于 xx。

需要注意,每个月饼只有一个,编号 55 的月饼不能取两个。

样例 2: x=1x=1。取编号为 00 的月饼(重量 20=12^0=1),重量之和恰好为 11。

数据范围

对于全部数据,1≤x<2311\le x< 2^{31}(即 1≤x≤21474836471\le x\le 2147483647)。

子任务 分值 限制
1 3030 x=33x=33
2 x≤33x\le 33
3 4040 1≤x<2311\le x< 2^{31}

每个子任务的计分方式为 min(取该子任务中所有测试点的最低分)。

子任务之间存在依赖:子任务 2 依赖子任务 1,子任务 3 依赖子任务 2。即只有通过了所依赖的子任务,该子任务才能得分。