Pagini recente » Cod sursa (job #897506) | Cod sursa (job #2265872) | Cod sursa (job #291684) | Cod sursa (job #1016043) | Cod sursa (job #685984)
Cod sursa(job #685984)
#include<stdio.h>
long v[16];
unsigned long long fractal1(int a)
{
if(a==1) return 3;
return 3+4*fractal1(a-1);
}
unsigned long long fractal2(int k,long x,long y)
{
if(k==1)
if(x==1)
if(y==1) return 0;
else returm 3;
else
if(y==1) return 1;
else return 2;
if(x<=v[k]&&y<=v[k]) return fractal2(k-1,v[k]-x+1,y);
if(x>v[k]&&y<=v[k]) return 1+fractal1(k-1)+fractal2(k-1,x-v[k],y);
if(x>v[k]&&y>v[k]) return 2+2*fractal1(k-1)+fractal2(k-1,x-v[k],y-v[k]);
return 3+3*fractal1(k-1)+fractal2(k-1,y-v[k],x);
}
int main()
{
int k;
long x,y;
freopen("fractal.in","r",stdin);
freopen("fractal.out","w",stdout);
scanf("%d%ld%ld",&k,&x,&y);
v[0]=1;
for(i=1;i<k;i++)
v[i]=v[i-1]*2;
printf("%ld",fractal2(k-1,x,y));
return 0;
}