递归。。
代码
#include <cstdio>
int n;
int bit[15];
inline void solve(int x)
{
int i, f = 0;
if(!x)
{
printf("0");
return;
}
for(i = 14; i >= 0 && x; i--)
if(x >= bit[i])
{
printf("2");
if(i ^ 1) printf("("), solve(i), printf(")");
x -= bit[i];
if(x) printf("+");
}
}
int main()
{
int i;
bit[0] = 1;
for(i = 1; i <= 14; i++) bit[i] = bit[i - 1] << 1;
scanf("%d", &n);
solve(n);
return 0;
}