#include <bits/stdc++.h> using namespace std; string conc(string s, long long n) { if (n == 0) { return ""; } if (n < 10) { if (s.length() == 1) { return to_string(n) + s; } else { return to_string(n) + '[' + s + ']'; } } for (int i = 9; i > 1; i--) { if (n % i == 0) { return to_string(i) + '[' + conc(s, n / i) + ']'; } } string rest = s; if (rest.length() > 1) { rest = '[' + s + ']'; } string res = "9[" + conc(s, n / 9) + ']'; if (n % 9 > 0) { res += to_string(n % 9) + rest; } return res; // return "9[" + conc(s, n / 9) + ']' + to_string(n % 9) + rest; } string romb(long long n) { return conc("A", n) + conc(conc("EC", n - 1) + "E" + conc("A", n), n); } void rotate(string &s, int ile) { for (char &l : s) { if ('A' <= l && l <= 'F') { l += ile; if (l > 'F') { l -= 6; } } } } string triangle(long long n) { if (n == 1) { return "A"; } if (n == 2) { return "AEACA"; } long long pr = (n - 1) / 2; string res = romb(pr) + conc("C", pr) + conc("A", pr); string dbl = triangle(pr); rotate(dbl, 4); dbl = conc(dbl, 2); res += dbl; res += conc("AC", 2 * pr) + "A"; // res += conc("E", 2 * pr + 1); if (n % 2 == 0) { res += conc("E", 2 * pr + 1); res += conc("AC", 2 * pr + 1) + "A"; // res += conc("E", 2 * pr + 2); } return res; } string solve(long long n) { return conc("E", n) + conc("C", n) + triangle(n); } int main() { ios_base::sync_with_stdio(false); cin.tie(0); long long n; cin >> n; cout << solve(n) << "\n"; }
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 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 | #include <bits/stdc++.h> using namespace std; string conc(string s, long long n) { if (n == 0) { return ""; } if (n < 10) { if (s.length() == 1) { return to_string(n) + s; } else { return to_string(n) + '[' + s + ']'; } } for (int i = 9; i > 1; i--) { if (n % i == 0) { return to_string(i) + '[' + conc(s, n / i) + ']'; } } string rest = s; if (rest.length() > 1) { rest = '[' + s + ']'; } string res = "9[" + conc(s, n / 9) + ']'; if (n % 9 > 0) { res += to_string(n % 9) + rest; } return res; // return "9[" + conc(s, n / 9) + ']' + to_string(n % 9) + rest; } string romb(long long n) { return conc("A", n) + conc(conc("EC", n - 1) + "E" + conc("A", n), n); } void rotate(string &s, int ile) { for (char &l : s) { if ('A' <= l && l <= 'F') { l += ile; if (l > 'F') { l -= 6; } } } } string triangle(long long n) { if (n == 1) { return "A"; } if (n == 2) { return "AEACA"; } long long pr = (n - 1) / 2; string res = romb(pr) + conc("C", pr) + conc("A", pr); string dbl = triangle(pr); rotate(dbl, 4); dbl = conc(dbl, 2); res += dbl; res += conc("AC", 2 * pr) + "A"; // res += conc("E", 2 * pr + 1); if (n % 2 == 0) { res += conc("E", 2 * pr + 1); res += conc("AC", 2 * pr + 1) + "A"; // res += conc("E", 2 * pr + 2); } return res; } string solve(long long n) { return conc("E", n) + conc("C", n) + triangle(n); } int main() { ios_base::sync_with_stdio(false); cin.tie(0); long long n; cin >> n; cout << solve(n) << "\n"; } |