Pagini recente » Istoria paginii propuneri/6-arhiva-educationala | Cod sursa (job #523304) | Cod sursa (job #3271707) | Cod sursa (job #3194102) | Cod sursa (job #2924789)
#include <bits/stdc++.h>
using namespace std;
int ans(int k,int x,int y){
if(k == 1){
if(x == 1 && y == 1)
return 0;
if(x == 1 && y == 2)
return 1;
if(x == 2 && y == 2)
return 2;
return 3;
}
int curr = (1 << (k - 1));
if(x <= curr && y <= curr)
return ans(k - 1, y , x);
else
if(x <= curr && y > curr)
return 4 * curr + ans(k - 1,x , y - curr);
else
if(x > curr && y > curr)
return 8 * + ans(k - 1,x - curr ,y - curr);
else
if(x > curr && y <= curr)
return 2 * 3 * curr+ ans(k - 1,curr - y + 1,1 + 2 * curr - x);
}
int main()
{
freopen("fractal.in" , "r" , stdin);
freopen("fractal.out" , "w" , stdout);
ios_base::sync_with_stdio(false);
cin.tie(nullptr);
cout.tie(nullptr);
int k , x , y;
cin >> k >> x >> y;
cout << ans(k , x , y);
}