이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include <bits/stdc++.h>
using namespace std;
#define int long long
#define fs first
#define sc second
#define mp make_pair
#define FOR(i, j, k) for (int i = j, Z = k; i < Z; i++)
typedef pair<int, int> pii;
const int MXN = 50;
int x;
int n;
char c[MXN][MXN];
vector<pii> w[6] = {
vector<pii>{},
vector<pii>{mp(2LL, 0LL)},
vector<pii>{mp(2LL, 0LL), mp(0LL, 2LL)},
vector<pii>{mp(2LL, 1LL)},
vector<pii>{mp(2LL, 0LL), mp(2LL, 1LL)},
vector<pii>{mp(2LL, 0LL), mp(2LL, 1LL), mp(0LL, 2LL)}
};
vector<int> base6(int x) {
vector<int> v;
while (x) {
v.push_back(x % 6);
x /= 6;
}
return v;
}
void miku() {
cin >> x;
n = (x < 20 ? 5 : 49);
FOR(i, 0, n) FOR(j, 0, n) c[i][j] = '.';
FOR(i, 0, n - 1) {
c[n - 1][i] = 'r';
c[i][n - 1] = 'd';
}
vector<int> v = base6(x);
FOR(i, 0, v.size() - 1) {
int now = 2 * i;
c[now + 0][now + 0] = 'X';
c[now + 0][now + 1] = 'X';
c[now + 1][now + 0] = 'X';
c[now + 1][now + 1] = 'X';
c[now + 2][now + 0] = 'r';
c[now + 2][now + 1] = 'r';
c[now + 0][now + 2] = 'd';
c[now + 1][now + 2] = 'd';
for (auto [dx, dy] : w[v[i]]) c[now + dx][now + dy] = 'X';
}
int now = 2 * (v.size() - 1);
if (v.back() > 1) c[now + 0][now + 0] = 'X';
if (v.back() > 2) c[now + 1][now + 0] = 'X';
if (v.back() > 3) c[now + 0][now + 1] = 'X';
if (v.back() > 4) c[now + 0][now + 2] = 'X';
cout << n << ' ' << n << '\n';
FOR(i, 0, n) {
FOR(j, 0, n) cout << c[i][j];
cout << '\n';
}
}
int32_t main() {
cin.tie(0) -> sync_with_stdio(false);
cin.exceptions(cin.failbit);
miku();
return 0;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |