思路
源码
#include<bits/stdc++.h>
using namespace std;
//2 10 进入 do while() 首先判断 x&i为假 执行一次++i x右移位 i=1 x=1
//继续进入 if() 为真 i==1 s="2"+s 退出while 返回 s
//do while(++i,x>>=1) 当while里面有一个为0(假),则退出while
string run(int x,int i=0,string s=""){
if(x==0) return s="0"; //递归结束标志
do{
if(x&1){ //i等于说明需要进行多层操作
s=(i==1?"2":"2("+run(i)+")")+(s==""?"":"+")+s;
//把之前递归求出的加到后面
}
}while(++i,x>>=1);
return s;
}
int main(){
int n;
cin>>n;
cout<<run(n)<<endl;
}