这个代码我用Dev-C++输出是对的,但是洛谷的那个IDE模式里一直输出2,然后交上去TLE+MLE。
#include <bits/stdc++.h>
using namespace std;
int n, a[20] = {1};
int dfs(int x)
{
for (int i = 15; i >= 0; i--)
if (a[i] <= x)
{
if (i == 1)
printf("2");
else if (i == 0)
printf("2(0)");
else
{
printf("2(");
dfs(i);
printf(")");
}
x -= a[i];
if (x)
printf("+");
}
}
int main()
{
scanf("%d", &n);
for (int i = 1; i <= 15; i++)
a[i] = a[i - 1] * 2;
dfs(n);
return 0;
}