풀이
약간의 커팅이 필요하다.
코드
#include <cstdio>
#include <cstdlib>
int n, r, c;
void f(int x, int y, int s, int cnt) {
if (s == 0 && x == r && y == c) {
printf("%d\n", cnt);
exit(0);
}
if (r < x || c < y || x + s*2 <= r || y + s*2 <= c) return;
int nx = x + s, ny = y + s, ns = s*s;
s /= 2;
f(x, y, s, cnt);
f(x, ny, s, cnt + ns);
f(nx, y, s, cnt + ns*2);
f(nx, ny, s, cnt + ns*3);
}
int main() {
scanf("%d %d %d", &n, &r, &c);
f(0, 0, 1 << (n - 1), 0);
return 0;
}
아무말
백준, 백준 온라인 저지, BOJ, Baekjoon Online Judge, C, C++, 씨, 씨쁠쁠, JAVA, algorithm, 자바, 알고리즘, 자료구조, 문제, 문제 풀이, 풀이