Pagini recente » Cod sursa (job #2246653) | Cod sursa (job #1191503) | Cod sursa (job #3194562) | Cod sursa (job #1039802) | Cod sursa (job #1558813)
#include<cstdio>
using namespace std;
int K, X, Y;
int Hilbert(int, int, int);
int main()
{
freopen("fractal.in","r",stdin);
freopen("fractal.out","w",stdout);
scanf("%d%d%d", &K, &Y, &X);
printf("%d", Hilbert(K, X, Y));
}
int Hilbert(int k, int x, int y)
{
if (!k) return 0;
int put = 1 << (k - 1);
if (x <= put && y <= put)
return Hilbert(k - 1, y, x);
if (x <= put)
return Hilbert(k - 1, 2 * put - y + 1, put - x + 1) + 3 * put * put;
if (y <= put)
return Hilbert(k - 1, x - put, y) + put * put;
return Hilbert(k - 1, x - put, y - put) + 2 * put * put;
}