这代码太柯爱了

P1010 [NOIP1998 普及组] 幂次方


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


|