Pagini recente » Cod sursa (job #1565483) | Cod sursa (job #410927) | Cod sursa (job #1146339) | Cod sursa (job #1685132) | Cod sursa (job #767321)
Cod sursa(job #767321)
#include<stdio.h>
FILE *fin,*fout;
int rez,x,y,k;
int calc_cadran(int x,int y,int l)
{
if(y<=l/2 && x<=l/2)
return 1;
if(x<=l/2 && y>l/2)
return 2;
if(x>l/2 && y>l/2)
return 3;
return 4;
}
int pasi(int x,int y,int ord)
{
if(ord==1)
{
if(x==1 && y==1)
return 0;
if(x==2 && y==1)
return 3;
if(x==1 && y==2)
return 1;
return 2;
}
int l=1<<ord;
int c=calc_cadran(x,y,l);
int x1,y1;
if(c==1)
{
x1=y;
y1=x;
}
else
if(c==2)
{
x1=x;
y1=y-l/2;
}
else
if(c==3)
{
x1=x-l/2;
y1=y-l/2;
}
else
{
x1=l/2-y+1;
y1=l-x+1;
}
return l*l/4*(c-1)+pasi(x1,y1,ord-1);
}
int main()
{
fin=fopen("fractal.in","r");
fscanf(fin,"%d %d %d",&k,&x,&y);
fclose(fin);
fout=fopen("fractal.out","w");
rez=pasi(x,y,k);
fprintf(fout,"%d",rez);
fclose(fout);
return 0;
}