Pagini recente » Cod sursa (job #2379732) | Cod sursa (job #1235005) | Cod sursa (job #1577239) | Cod sursa (job #2316134) | Cod sursa (job #678121)
Cod sursa(job #678121)
#include <fstream>
using namespace std;
const char* infile = "fractal.in";
const char* outfile = "fractal.out";
int GetCadran(int K, int X, int Y)
{
if( X <= (1 << (K - 1) ) )
{
if (Y <= (1 << (K - 1) ))
{
return 1;
}
else
{
return 2;
}
}
else
{
if (Y <= (1 << (K - 1) ))
{
return 4;
}
else
{
return 3;
}
}
}
int Solve( int K, int X, int Y )
{
int cadran = GetCadran(K, X, Y) ;
if(K == 1)
{
return cadran - 1;
}
int cost = (cadran - 1 ) * (1 << (K -1) ) * (1 << (K-1) );
switch(cadran)
{
case 1:
return cost + Solve(K-1, Y, X);
break;
case 2:
return cost + Solve(K-1, X, Y - (1 << (K -1) ) );
break;
case 3:
return cost + Solve(K-1, X - (1 << (K -1) ), Y - (1 << (K -1) ));
break;
case 4:
return cost + Solve(K-1, X - (1 << (K -1) ) , Y);
break;
}
return 0;
}
int main()
{
int K;
int X;
int Y;
fstream fin(infile, ios::in);
fin >> K >> X >> Y;
fin.close();
fstream fout(outfile, ios::out);
fout << Solve(K, X, Y) << "\n";
fout.close();
}