#include<iostream>
#include<stdio.h>
#include<string>
#include<cmath>
#include<vector>
using namespace std;
string dtob(int n){
int sum=0;
vector<int> v;
if(n==0) return "0";
for(int i=15;i>=0;i--){
int t = pow(2,i);
if(sum+t<=n){
v.push_back(i);
if(sum+t==n) break;
sum+=t;
}
}
string s;
for(int i=0;i<v.size();i++){
string t ;
if(v[i]==1) t = "2";
else t = "2("+dtob(v[i])+")";//此处是递归
s.append(t);
if(i!=v.size()-1){
s.push_back('+');
}
}
return s;
}
int main(){
int n;
while(cin>>n){
cout<<dtob(n)<<endl;
}
return 0;
}
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/100206.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...