Cod sursa(job #685996)

Utilizator Roninsabau sabin nicolae cristian Ronin Data 21 februarie 2012 12:38:25
Problema Fractal Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.76 kb
#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 return 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,i;
	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;
}