Pagini recente » Cod sursa (job #33777) | Cod sursa (job #3141102) | Cod sursa (job #2739658) | Cod sursa (job #3185013) | Cod sursa (job #2889859)
//Ilie Dumitru
#include<cstdio>
typedef long long int ll;
const int NMAX=3505;
const ll MOD=1000000007;
FILE* f=fopen("fractal.in", "r"), *g=fopen("fractal.out", "w");
int steps(int k, int x, int y)
{
if(!k)
return 0;
int area=((x<(1<<(k-1)))<<1)|(y<(1<<(k-1)));
switch(area)
{
case 0:
return 2*(1<<(k*2-2))+steps(k-1, x-(1<<(k-1)), y-(1<<(k-1)));
case 1:
return 3*(1<<(k*2-2))+steps(k-1, (1<<(k-1))-1-y, (1<<k)-1-x);
case 2:
return 1*(1<<(k*2-2))+steps(k-1, x, y-(1<<(k-1)));
case 3:
return steps(k-1, y, x);
}
return 0;
}
int main()
{
int K, x, y;
fscanf(f, "%d%d%d", &K, &x, &y);
--x;
--y;
fprintf(g, "%d", steps(K, x, y));
fclose(f);
fclose(g);
return 0;
}