Cod sursa(job #87812)

Utilizator marius135Dumitran Adrian Marius marius135 Data 29 septembrie 2007 11:46:21
Problema Fractal Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.88 kb
#include<stdio.h>
#include<math.h>


int main()
{
	freopen("fractal.in","r",stdin);
	freopen("fractal.out","w",stdout);
	long nr =0,n,a,b,i,poz,x,y;
	scanf("%ld %ld %ld",&n,&a,&b);
	
	for(i=n;i>=2;i--)
	{
		x = pow(2,i-1);
		y = pow(2,i-1);
		if(a <= x && b <= y) {continue;}
		if(a > x && b <= y) {poz = 2;}
		if(a > x && b > y)  { poz =  4;}
		if(a <= x && b >y)  { poz  =4;}
		long difx,dify;
		if( poz == 2)
		{
			nr+= x*x;
			a -=x; 
			difx = a - 1;
			dify = b - 1;
			a = dify;
			b = difx;
			continue;
		}
		if( poz == 3)
		{
			nr+= x*x*2;
			a -= x;
			b -= y;
			difx = a-1;
			dify = b-1;
			a = dify;
			b = difx;
			continue;
		}
		if(poz == 4)
		{
			nr += x*x*3;
			a = x-a+1;
			b = x*2-b+1;
			continue;
		}
		
	}
	nr += (a==1 && b==2);
	nr += 2*(a==2 && b==2);
	nr += 3*(a==2 && b==1);
	printf("%ld\n",nr);
	
	return 0;
}