#include <cstdio> #include <cstring> typedef long long ll; void r(ll n, const char *s) { if (n<1) return; if (n<2) { printf("%s", s); return; } int l=strlen(s); if (n<10 && n*l<=3+l-2*(l==1)) { for (int i=0; i<n; i++) printf("%s", s); return; } if (n<10) { printf("%lli%s%s%s", n, "["+(l==1), s, "]"+(l==1)); return; } if (l>1 || n>1000) for (int i=9; i>1; i--) if(n%i==0) { printf("%i%s", i, "["+(n/i==1 && l==1)); r(n/i, s); printf("]"+(n/i==1 && l==1)); return; } r(n%9, s); printf("9%s", "["+(n/9==1 && l==1)); r(n/9, s); printf("]"+(n/9==1 && l==1)); } void b(ll n, ll m) { if (m<1) return; if (m<2) { r(n, "C"); r(n, "EA"); printf("E"); return; } if (m<10) { printf("%lli[", m); r(n, "C"); r(n, "EA"); printf("E"); printf("]"); return; } for (int i=9; i>1; i--) if(n%i==0) { printf("%i[", i); b(n, m/i); printf("]"); return; } b(n, m%9); printf("9["); b(n, m/9); printf("]"); } void t(ll n) { if (n<1) return; if (n<2) { printf("A"); return; } if (n<3) { printf("AEACA"); return; } ll m=(n-1)/2; printf("2%s", "["+(m==1)); t(m); printf("]"+(m==1)); r(m, "E"); b(m, m); r(2*m, "AC"); printf("A"); if (n%2==0) { r(n-1, "E"); r(n-1, "AC"); printf("A"); } } int main() { ll n; scanf("%lli", &n); t(n); r(n, "E"); r(n, "C"); 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 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 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 | #include <cstdio> #include <cstring> typedef long long ll; void r(ll n, const char *s) { if (n<1) return; if (n<2) { printf("%s", s); return; } int l=strlen(s); if (n<10 && n*l<=3+l-2*(l==1)) { for (int i=0; i<n; i++) printf("%s", s); return; } if (n<10) { printf("%lli%s%s%s", n, "["+(l==1), s, "]"+(l==1)); return; } if (l>1 || n>1000) for (int i=9; i>1; i--) if(n%i==0) { printf("%i%s", i, "["+(n/i==1 && l==1)); r(n/i, s); printf("]"+(n/i==1 && l==1)); return; } r(n%9, s); printf("9%s", "["+(n/9==1 && l==1)); r(n/9, s); printf("]"+(n/9==1 && l==1)); } void b(ll n, ll m) { if (m<1) return; if (m<2) { r(n, "C"); r(n, "EA"); printf("E"); return; } if (m<10) { printf("%lli[", m); r(n, "C"); r(n, "EA"); printf("E"); printf("]"); return; } for (int i=9; i>1; i--) if(n%i==0) { printf("%i[", i); b(n, m/i); printf("]"); return; } b(n, m%9); printf("9["); b(n, m/9); printf("]"); } void t(ll n) { if (n<1) return; if (n<2) { printf("A"); return; } if (n<3) { printf("AEACA"); return; } ll m=(n-1)/2; printf("2%s", "["+(m==1)); t(m); printf("]"+(m==1)); r(m, "E"); b(m, m); r(2*m, "AC"); printf("A"); if (n%2==0) { r(n-1, "E"); r(n-1, "AC"); printf("A"); } } int main() { ll n; scanf("%lli", &n); t(n); r(n, "E"); r(n, "C"); return 0; } |