Pagini recente » Cod sursa (job #2745764) | Cod sursa (job #3223399) | Cod sursa (job #686098) | Cod sursa (job #2944728) | Cod sursa (job #504759)
Cod sursa(job #504759)
#include <stdio.h>
typedef unsigned short int usi;
int get(usi order,usi row,usi column) {
if(!order)
return 0;
else {
usi tmp = 1<<(order - 1); //1,1 -> 2,1 -> 2,2 -> 1,2
//printf("%d %d %d\n",row,column,tmp);
if(row <= tmp && column <= tmp) //cadranul 1
return get(order - 1,column,row); //rotesc diag1
else if(column <= tmp) //cadranul 2
return 1*(tmp*tmp - 1) + 1 + get(order - 1,row-tmp,column);
else if(row <= tmp) //cadranul 4
if(row + column - tmp != tmp + 1)
return 3*(tmp*tmp - 1) + 1 + 1 + 1 + get(order - 1,(tmp+1)-row,(tmp+1)-(column - tmp)); //rotesc diag2
else
return 3*(tmp*tmp - 1) + 1 + 1 + 1 + get(order - 1,row,(column - tmp));
else //cadranul 3
return 2*(tmp * tmp - 1) + 1 + 1 + get(order - 1,row - tmp,column - tmp);
}
}
int main() {
int
K,
X,
Y;
FILE
*fin = fopen("fractal.in","r"),
*fout = fopen("fractal.out","w");
fscanf(fin,"%hu%hu%hu",&K,&X,&Y);
fprintf(fout,"%d",get(K,Y,X));
fclose(fin);
fclose(fout);
return 0;
}