Pagini recente » Cod sursa (job #472486) | Cod sursa (job #2366832) | Cod sursa (job #2403431) | Cod sursa (job #1420258) | Cod sursa (job #197115)
Cod sursa(job #197115)
#include <stdio.h>
int k,x,y;
int curba(int k,int x,int y){
if (k==1) {
if (x==1 && y==1) return 1;
if (x==1 && y==2) return 2;
if (x==2 && y==2) return 3;
if (x==2 && y==1) return 4;
}
int w=1<<(2*(k-1)),v=1<<(k-1);
if ( x<=(1<<(k-1)) && y<=(1<<(k-1)) )
return w+1-curba(k-1,v+1-y,x);
if ( x<=(1<<(k-1)) && y>(1<<(k-1)) )
return w+curba(k-1,x,y-v);
if ( x>(1<<(k-1)) && y>(1<<(k-1)) )
return 2*w+curba(k-1,x-v,y-v);
return 4*w+1-curba(k-1,y,2*v+1-x);
}
int main(){
freopen("fractal.in","r",stdin);
freopen("fractal.out","w",stdout);
scanf("%d %d %d",&k,&x,&y);
printf("%d",curba(k,x,y)-1);
return 0;
}