一遍递归一遍输出
#include <iostream>
using namespace std;
string Binary(int n){
string s="";
while(n){
s+=('0'+n%2);
n/=2;
}
return s;
}
void output(int x){
string s=Binary(x);
int n=s.size();
int last=0;
while(s[last]=='0'){
last++;
}
for(int i=n-1;i>=last;i--){
if (s[i]=='1')
{
if (i==0)
{
cout<<"2(0)";
}else if (i==1)
{
cout<<2;
if (i!=last){
cout<<"+";
}
}else{
cout<<"2(";
output(i);
cout<<")";
if (i!=last){
cout<<"+";
}
}
}
}
}
int main(){
int n;cin>>n;
output(n);
return 0;
}