题解:递归+二进制
# include <bits/stdc++.h>
using namespace std;
void check(int x) {
for(int i=20; i>=0; i--) {
if(pow(2,i)<=x) {//找到分解位数
if(i==1) {
cout<<"2";//题目要求2(1)写成2
} else if(i==0) {
cout<<"2(0)";
} else {
cout<<"2(";
check(i);//继续分解,2的指数
cout<<")";//分解完毕记得输出
}
x-=pow(2,i);//看这个数字是否完全被二进制表达;
if(x!=0) {
cout<<"+";
}
}
}
}
int main() {
int x;
cin>>x;
check(x);
return 0;
}