#include <iostream> using namespace std;//好递归啊 没做出来 看完发现递归还是没那么好想 void ten_to_two(int n){ char a[100]; int ind=0,i,num=-1; while(n){ a[ind] = n%2+'0'; if(a[ind]=='1'){ num++; } ind++; n/=2; } for(i=ind-1;i>=0;i--){ if(i>1&&a[i]=='1'){ cout << "2("; ten_to_two(i); //大于2的时候 cout << ")"; }else if(i==1&&a[i]=='1'){ cout << "2"; //等于2 的时候 }else if(i==0&&a[i]=='1'){ cout << "2(0)"; //等于1的时候 } if(a[i]=='1'&&num-->0){ cout << "+"; } } } int main(){ int n; while(cin >> n){ /* 把n变成二进制 从而输出 */ ten_to_two(n); cout << endl; } return 0; }