Pagini recente » Cod sursa (job #2382645) | Cod sursa (job #1397482) | Cod sursa (job #1676684) | Cod sursa (job #969124) | Cod sursa (job #1247414)
#include <cstdio>
using namespace std;
int K, x, y;
void read()
{
freopen("fractal.in", "r", stdin);
freopen("fractal.out", "w", stdout);
scanf("%d %d %d", &K, &x, &y);
}
int solve(int a ,int b, int L)
{
int s = 0;
while(L > 1)
{
int l = L - 1, c = 1 << (2*l), half = 1 << l, aux;
if(a <= half)
{
if(b <= half)
{
aux = b;
b = a;
a = aux;
}
else
{
b -= half;
s += c;
}
}
else
{
if(b <= half)
{
aux = b;
b = 2 * half - a + 1;
a = half - aux + 1;
s += (3*c);
}
else
{
b -= half;
a -= half ;
s += (2*c);
}
}
L--;
}
if(a == 1)
{
if(b == 1)
return s;
return s + 1;
}
else
{
if(b == 1)
return s + 3;
return s + 2;
}
}
int main() {
read();
printf("%d", solve(x, y, K));
return 0;
}