题目传送门
题目思路
分治解
AC代码
#include <iostream>
#include <math.h>
using namespace std;
int last = 0;
void fz(int n)
{
for (int i = 14; i >= 0; i--)
{
if (n & (1 << i))
{
if (i > 2)
{
cout << "2(";
fz(i);
cout << ")";
}
else if (i == 2)
cout << "2(2)";
else if (i == 1)
cout << "2";
else if (i == 0)
cout << "2(0)";
if (n > pow(2, i) && i != 0)
cout << "+";
n -= pow(2, i);
}
}
}
int main()
{
int n;
cin >> n;
// max 2^15 = 32768 20000
fz(n);
return 0;
}