#include <iostream> using namespace std; // 2^15=32768, 2^14=16384 void getExp(int *exp){ exp[0]=1; for(int i=1;i<15;i++){ exp[i]=exp[i-1]*2; } } string dfs(int n, int* exp){ string ans; if(n==0) ans+='0'; // 样例不会输入0,此处为了得到递归 dfs(0)=0 for(int i=14;i>=0;i--){ if(exp[i]<=n){ n-=exp[i]; if(i==1) ans+="2"; // 2(1)=2单独处理 else { ans+="2("+dfs(i,exp)+")"; } if(n!=0) ans+='+'; // 说明当前层尚未求出完全解,添一个 + } } return ans; } int main() { int exp[15]; getExp(exp); int n; while(cin>>n){ cout<<dfs(n,exp)<<endl; } return 0; }