#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(); } } |
English