题解 内存4MB 复杂
2025-03-03 16:31:38
发布于:浙江
0阅读
0回复
0点赞
#include <bits/stdc++.h>
using namespace std;
int sum = 1;
string erjinzhi(long long a)
{
if (a == 0)
return "0";
string s;
while (a > 0)
{
s = to_string(a % 2) + s;
a = a / 2;
}
return s.empty() ? "0" : s;
}
int main()
{
long long a;
cin >> a;
string res = erjinzhi(a);
const int n = res.size();
int val[114514] = {0};
if (res[res.size() - 1] == '1')
{
cout << -1;
return 0;
}
for (int i = 0; i < n; i++)
{
if (res[i] == '1')
{
val[sum] = pow(2, n - i - 1);
sum++;
}
}
for (int i = 1; i < sum; i++)
{
if (val[i] == val[i + 1])
{
cout << -1;
return 0;
}
}
for (int i = 1; i < sum; i++)
{
cout << val[i] << " ";
}
return 0;
}
复杂 勿看
这里空空如也
有帮助,赞一个