Cod sursa(job #475553)

Utilizator nautilusCohal Alexandru nautilus Data 7 august 2010 13:24:21
Problema Fractal Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.97 kb
#include<fstream.h>
#include<math.h>
/*using namespace std;*/

long k,x,y,cadran,pas;

void det_cadran()
{
 if (x>=1 && x<=pow(2,k-1))
	 {
	  if (y>=1 && y<=pow(2,k-1))
		 cadran=1; else
		 cadran=2;
	 } else
	 {
	  if (y>=1 && y<=pow(2,k-1))
		 cadran=4; else
		 cadran=3;
	 }
}

void incrementare()
{
 pas=pas + (pow(2,2*k-2) * (cadran-1));
}

void schimbare()
{
 long x2,y2;
	
 if (cadran==1)
	 {
	  x2=y;
	  y2=x;
	 } else
	 if (cadran==2)
		 {
		  x2=x;
		  y2=y-pow(2,k-1)/*x-4*/;
		 } else
		 if (cadran==3)
			 {
			  x2=x-pow(2,k-1);
		      y2=y-pow(2,k-1)/*x-4*/;
			 } else
			 {
			  x2=pow(2,k-1)-y+1/*4-y+1*/;
			  y2=pow(2,k)-x+1/*8-x+1*/;
			 }
	
 x=x2; 
 y=y2;
 
 k--;
}

int main()
{
 ifstream fin("fractal.in");
 fin>>k>>x>>y;
 
 while (k!=0)
	 {
	  det_cadran();
	  incrementare();
	  schimbare();
	 }
 
 ofstream fout("fractal.out");
 fout<<pas;
 
 fin.close();
 fout.close();
	
 return 0;
}