Pagini recente » Cod sursa (job #2332208) | Cod sursa (job #854431) | Cod sursa (job #1563958) | Cod sursa (job #614975) | Cod sursa (job #1822384)
#include <math.h>
#include <vector>
#include <string.h>
#include <iostream>
#include <fstream>
using namespace std;
int fractal(int K, int X, int Y)
{
int _2ToK = (1 << K);
int power = (1 << (K - 1));
// Cazul de baza
if (K == 1 && X == 1 && Y == 1)
return 0;
if (K == 1 && X == 1 && Y == 2)
return 1;
if (K == 1 && X == 2 && Y == 2)
return 2;
if (K == 1 && X == 2 && Y == 1)
return 3;
// Cadranul 1
if (X <= power && Y <= power)
{
return fractal(K - 1, Y, X);
}
// Cadranul 2
if (X <= power && Y > power)
{
return power * power + fractal(K - 1, X, Y - power);
}
// Cadranul 3
if ((X > power && Y > power))
{
return 2 * power * power + fractal(K - 1, X - power, Y - power);
}
// Cadranul 4
return 3 * power * power + fractal(K - 1, power - Y + 1, 2 * power - X + 1);
}
int main()
{
ifstream in("fractal.in");
ofstream out("fractal.out");
int k, x, y;
in >> k >> x >> y;
out << fractal(k, x, y);
return 0;
}