Pagini recente » Cod sursa (job #2269879) | Cod sursa (job #1034352) | Cod sursa (job #418818) | Cod sursa (job #1606084) | Cod sursa (job #2148001)
#include<fstream>
using namespace std;
ifstream fin("fractal.in");
ofstream fout("fractal.out");
int K, X, Y;
long long Sol = 0;
void solve( int K, int X, int Y ){
int N = (1<<K);
if( K == 1 ){
if( X == 2 && Y == 1 )
Sol++;
if( X == 2 && Y == 2 )
Sol += 2;
if( X == 1 && Y == 2 )
Sol += 3;
}else{
if( X <= N / 2 && Y <= N / 2 ){
int X1 = Y;
int Y1 = N / 2 - X + 1;
solve( K - 1, X1, N / 2 - Y1 + 1 );
return;
}
if( X > N / 2 && Y <= N / 2 ){
Sol += (1<<K);
solve( K - 1, X - N / 2, Y );
return;
}
if( X > N / 2 && Y > N / 2 ){
Sol += 2 * (1<<K);
solve( K - 1, X - N / 2, Y - N / 2 );
return;
}
if( X <= N /2 && Y > N / 2 ){
Sol += 3 * (1<<K);
Y -= N / 2;
int X1 = N / 2 - Y + 1;
int Y1 = X;
solve( K - 1, X1, N / 2 - Y1 + 1 );
return;
}
}
return;
}
int main(){
fin >> K >> Y >> X;
solve( K, X, Y );
fout << Sol << "\n";
return 0;
}