Pagini recente » Cod sursa (job #824134) | Cod sursa (job #365976) | Cod sursa (job #1752430) | Cod sursa (job #678478) | Cod sursa (job #2375019)
#include <bits/stdc++.h>
using namespace std;
int power(int b, int e) {
int result = 1;
while (e) {
result *= b;
e--;
}
return result;
}
int solve(int k, int x, int y) {
if (k == 1) {
if (x == 1 && y == 1) return 0;
if (x == 1 && y == 2) return 1;
if (x == 2 && y == 2) return 2;
else return 3;
}
int quad_size = power(2, k - 1);
int quad_steps = quad_size * quad_size;
if (x <= quad_size && y <= quad_size) {
return solve(k - 1, y, x);
} else if (x <= quad_size && y > quad_size) {
return solve(k - 1, x, y - quad_size) + quad_steps;
} else if (x > quad_size && y > quad_size) {
return solve(k - 1, x - quad_size, y - quad_size) + 2 * quad_steps;
} else {
return solve(k - 1, quad_size + 1 - y, quad_size + 1 - x + quad_size)
+ 3 * quad_steps;
}
}
int main() {
stdin = freopen("fractal.in", "r", stdin);
stdout = freopen("fractal.out", "w", stdout);
int k, x, y;
int steps;
cin >> k >> x >> y;
steps = solve(k, x, y);
cout << steps;
}