Pagini recente » Cod sursa (job #1782544) | Cod sursa (job #1042271) | Cod sursa (job #2004075) | Cod sursa (job #965238) | Cod sursa (job #1451840)
#include <fstream>
#include <algorithm>
using namespace std;
ifstream fin("fractal.in");
ofstream fout("fractal.out");
int Solve(int K,int X,int Y)
{
if (K == 1)
{
if (X == 1 && Y == 1) return 0;
else
if (X == 1 && Y == 2) return 1;
else
if (X == 2 && Y == 1) return 3;
else return 2;
}
K--;
if (X <= (1 << K) && Y <= (1 << K))
{
swap(X,Y);
return Solve(K,X,Y);
}
if (X <= (1 << K) && Y > (1 << K))
{
Y -= 1 << K;
return (1 << (2 * K)) + Solve(K,X,Y);
}
if (X > (1 << K) && Y <= (1 << K))
{
X -= 1 << K;
swap(X,Y);
X = (1 << K) - X + 1;
Y = (1 << K) - Y + 1;
return 3*(1 << (2 * K)) + Solve(K,X,Y);
}
if (X > (1 << K) && Y > (1 << K))
{
X -= 1 << K;
Y -= 1 << K;
return 2*(1 << (2 * K)) + Solve(K,X,Y);
}
}
int main()
{
int X,Y,K;
fin >> K >> X >> Y;
fout << Solve(K,X,Y);
return 0;
}