Pagini recente » Cod sursa (job #2930289) | Cod sursa (job #939685) | Cod sursa (job #554526) | Cod sursa (job #2123495) | Cod sursa (job #497389)
Cod sursa(job #497389)
#include <iostream>
#include <fstream>
using namespace std;
#define MAXK 16
int size[MAXK];
int dist(int k, int x, int y){
int p;
if(k){
if(x <= (1 << k - 1)){
if(y <= (1 << k - 1)){
p = dist(k - 1, y, (1 << k - 1) - x);
return p;
}else{
p = dist(k - 1, x, y - (1 << (k - 1))) + (size[k - 1] + 1);
return p;
}
}else{
if(y > (1 <<k - 1)){
p = dist(k - 1, x - (1 << (k - 1)), y) + (size[k - 1] + 1) * 2;
return p;
}else{
p = dist(k - 1, y - (1 << (k - 1)), (1 << k) - x + (1 << (k - 1))) + (size[k - 1] + 1) * 3;
return p;
}
}
}else return 0;
}
int main(){
fstream fin("fractal.in", ios::in);
fstream fout("fractal.out", ios::out);
int k, x, y;
fin>>k>>x>>y;
for(int i = 1; i < MAXK; ++i){
size[i] = size[i - 1] * 4 + 3;
}
fout<<dist(k, x, y)<<endl;
fin.close();
fout.close();
return 0;
}