Pagini recente » Cod sursa (job #1932679) | Cod sursa (job #1464740) | Cod sursa (job #2007021) | Cod sursa (job #2448076) | Cod sursa (job #985129)
Cod sursa(job #985129)
# include <iostream>
# include <fstream>
using namespace std;
# define MAXK 17
int size[MAXK];
int dist(int k, int x, int y)
{
if(!k) {
return 0;
}
if(x <= (1 << k - 1)) {
if(y <= (1 << k - 1)) {
return dist(k - 1, y, x);
} else {
return dist(k - 1, x, y - (1 << (k - 1))) + (size[k - 1] + 1);
}
} else {
if(y <= (1 << k - 1)) {
return dist(k - 1, (1 << k - 1) - y + 1, (1 << k) - x + 1) + (size[k - 1] + 1) * 3;
} else {
return dist(k - 1, x - (1 << (k - 1)), y - (1 << (k - 1))) + (size[k - 1] + 1) * 2;
}
}
}
int main()
{
fstream f("fractal.in", ios::in);
fstream g("fractal.out", ios::out);
int k, x, y;
f >> k >> x >> y;
for(int i = 1; i < MAXK; ++i) {
size[i] = size[i - 1] * 4 + 3;
}
g << dist(k, x, y) << endl;
f.close();
g.close();
return 0;
}