#include<bits/stdc++.h>
#define ll long long
using namespace std;
int n;
int mi[15]={1,2,4,8,16,32,64,128,256,512,1024,2048,4096,8192,16384};
char ans[20010];
int idx;
void f(int n){
if(n==0||n==1||n==2)return;
int l=14;
while(n>0){
if(n>=mi[l]){
ans[++idx]='2';ans[++idx]='(';
n-=mi[l];
if(l==0){
ans[++idx]='0';
}else if(l==1){
idx--;
}else if(l==2){
ans[++idx]='2';
}
f(l);
if(l!=1)ans[++idx]=')';
if(n>0)ans[++idx]='+';
}l--;
}
}
int main(){
cin>>n;
-> if(n==1){cout<<"2(0)";return 0;}
-> if(n==2){cout<<"2";return 0;}
f(n);
for(int i=1;i<=idx;i++)cout<<ans[i];
return 0;
}
这段代码删去箭头指向的两行也能AC。但是输入1和2没有输出。