Pagini recente » Cod sursa (job #2458782) | Cod sursa (job #2172645) | Cod sursa (job #1877154) | Cod sursa (job #1649567) | Cod sursa (job #2036985)
#include <cstdio>
long long n, x, y;
void citire(){
scanf("%lld %lld %lld", &n, &y, &x);
}
bool maiMic(long long x, long long k){
if(x <= (1 << (k - 1))){
return true;
}
return false;
}
void solve(){
long long k = n;
long long sol = 0;
while(k > 0){
// I
if(maiMic(x, k) == true && maiMic(y, k) == true){
long long tmp = x;
x = y;
y = tmp;
}
// II
else if(maiMic(x, k) == false && maiMic(y, k) == true){
sol += (1 << (2 * k - 2));
x = (1 << (k - 1)) + 1 - x;
y = (1 << (k - 1)) + 1 - y;
long long tmp = x;
x = y;
y = tmp;
// x = (1 << (k - 1)) + 1 - x;
x -= (1 << (k - 1));
}
// III
else if(maiMic(x, k) == false && maiMic(y, k) == false) {
sol += 2 * (1 << (2 * k - 2));
x -= (1 << (k - 1));
y -= (1 << (k - 1));
}
// IV
else if(maiMic(x, k) == true && maiMic(y, k) == false){
sol += 3 * (1 << (2 * k - 2));
y -= (1 << (k - 1));
}
k--;
}
printf("%lld", sol);
}
int main() {
freopen("fractal.in", "r", stdin);
freopen("fractal.out", "w", stdout);
citire();
solve();
return 0;
}