?
by HAM_qwq @ 2023-02-11 10:25:36
@[_oHAMBURGERo_](/user/735763) 求调
by bc2_cryeggy @ 2023-02-11 10:39:21
@[beautiful_chicken233](/user/814343) 这个
```cpp
if (n > a[i])
{
cout << "+";
f(n - a[i]);
}
```
应该是这个吧?
```cpp
if (n != a[i])
{
cout << "+";
f(n - a[i]);
}
```
by DreamLand_zcb @ 2023-02-11 10:42:46
@[DreamLand_zcb](/user/778011) 应该不是吧。我试力。
by bc2_cryeggy @ 2023-02-11 10:45:08
@[beautiful_chicken233](/user/814343) 这个也好像有问题
```cpp
for (i = logn; i >= 1; i --)
{
if (a[i] < n)
break;
}
```
$\Downarrow$
```cpp
for (i = logn; i >= 0; i --)
{
if (a[i] > n)
break;
}
```
by DreamLand_zcb @ 2023-02-11 10:46:59
@[DreamLand_zcb](/user/778011) 改了之后 MLE
by bc2_cryeggy @ 2023-02-11 11:06:17
@[beautiful_chicken233](/user/814343) 循环改一下就对了
```cpp
#include<bits/stdc++.h>
using namespace std;
const int logn = 16.2877;
#define qwq ios::sync_with_stdio(false),cin.tie(0),cout.tie(0)
int a[logn + 1];
void f(int n)
{
if (n == 0)
return;
int i;
for (i = 0; ; i ++)
{
if (a[i] > n)
{
i--;
break;
}
}
if (i == 0)
cout << "2(0)";
else if (i == 1)
cout << "2";
else if (i > 1)
{
cout << "2(";
f(i);
cout << ")";
}
if (n > a[i])
{
cout << "+";
f(n - a[i]);
}
}
int main()
{
qwq;
int n;
cin >> n;
a[0] = 1;
for (int i = 1; i <= 16; i++)
{
a[i] = a[i-1] * 2;
}
f(n);
return 0;
}
```
by DreamLand_zcb @ 2023-02-11 11:12:37
@[DreamLand_zcb](/user/778011) 谢谢大佬
by bc2_cryeggy @ 2023-02-11 11:26:28