@[tgyyds](/user/517126) 什么离谱写法/jk
by SIXIANG32 @ 2021-07-01 09:54:43
@[蒟蒻且网抑fks](/user/287868) 神犇又来灌水呐%%%%%
by Felix_Xie @ 2021-07-01 19:21:06
@[SIXIANG](/user/298549) 思路=0,话说您好像把我拉黑了
by hjl_AK_IOI @ 2021-07-01 20:54:03
谢谢各位大佬,个人觉得@[Jiayn](/user/267122) 和@[Felix_Xie](/user/491380) 的方法二很好,让本蒟蒻受益匪浅!%%%%%
by hjl_AK_IOI @ 2021-07-01 20:55:48
@[tgyyds](/user/517126) **位运算思想**
```cpp
#include <iostream>
using namespace std;
int n;
int main()
{
cin >> n; // 输入.
if (n & 1) // n&1即为n%2.
cout << "-1"; // 按题意输出.
else
{
for (int k = 30; k > 0; k--) // int为32位有符号整数, 按下文k即为0 ~ 31, 31位为符号位, 恒为0 (unsigned int) , 因参与数为偶数, 第0位恒为0.
if (n & (1 << k)) // 取二进制下n的第k位为n & (1 << k).
cout << (1 << k) << " "; // 若二进制下n的第k位为1, 输出2 ^ k, 即为1 << k.
}
return 0;// 完美结束.
}
```
------------
~~话说当年60分拿省三,90分拿省二,190分拿省一,前两题很水,200分,就能拿省一了~~
by xler0915 @ 2021-07-19 11:51:45
@[xler100915](/user/364991) 你这个够考古了哈
by hjl_AK_IOI @ 2021-07-19 12:47:47
```cpp
#include<iostream>
using namespace std;
int main() {
int a[26];
int n;
cin>>n;
if(n%2!=0) {
cout<<"-1";
} else {
a[0]=1;
for(int i=1;i<26;i++) {
a[i]=a[i-1]*2;
}
for(int i=25;i>=1;i--) {
if(n>=a[i]) {
cout<<a[i]<<" ";
n-=a[i];
}
}
}
return 0;
}
by 王佐君 @ 2021-07-23 16:03:03