Pagini recente » Cod sursa (job #1996438) | Cod sursa (job #709269) | Cod sursa (job #767498) | Cod sursa (job #1460984) | Cod sursa (job #2728555)
#include <fstream>
#include <math.h>
using namespace std;
ifstream inputFile ("fractal.in");
ofstream outputFile ("fractal.out");
int hilbert(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;
return 3;
}
int sum = 0;
int half = pow(2, k - 1);
int hilbert_sum = pow(4, k - 1) - 1;
if(x <= half)
{
if(y <= half)
return hilbert(k - 1, y, x);
else
return 1 + hilbert_sum + hilbert(k - 1, x, y - half);
}
else
{
if(y > half)
return 2 + 2 * hilbert_sum + hilbert(k - 1, x - half, y - half);
else
return 3 + 3 * hilbert_sum + hilbert(k - 1, x - half, y);
}
}
int main()
{
int k, x, y;
inputFile >> k >> x >> y;
outputFile << hilbert(k, x, y);
return 0;
}