#include <bits/stdc++.h>
using namespace std;
using i64 = long long;
int main() {
ios::sync_with_stdio(false), cin.tie(0);
i64 n;
cin >> n;
function<string(string, i64)> get = [&] (string str, i64 cnt) -> string {
if(cnt < 10) {
return string(1, cnt + '0') + "[" + str + "]";
} else {
return "9[" + get(str, cnt / 9) + "]" + get(str, cnt % 9);
}
};
function<string(i64)> solve = [&] (i64 n) -> string {
if(n <= 2) {
if(n == 1) {
return "B";
} else if(n == 2) {
return "BDBFB";
}
}
if(n & 1) {
i64 m = n - 1 >> 1;
string res = solve(m);
string ans = get(res, 2);
ans += get("CE", n - 1);
ans += get(get("AE", m) + "A" + get("C", m), m);
ans += get("A", m);
ans += "B";
return ans;
} else {
string res = solve(n - 1);
string ans = res + get("D", n - 1) + get("BF", n - 1) + "B";
return ans;
}
};
string ans = solve(n) + get("D", n) + get("F", n);
cout << ans << '\n';
return 0;
}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | #include <bits/stdc++.h> using namespace std; using i64 = long long; int main() { ios::sync_with_stdio(false), cin.tie(0); i64 n; cin >> n; function<string(string, i64)> get = [&] (string str, i64 cnt) -> string { if(cnt < 10) { return string(1, cnt + '0') + "[" + str + "]"; } else { return "9[" + get(str, cnt / 9) + "]" + get(str, cnt % 9); } }; function<string(i64)> solve = [&] (i64 n) -> string { if(n <= 2) { if(n == 1) { return "B"; } else if(n == 2) { return "BDBFB"; } } if(n & 1) { i64 m = n - 1 >> 1; string res = solve(m); string ans = get(res, 2); ans += get("CE", n - 1); ans += get(get("AE", m) + "A" + get("C", m), m); ans += get("A", m); ans += "B"; return ans; } else { string res = solve(n - 1); string ans = res + get("D", n - 1) + get("BF", n - 1) + "B"; return ans; } }; string ans = solve(n) + get("D", n) + get("F", n); cout << ans << '\n'; return 0; } |
English