Pagini recente » Cod sursa (job #767050) | Cod sursa (job #239916) | Cod sursa (job #2316670) | Cod sursa (job #3154367) | Cod sursa (job #1674185)
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("fractal.in");
ofstream out("fractal.out");
unsigned long long pw2[20];
long long dist(int x, int y, int k) {
if(k == 0)
return 0;
long long piv = pw2[k-1];
if(x <= piv && y <= piv) {
swap(x,y);
return dist(x, y, k-1);
}
if(x > piv && y <= piv)
return piv*piv+dist(x-piv, y, k-1);
if(x > piv && y > piv)
return 2*piv*piv+dist(x-piv, y-piv, k-1);
if(x <= piv && y > piv) {
y -= piv;
x = piv-x+1;
y = piv-y+1;
swap(x,y);
return 3*piv*piv+dist(x, y, k-1);
}
}
int main() {
int k,x,y;
in >> k >> x >> y;
swap(x,y);
pw2[0] = 1;
for(int i = 1; i <= 17; i++)
pw2[i] = pw2[i-1]*2;
out << dist(x, y, k);
return 0;
}