Pagini recente » Cod sursa (job #848652) | Cod sursa (job #449625) | Cod sursa (job #796817) | Cod sursa (job #1446646) | Cod sursa (job #2143330)
//package Fractal;
import java.io.*;
import java.util.*;
public class Main {
private static final String INPUT_FILE_PATH = "fractal.in";
private static final String OUTPUT_FILE_PATH = "fractal.out";
static int v[] = new int[16];
public static void computeV() {
v[1] = 3;
for (int i = 2; i <= 15; i++) {
v[i] = 3 * v[i - 1] + 3;
//System.out.println(v[i]);
}
}
public static int fractal(int x, int y, int k) {
//System.out.println("Apel cu " + x + " " + y + " " + k);
if (k == 1) {
if (x == 1 && y == 1)
return 0;
else if (x == 1 && y == 2)
return 1;
else if (x == 2 && y == 2)
return 2;
else
return 3;
} else {
int l = (int) Math.pow(2, k);
int halfL = l / 2;
//System.out.println("l = " + l + " halfL = " + halfL);
if (x <= halfL && y <= halfL)
return fractal(y, x, k - 1);
else if (x <= halfL && y > halfL)
return 1 + 1 * v[k - 1] + fractal(x, y - halfL, k - 1);
else if (x > halfL && y > halfL)
return 2 + 2 * v[k - 1] + fractal(x - halfL, y - halfL, k - 1);
else
return 3 + 3 * v[k - 1] + fractal(l - y + 1, halfL - x + 1, k - 1);
}
}
public static void main(String args[]) throws IOException {
Scanner in = new Scanner(new FileReader(INPUT_FILE_PATH));
PrintWriter out = new PrintWriter(OUTPUT_FILE_PATH);
int k = in.nextInt();
int x = in.nextInt();
int y = in.nextInt();
computeV();
out.println(fractal(x, y, k));
out.flush();
in.close();
out.close();
}
}