Cod sursa(job #1699248)
Utilizator | Data | 6 mai 2016 20:30:24 | |
---|---|---|---|
Problema | Fractal | Scor | 80 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 4.04 kb |
#include <iostream>
#include <fstream>
using namespace std;
int x,y,s=0;
ofstream g("fractal.out");
void fract(int k,int ori)
{
int a=1,i=0;
if(k==0)
g<<s;
else
{
while(i<=k-2)
{
i++;
a=a*2;
}
if(ori==1)
{
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,1);
}
else
if(x>a and y>a)
{
s=s+2*(a*a-1)+2;
x=x-a;
y=y-a;
fract(k-1,1);
}
else
if(x>a and y<=a)
{
s=s+3*(a*a-1)+3;
y=y-a;
fract(k-1,3);
}
}
else
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;
x=x-a;
fract(k-1,2);
}
else
if(x>a and y>a)
{
s=s+2*(a*a-1)+2;
x=x-a;
y=y-a;
fract(k-1,2);
}
else
if(x<=a and y>a)
{
s=s+3*(a*a-1)+3;
y=y-a;
fract(k-1,4);
}
}
else
if(ori==3)
{
if(x>a and y>a)
fract(k-1,4);
else
if(x<=a and y>a)
{
s=s+(a*a-1)+1;
y=y-a;
fract(k-1,3);
}
else
if(x<a and y<a)
{
s=s+2*(a*a-1)+2;
fract(k-1,3);
}
else
if(x>a and y<=a)
{
s=s+3*(a*a-1)+3;
x=x-a;
fract(k-1,1);
}
}
else
if(ori==4)
{
if(x>a and y>a)
fract(k-1,3);
else
if(x>a and y<=a)
{
s=s+(a*a-1)+1;
x=x-a;
fract(k-1,4);
}
else
if(x<=a and y<=a)
{
s=s+2*(a*a-1)+2;
fract(k-1,4);
}
else
if(x<=a and y>a)
{
s=s+3*(a*a-1)+3;
y=y-a;
fract(k-1,2);
}
}
}
}
int main()
{
int k;
ifstream f("fractal.in");
f>>k;
f>>x;
f>>y;
fract(k,1);
return 0;
}