开始那个+的位置总是弄不对,,最后总算想到用二进制最低位控制“+”
#include <iostream>
using namespace std;
int g(int k) //输出最低位1
{
for (int i=0;i<=30;i++)
{
if (1<<i&k)
{
return i;
break;
}
}
}
int f(int n)
{
for (int i=20;i>=0;i--)
{
if((1<<i)&n)
{
if (i==2)
{
cout<<"2(2)";
}
if (i==1)
{
cout<<"2";
}
if (i==0)
{
cout<<"2(0)";
}
if (i>2)
{
cout<<"2(";
f(i);
cout<<")";
}
if (g(n)!=i) cout<<"+";
}
}
}
int main()
{
int n;
cin>>n;
f(n);
return 0;
}