做了好久,递归拆吧
#include<iostream>
#include<cstdio>
#include<cmath>
using namespace std;
int fun(int);
int main()
{
int n;
cin>>n;
fun(n);
}
int fun(int x)
{
int i;
for(int i=14;i>=0;i--)
{
if(pow(2,i)<=x) //此时2^i<=x<2^i+1.。。。。之后运行完后边,它会继续运行i-1,i-1.....反正是比x小的2次方i
{
if(i==0) cout<<"2(0)";
else if(i==1)cout<<"2";
else
{
cout<<"2(";
fun(i);
cout<<")";
}
x=x-pow(2,i);
if(x!=0)cout<<"+";
}
}
}