#include <bits/stdc++.h> using namespace std; string ans = ""; char conv(int dir){ if (dir==1){ return 'E'; } if (dir==2){ return 'F'; } if (dir==3){ return 'A'; } if (dir==4){ return 'B'; } if (dir==5){ return 'C'; } if (dir==6){ return 'D'; } return '*'; } void move(int num,vector<int> dir){ int cnt = 0; while(num>0){ if (num<=9){ if (num==1){ for(int to:dir){ ans += conv(to); } } else if (dir.size()==1){ ans += to_string(num); ans += conv(dir[0]); return; } else{ ans += to_string(num); ans += '['; for(int to:dir){ ans += conv(to); } ans += ']'; } num = 0; } else{ int div = -1; for(int i = 9;i>=2;i-=1){ if (num%div==0){ div = i; break; } } if (div!=-1){ ans += to_string(div); ans += '['; cnt += 1; num /= div; } else{ for(int to:dir){ ans += conv(to); } num -= 1; } } } while(cnt>0){ ans += ']'; cnt -= 1; } } void solve(){ int n; cin>>n; for(int lvl = n;lvl>=1;lvl-=1){ move(lvl,{3}); move(lvl-1,{1,5}); move(1,{1}); } move(n,{5}); cout<<ans<<endl; } signed main(){ int tt = 1; while(tt--){ solve(); } }
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 | #include <bits/stdc++.h> using namespace std; string ans = ""; char conv(int dir){ if (dir==1){ return 'E'; } if (dir==2){ return 'F'; } if (dir==3){ return 'A'; } if (dir==4){ return 'B'; } if (dir==5){ return 'C'; } if (dir==6){ return 'D'; } return '*'; } void move(int num,vector<int> dir){ int cnt = 0; while(num>0){ if (num<=9){ if (num==1){ for(int to:dir){ ans += conv(to); } } else if (dir.size()==1){ ans += to_string(num); ans += conv(dir[0]); return; } else{ ans += to_string(num); ans += '['; for(int to:dir){ ans += conv(to); } ans += ']'; } num = 0; } else{ int div = -1; for(int i = 9;i>=2;i-=1){ if (num%div==0){ div = i; break; } } if (div!=-1){ ans += to_string(div); ans += '['; cnt += 1; num /= div; } else{ for(int to:dir){ ans += conv(to); } num -= 1; } } } while(cnt>0){ ans += ']'; cnt -= 1; } } void solve(){ int n; cin>>n; for(int lvl = n;lvl>=1;lvl-=1){ move(lvl,{3}); move(lvl-1,{1,5}); move(1,{1}); } move(n,{5}); cout<<ans<<endl; } signed main(){ int tt = 1; while(tt--){ solve(); } } |