点击打开链接
#include<stdio.h>
#include<stdlib.h>
#include<iostream>
#include<string.h>
#include<cstring>
#include<string>
#include<algorithm>
#include<math.h>
#include<queue>
#include<set>
#include<stack>
#include<map>
#define LL long long
#define inf 0x3f3f3f3f
using namespace std;
void solv(int num, int n)///n为几次方
{
if(num==0) return;
int r=num%2;
num=num/2;
solv(num, n+1);
if(num&&r) printf("+");///只有两个数都是非0时候才会 +
if(r){///当前最后一位
if(n==1) printf("2");
else{///次方有可能是0或者还未分解完
printf("2(");
if(n==0) printf("0");
else solv(n,0);
printf(")");
}
}
}
int main(){
int num;
scanf("%d",&num);
solv(num,0);
return 0;
}