Pagini recente » Cod sursa (job #498108) | Cod sursa (job #2545001) | Cod sursa (job #982067) | Cod sursa (job #3138600) | Cod sursa (job #594606)
Cod sursa(job #594606)
#include <stdio.h>
#define file_input "fractal.in"
#define file_output "fractal.out"
#define K_MAX 15
int S[K_MAX+1];
int path ( int k , int x , int y ) {
if(k==0) return 0;
int mid = 1<<(k-1);
if (x<=mid && y<=mid) return path(k-1,y,x);
if (x>mid && y<=mid) return S[k-1]+1+path(k-1,x-mid,y);
if (x>mid && y>mid) return 2*(S[k-1]+1)+path(k-1,x-mid,y-mid);
if (x<=mid && y>mid) return 3*(S[k-1]+1)+path(k-1,2*mid-y+1,mid-x+1);
return -1;
}
int init_size (int k) {
S[1] = 3;
int i;
for(i=2;i<=k;++i)
S[i] = 4*S[i-1]+3;
}
int main ( void ) {
int k, x, y;
FILE *fin = fopen(file_input,"r");
FILE *fout = fopen(file_output,"w");
fscanf(fin,"%d %d %d", &k, &y, &x);
fclose(fin);
init_size(k);
fprintf(fout,"%d\n", path(k,x,y) );
fclose(fout);
return 0;
}