Cod sursa(job #34120)

Utilizator pocaituDavid si Goliat pocaitu Data 20 martie 2007 10:43:59
Problema Fractal Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.69 kb
#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;
 }