Cod sursa(job #1698993)
Utilizator | Data | 5 mai 2016 20:05:40 | |
---|---|---|---|
Problema | Fractal | Scor | 50 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 2.96 kb |
#include <iostream>
#include <fstream>
using namespace std;
int x,y,s=0,k;
ofstream g("fractal.out");
void fract(int k,int ori)
{
if(k==0)
g<<s;
else
{
int i,a=1;
for(i=1;i<k;i++)
a=a*2;
if(ori==2)
{
if(x<=a and y<=a)
fract(k-1,1);
else
if(x<=a and y>a)
{
s=s+(a*a-1)+1;
y=y-a;
fract(k-1,2);
}
else
if(x>a and y>a)
{
s=s+(a*a-1)*2+2;
x=x-a;
y=y-a;
fract(k-1,2);
}
else
{
s=s+(a*a-1)*3+3;
x=x-a;
fract(k-1,3);
}
}
else
if(ori==1)
{
if(x<=a and y<=a)
fract(k-1,1);
else
if(x>a and y<=a)
{
s=s+(a*a-1)+1;
x=x-a;
fract(k-1,3);
}
else
if(x>a and y>a)
{
s=s+(a*a-1)*2+2;
x=x-a;
y=y-a;
fract(k-1,2);
}
else
{
s=s+(a*a-1)*3+3;
x=x-a;
fract(k-1,2);
}
}
else
{
if(x>a and y>a)
fract(k-1,2);
else
if(x<=a and y>a)
{
s=s+(a*a-1)+1;
y=y-a;
fract(k-1,2);
}
else
if(x<=a and y<=a)
{
s=s+(a*a-1)*2+2;
fract(k-1,1);
}
else
{
s=s+(a*a-1)*3+3;
x=x-a;
fract(k-1,3);
}
}
}
}
int main()
{
ifstream f("fractal.in");
f>>k;
f>>x;
f>>y;
fract(k,2);
return 0;
}