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
| #include <bits/stdc++.h> using namespace std;
string tmp[26] = {"00001", "00010", "00011", "00100", "00101", "00110", "00111", "01000", "01001", "01010", "01011", "01100", "01101", "01110", "01111", "10000", "10001", "10010", "10011", "10100", "10101", "10110", "10111", "11000", "11001", "11010"};
int main() { string s1, s2; int n, m; cin >> n >> m; char ans[n][m]; getline(cin, s1); for (int i = 1; i < s1.length(); i++) { if (s1[i] == ' ') s2 += "00000"; else s2 += tmp[s1[i] - 'A']; } for (int i = n * m - s2.length(); i > 0; i--) s2 += "0"; int t = 0, a = -1, b = m - 1, c = 0, d = n - 1; while (a <= b && c <= d) { if (c <= d) { for (int j = ++a; j <= b; j++) ans[c][j] = s2[t++]; } if (a <= b) { for (int i = ++c; i <= d; i++) ans[i][b] = s2[t++]; } if (c <= d) { for (int j = --b; j >= a; j--) ans[d][j] = s2[t++]; } if (a <= b) { for (int i = --d; i >= c; i--) ans[i][a] = s2[t++]; } } for (int i = 0; i < n; i++) { for (int j = 0; j < m; j++) { cout << ans[i][j]; } } return 0; }
|