4157: 优秀的拆分

内存限制:512 MB 时间限制:1.000 S
评测方式:文本比较 命题人:
提交:1 解决:1

题目描述

# 优秀的拆分 ## 题目描述 一般来说,一个正整数可以拆分成若干个正整数的和。例如,$1=1$,$10=1+2+3+4$等。 对于正整数$n$的一种特定拆分,我们称它为“优秀的”,当且仅当在这种拆分下,$n$被 分解为了若干个不同的$2$的正整数次幂。注意,一个数$x$能被表示成$2$的正整数次 幂,当且仅当$x$能通过正整数个$2$相乘在一起得到。 例如,$10=8+2=2^3+2^1$是一个优秀的拆分。但是,$7=4+2+1=2^2+2^1+2^0$就不是一个优秀的拆分,因为$1$不是$2$的正整数次幂。现在,给定正整数$n$,你需要判断这个数的所有拆分中,是否存在优秀的拆分。若存在,请你给出具体的拆分方案。

输入

## 输入格式 输入一行,一个正整数$n$,代表需要判断的数。

输出

## 输出格式 如果这个数的所有拆分中,存在优秀的拆分。那么,你需要**从大到小**输出这个拆分 中的每一个数,相邻两个数之间用一个空格隔开。可以证明,在规定了拆分数字的顺序 后,该拆分方案是唯一的。 若不存在优秀的拆分,输出“$-1$”(不包含双引号)。

样例输入 复制

6

样例输出 复制

4 2

提示

## 输入输出样例 ### 输入样例1 ``` 6 ``` ### 输出样例1 ``` 4 2 ``` ### 输入样例2 ``` 7 ``` ### 输出样例2 ``` -1 ``` ## 数据范围与提示 【样例1说明】 $6=4+2=2^2+2^1$是一个优秀的拆分。注意,$6=2+2+2$不是一个优秀的拆分,因为拆 分成的$3$个数不满足每个数互不相同。 【数据范围】 对于$20\%$的数据,$n≤10$。 对于另外$20\%$的数据,保证$n$为奇数。 对于另外$20\%$的数据,保证$n$为$2$的正整数次幂。 对于$80\%$的数据,$n≤1024$。 对于$100\%$的数据,$1≤n≤1×10^7$。 ## 题目来源