求助,拼接究竟该怎么拼。

P1010 [NOIP1998 普及组] 幂次方

```java #include <bits/stdc++.h> using namespace std; #define l(x) (1 << x) #define ll long long string mem[20005]; string dfs(ll n) { string Pow = "(0)"; if (n == 0) { //cout << "n = 0!" << endl; return "0"; } if (n == 1) { return "2" + Pow; } if (n == 2) { return "2"; } ll p = 0, t = n; while (t > 1) { t >>= 1;//t÷2 p++; } if (l(p) == n) { if (mem[n] != "") { return mem[n]; } string t = "2(" + dfs(p) + ")"; mem[n] = t; //cout << t << " " << p << endl; return t; } else { if (mem[n] != "") { return mem[n]; } //cout << p << "dd" << endl; string t = dfs(l(p)) + "+" + dfs(n - l(p)); mem[n] = t; return t; } //cout << "1" << endl; //return "Error!"; } int main() { ll n; cin >> n; string ans = dfs(n); cout << ans << endl; return 0; } ```
by 13704085069a @ 2023-07-18 13:36:11


|