题解
这是一道只要理解了递归就应当能做出来的题目,比较简单,注意加号怎么加。
Code
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <cmath>
#include <algorithm>
using namespace std;
void dfs(int num){
int n ,tmp;
bool firs = true;// detect whether add '+'
while(num!=0){
n=0;
tmp = 1;
while( tmp <= num){
n++;
tmp*=2;
}
n--;
num-= (tmp/2);
if(firs) firs = false;
else cout<<"+";
if(n>1){
cout<<"2(";
dfs(n);
cout<<")";
}
if(n==1) cout<<"2";
if(n==0) cout<<"2(0)";
}
}
int main(){
int num;
cin>>num;
dfs(num);
return 0;
}