思路
这种规律的格式输出利用递归方法解决。
code
#include <bits/stdc++.h>
using namespace std;
void dfs(int n){
if(n==0){
cout<<'0';
return;
}
int cnt=0;
for(int i=31;i>=0;i--){
if(1<<i&n){//找出组成n的2次幂
if(cnt++) cout<<'+';
if(i==1) cout<<'2';//2(1)要单独显示2
else {
cout<<"2(";
dfs(i);
cout<<')';
}
}
}
}
int main(){
int n;
cin>>n;
dfs(n);
return 0;
}