Pagini recente » Cod sursa (job #2335384) | Cod sursa (job #317537) | Cod sursa (job #1336941) | Cod sursa (job #2619846) | Cod sursa (job #1741460)
#include <cstdio>
#include <cstdlib>
using namespace std;
int solve(int ordin, int cadran, int tx, int ty) {
if (ordin == 0) {
return 0;
}
int tcadran, dim = 1, ncadran, nx, ny;
for (int i = 1; i <= ordin; ++i) {
dim *= 2;
}
if (tx <= dim / 2 && ty <= dim / 2) {
tcadran = 1;
}
else if (tx <= dim / 2 && ty > dim / 2) {
tcadran = 2;
}
else if (tx >= dim / 2 && ty > dim / 2) {
tcadran = 3;
}
else {
tcadran = 4;
}
if (tx > dim / 2) {
nx = tx - dim / 2;
}
else {
nx = tx;
}
if (ty > dim / 2) {
ny = ty - dim / 2;
}
else {
ny = ty;
}
if (tcadran == 2 || tcadran == 3) {
ncadran = 1;
}
else {
if (cadran == 4) {
ncadran = 1;
}
else {
ncadran = 4;
}
if (tcadran == 1) {
int o = nx;
nx = dim / 2 - ny + 1;
ny = o;
}
else {
int o = ny;
ny = dim / 2 - nx + 1;
nx = ny;
}
}
return (dim / 2) * (dim / 2) * abs(cadran - tcadran) + solve(ordin - 1, ncadran, nx, ny);
}
int main() {
freopen("fractal.in", "r", stdin);
freopen("fractal.out", "w", stdout);
int k, x, y;
scanf("%d%d%d", &k, &x, &y);
printf("%d", solve(k, 1, x, y));
}