为什么只有两个对的
查看原帖
为什么只有两个对的
405302
牟零幻巧楼主2020/11/8 14:39
#include <cstdio>
using namespace std;
int main() {
	int n;
	int ans[100];
	int rap = 0;
	scanf("%d",&n);
	if (n % 2 == 1) {
		printf("-1");
		return 0;
	}
	int num = n;
	bool flag = false;
	for (int i = 2; i <= n; i *= 2) {
		if (num - i > 0) {
			num -= i;
			ans[rap++] = i;
			flag = true;
			continue;
		}
		if (num - i == 0) {
			ans[rap++] = i;
			flag = true;
			break;
		}
		flag = false;
	}
	if (flag) {
		for (int i = rap; i > 0; i--) {
			printf("%d ",ans[i]); 
		}
	}
	else {
		printf("-1");
	}
	return 0;
}
2020/11/8 14:39
加载中...