#include<iostream>
#include<cstring>
#include<string>
#include<algorithm>
using namespace std;
string noip(int n)
{
string s;
int* a = new int[10005];
memset(a, 0, sizeof(a));
int i = 0;
bool flag = false;
while (n)
{
a[i++] = n % 2;
n /= 2;
}
while(i>1)
{
if (a[i] == 1)
{
if(flag)s += "+";
s += "2(" + noip(i) + ")";
flag = true;
}
i--;
}
if (a[i--] == 1)
if (flag)s += "+2";
else s += "2", flag = true;
if (a[i] == 1)
if (flag)s += "+2(0)";
else s += "2(0)";
delete a;
return s;
}
int main()
{
int n;
cin >> n;
cout << noip(n) << endl;;
return 0;
}
ps:第一个测试数据73
结果2(2(2)+2)+2(2+2(0))+2(0)
有大佬看一下为啥吗