Pagini recente » Cod sursa (job #3205994) | Cod sursa (job #371416) | Cod sursa (job #626264) | Cod sursa (job #399568) | Cod sursa (job #2173180)
#include<fstream>
#include<math.h>
using namespace std;
ifstream in("fractal.in");
ofstream out("fractal.out");
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 == 1)
return 3;
if(x == 2 && y == 2)
return 2;
}
int a = pow(2, k - 1);
if(x <= a && y <= a) { // stanga sus
return solve(k - 1, y, x);
}
if(x <= a && y > a) { // stanga jos
return a * a + solve(k - 1, x, y - a);
}
if(x > a && y > a) { // dreapta jos
return 2 * a * a + solve(k - 1, x - a, y - a);
}
if(x > a && y <= a) { // dreapta sus
return 3 * a * a + solve(k - 1, x - a, y);
}
}
int main() {
int k, x, y;
in >> k >> x >> y;
out << solve(k, x, y);
return 0;
}