Pagini recente » Cod sursa (job #2939118) | Cod sursa (job #2410654) | Cod sursa (job #3249046) | Cod sursa (job #1813405) | Cod sursa (job #1491410)
import java.io.*;
class Main {
static int fractal(int debug, int k, int x, int y) {
//find out where the coords lie
if (k == 0) return 0;
int mean = ((int) Math.pow(2, k - 1));
boolean xaxis = x <= mean;
boolean yaxis = y <= mean;
int cadran = 0;
if (xaxis && !yaxis) {
cadran = 1;
} else if (!xaxis && !yaxis) {
cadran = 2;
} else if (!xaxis && yaxis) {
cadran = 3;
}
if (debug == 1) {
System.out.print("k=" + k + " x=" + x + " y=" + y + " cadran=" + cadran);
}
int aux;
switch (cadran){
case 0:
aux=x;
x=y;
y=aux;
break;
case 1:
y=(y-1)%mean+1;
break;
case 2:
x=(x-1)%mean+1;
y=(y-1)%mean+1;
break;
case 3:
x=(x-1)%mean+1;
aux=x;
x=mean+1-y;
y=mean+1-aux;
break;
default:
break;
}
return cadran * (int) Math.pow(mean, 2) + fractal(debug, k - 1, x, y);
}
static public int main(String[] args) throws IOException {
int debug = 1;
BufferedReader in;
BufferedWriter out;
in = new BufferedReader(new FileReader(new File("fractal.in")));
out = new BufferedWriter(new FileWriter(new File("fractal.out")));
String kxy = in.readLine();
while (kxy != null) {
String[] vars = kxy.split(" ");
int k = Integer.parseInt(vars[0]);
int x = Integer.parseInt(vars[1]);
int y = Integer.parseInt(vars[2]);
if (debug == 1) System.out.println("\n\n\n***kxy= " + k + " " + x + " " + y);
int rezultat = fractal(debug, k, x, y);
if (debug == 1) System.out.println("\n***Rez:" + rezultat);
out.write(Integer.toString(rezultat) + "\n");
kxy = in.readLine();
}
in.close();
out.close();
return 0;
}
}