Mai intai trebuie sa te autentifici.

Cod sursa(job #831490)

Utilizator drobertDumitru Robert drobert Data 8 decembrie 2012 18:10:06
Problema Fractal Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.02 kb
#include <iostream>
#include <fstream>
#include <math.h>
using namespace std;
ifstream f("fractal.in");
ofstream g("fractal.out");
long long a,b,c,rez,i;
long long powy(long long t,long long p)
{
	long long e=1;
	for (i=1;i<=p;i++)
		e*=t;
	return e;
}
long long fract(long long k,long long x, long long y)
{
	int cadr;
	if (k==0)
		return rez;
	else
	{
		if (x<=powy(2,k-1) && y<=powy(2,k-1))
			cadr=1;
		else if (x>powy(2,k-1) && y<=powy(2,k-1))
			cadr=2;
		else if (x>powy(2,k-1) && y>powy(2,k-1))
			cadr=3;
		else if (x<=powy(2,k-1) && y>powy(2,k-1))
			cadr=4;
		if (cadr==1)
			return fract(k-1,y,powy(2,k-1)-(powy(2,k-1)-x+1)+1);
		if (cadr==2)
		{
			rez+=powy(4,k-1);
			return fract(k-1,x-powy(2,k-1),y);
		}
		if (cadr==3)
		{
			rez+=2*powy(4,k-1);
			return fract(k-1,x-powy(2,k-1),y-powy(2,k-1));
		}
		if (cadr==4)
		{
			rez+=3*powy(4,k-1);
			return fract(k-1,powy(2,k-1)-(y-powy(2,k-1))+1,powy(2,k-1)-x+1);
		}
	}
}
int main ()
{
	f>>a>>c>>b;
	g<<fract(a,b,c);
	return 0;
}