Pagini recente » Cod sursa (job #2290403) | Cod sursa (job #2086139) | Cod sursa (job #2765269) | Cod sursa (job #2046874) | Cod sursa (job #1942933)
#include <cstdio>
using namespace std;
int linii[16],sol,ko,pa;
void traseu (int k,int x,int y){
int lat;
lat=(1<<k);
//if (k==1)
// printf ("a");
if (k==0)
return ;
if (x<=lat/2 && y<=lat/2){
// trebuie sa realizez oglindirea
traseu (k-1,y,x);
}
else if (x<=lat/2 && y>lat/2){
// trebuie sa realizez oglindirea
sol=sol+3*linii[k-1]+3;
y-=lat/2;
traseu (k-1,lat/2-y+1,lat/2-x+1);
}
else if (x>lat/2 && y<=lat/2){
// e deja in pozitie verticala
sol=sol+linii[k-1]+1;
traseu (k-1,x-lat/2,y);
}
else {
// e deja in pozitie verticala
sol=sol+2*linii[k-1]+2;
traseu (k-1,x-lat/2,y-lat/2);
}
}
int main()
{
FILE *fin=fopen ("fractal.in","r");
FILE *fout=fopen ("fractal.out","w");
int k,x,y,i;
fscanf (fin,"%d%d%d",&k,&y,&x);
ko=k;
linii[0]=0;
for (i=1;i<=k;i++)
linii[i]=4*linii[i-1]+3;
traseu (k,x,y);
fprintf (fout,"%d",sol);
return 0;
}