- sol
- 풀 엄두도 내지 못했다. 그러므로 분석한다.
- 재귀 카테고리에 있지만 재귀를 안쓴 풀이가 가장 깔끔해서 가져왔다.
#include <bits/stdc++.h>
#define WHITE 0
#define BLACK 1
using namespace std;
int Time, N, K, R1, R2, C1, C2, biggestFS;
int getColor(int r, int c) {
int t_big = biggestFS;
int tr = r, tc = c, pr, pc;
while ((t_big /= N)!= 0) {
pr = tr / t_big;
pc = tc / t_big;
if (is_middle(pr, pc, t_big / N) == true) {
return BLACK;
}
tr -= (pr * t_big);
tc -= (pc * t_big);
}
return WHITE;
}
bool is_middle(int r, int c, int curFS) {
int sp = (N - K) / 2;
int fp = sp + K;
if((sp <= r && r < fp) && (sp <= c && c < fp))
return true;
return false;
}
int main(void) {
ios::sync_with_stdio(false);
cin.tie(NULL); cout.tie(NULL);
cin >> Time >> N >> K >> R1 >> R2 >> C1 >> C2;
biggestFS = pow(N, Time);
for (int i = R1; i <= R2; i++) {
for (int j = C1; j <= C2; j++) {
cout << getColor(i, j);
}
cout << '\n';
}
return 0;
}