Pagini recente » Cod sursa (job #3245205) | Cod sursa (job #363781) | Cod sursa (job #3250011) | Cod sursa (job #2861516) | Cod sursa (job #2915763)
#include <fstream>
using namespace std;
int k, x, y;
int divide(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 == 2) {
return 2;
}
if (x == 2 && y == 1) {
return 3;
}
}
if (x <= (1 << (k - 1)) && y <= (1 << (k - 1))) {
return divide(k - 1, y, x);
} else if (x <= (1 << (k - 1)) && y > (1 << (k - 1))) {
return (1 << (2 * (k - 1))) + divide(k - 1, x, y - (1 << (k - 1)));
} else if (x > (1 << (k - 1)) && y > (1 << (k - 1))) {
return 2 * (1 << (2 * (k - 1))) + divide(k - 1, x - (1 << (k - 1)), y - (1 << (k - 1)));
} else if (x > (1 << (k - 1)) && y <= (1 << (k - 1))) {
return 3 * (1 << (2 * (k - 1))) + divide(k - 1, (1 << (k - 1)) - y + 1, (1 << k) - x + 1);
}
}
int main() {
ifstream fin("fractal.in");
ofstream fout("fractal.out");
fin >> k >> x >> y;
fout << divide(k, x, y);
return 0;
}