Pagini recente » Cod sursa (job #2478027) | Cod sursa (job #391778) | Cod sursa (job #2179301) | Cod sursa (job #2886954) | Cod sursa (job #1032895)
#include <fstream>
using namespace std;
int K, X, Y, sol;
// cadranele le numerotez asa
// 1 4
// 2 3
int main()
{
ifstream fin("fractal.in");
fin >> K >> X >> Y;
fin.close();
while(K > 1)
{
if(X <= (1 << (K - 1)))
{
if(Y <= (1 << (K - 1)))
{
// cadranul 1 - trebui sa rotesc spre dreapta
swap(X, Y);
}
else
{
// cadranul 2
Y -= (1 << (K - 1));
sol += (1 << (K - 1)) * (1 << (K - 1));
}
}
else
{
if(Y <= (1 << (K - 1)))
{
// cadranul 4 - trebuie sa rotesc spre stanga
X = 2 * (1 << (K - 1)) - X + 1;
Y = (1 << (K - 1)) - Y + 1;
swap(X, Y);
sol += 3 * (1 << (K - 1)) * (1 << (K - 1));
}
else
{
// cadranul 3
X -= (1 << (K - 1));
Y -= (1 << (K - 1));
sol += 2 * (1 << (K - 1)) * (1 << (K - 1));
}
}
K--;
}
if(X == 1 && Y == 2)
sol++;
if(X == 2 && Y == 2)
sol += 2;
if(X == 2 && Y == 1)
sol += 3;
ofstream fout("fractal.out");
fout << sol << "\n";
fout.close();
return 0;
}