Pagini recente » Cod sursa (job #309342) | Cod sursa (job #3235393) | Cod sursa (job #525388) | Cod sursa (job #2576160) | Cod sursa (job #213000)
Cod sursa(job #213000)
#include <stdio.h>
int k, x, y;
int result;
void read() {
FILE* f = fopen("fractal.in", "rt");
fscanf(f, "%d %d %d", &k, &x, &y);
x--; y--;
fclose(f);
}
int antTrail(int k, int x, int y) {
if (!k) {
return 0;
} else {
int quadrant = (y >> (k - 1)) * 2 + (x >> (k - 1));
int half = 1 << (k - 1);
int qSize = half * half;
switch (quadrant) {
case 0: return antTrail(k - 1, y, x);
case 1: return qSize * 3 + antTrail(k - 1, half - y - 1, 2 * half - x - 1);
case 2: return qSize + antTrail(k - 1, x, y - half);
case 3: return qSize * 2 + antTrail(k - 1, x - half, y - half);
}
return 0;
}
}
void write() {
FILE* f = fopen("fractal.out", "wt");
fprintf(f, "%d\n", result);
fclose(f);
}
int main() {
read();
result = antTrail(k, x, y);
write();
return 0;
}