题目来源:https://ac.nowcoder.com/acm/contest/1069/L
递归,一看就明白了。
题目代码:
#include<iostream>
#include<cmath>
using namespace std;
void dfs(int n){
if(n==0) return ;
int i;
for(i=0;pow(2,i)<=n;i++);
i--;
if(i==0) cout<<"2(0)";
else if(i==1) cout<<"2";
else {
cout<<"2(";
dfs(i);
cout<<")";
}
if(n!=pow(2,i)){
cout<<"+";
dfs(n-pow(2,i));
}
}
int main()
{
int n;
cin>>n;
dfs(n);
return 0;
}