#include<stdio.h>
void csj(int n);//拆分数字存2进数组里
void print(int *a,int j,int js);//a代表存好的2进制,j代表a[0]到a[j],js代表加号的输出
int main()
{
int n;
scanf("%d",&n);
csj(n);//在函数里调用自己写的输出函数
}
void csj(int n)
{
int a[10]={0},i=0,js=0;//a中的下标代表2的幂次
for(i=0;n!=0;i++)//循环拆分n为二进制
{
if(n%2!=1)
{
a[i]=0;
}
else
{
a[i]=1;
js++;
}
n=n/2;
}
print(a,i-1,js);//调用输出函数
}
void print(int *a,int j,int js)
{
int i;
for(i=j;i>=0;i--)//j为a进行运算的最大下标
{
if(a[i]!=0)
{
if(i==0)
{
printf("2(0)");
if(js!=1)//如果js为1就不需要输出加号
{
printf("+");
js--;
}
}
else if(i==1)
{
printf("2");
if(js!=1)
{
printf("+");
js--;
}
}
else
{
printf("2(");
csj(i);
printf(")");
if(js!=1)
{
printf("+");
js--;
}
}
}
}
}