Pagini recente » Cod sursa (job #2486955) | Cod sursa (job #2587684) | Statisticile problemei Tabletennis | Cod sursa (job #2842111) | Cod sursa (job #34120)
Cod sursa(job #34120)
#include<stdio.h>
long n,k,x,y;
long hilbert(int k,int x,int y)
{if(k==1)
{if(x==1&&y==1) return 0;
if(x==1&&y==2) return 3;
if(x==2&&y==1) return 1;
return 2;
}
if(x<=1<<k-1)
if(y<=1<<k-1)
return (1<<k-1)*(1<<k-1)-1-hilbert(k-1,y,(1<<k-1)-x+1);
else return 3*(1<<k-1)*(1<<k-1)+(1<<k-1)*(1<<k-1)-1-hilbert(k-1,(1<<k)-y+1,x);
else
if(y<=1<<k-1)
return (1<<k-1)*(1<<k-1)+hilbert(k-1,x-(1<<k-1),y);
else
return 2*(1<<k-1)*(1<<k-1)+hilbert(k-1,x-(1<<k-1),y-(1<<k-1));
}
int main()
{freopen("fractal.in","r",stdin);
freopen("fractal.out","w",stdout);
scanf("%ld%ld%ld",&k,&x,&y);
printf("%ld",hilbert(k+1,x,y));
fclose(stdout);
return 0;
}