Cod sursa(job #1699018)
Utilizator | Data | 5 mai 2016 21:17:55 | |
---|---|---|---|
Problema | Fractal | Scor | 0 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 5.57 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;
if(k==1)
{
if(ori==2)
{
if(x<=a and y<=a)
{
s=s+2;
fract(k-1,2);
}
else
if(x<=a and y>a)
{
s=s+3;
fract(k-1,2);
}
else
if(x>a and y<=a)
{
s++;
fract(k-1,2);
}
else
fract(k-1,2);
}
else
if(ori==1)
{
if(x<=a and y<=a)
fract(k-1,2);
else
if(x>a and y<=a)
{
s=s+3;
fract(k-1,2);
}
else
if(x>a and y>a)
{
s=s+2;
fract(k-1,2);
}
else
{
s++;
fract(k-1,2);
}
}
else
if(ori==3)
{
if(x>a and y>a)
{
s=s+2;
fract(k-1,2);
}
else
if(x<=a and y>a)
{
s=s+3;
fract(k-1,2);
}
else
if(x<=a and y<=a)
fract(k-1,2);
else
{
s++;
fract(k-1,2);
}
}
}
else
{
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;
y=y-a;
fract(k-1,2);
}
}
else
{
if(x>a and y>a)
{
x=x-a;
y=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;
}