题目:

优秀的拆分

题目解析

看注释

代码

#include<bits/stdc++.h>
using namespace std;

int main() {
	int a[26]; // 10的7次方不到2的26次方 
	int n;
	cin >> n; // 输入n 
	if (n % 2 != 0) { // 只有偶数才能拆分,若为奇数输出-1 
		cout << "-1";
	} else {
		a[0] = 1;  
		for (int i = 1; i < 26; i++) { // 依次打表 
			a[i] = a[i - 1] * 2; // 此项为前一项*2 
		}
		for (int i = 25; i >= 1; i--) { // 列举 
			if (n >= a[i]) { // 如果n比a[i]大或等于 
				cout << a[i] << " "; // 就拆分 
				n -= a[i]; // 要减 
			}
		}
	}
	return 0;
}