Pagini recente » Sandbox (cutiuţa cu năsip) | Cod sursa (job #1412714) | Cod sursa (job #824530) | Cod sursa (job #57564) | Cod sursa (job #2037435)
#include <stdio.h>
#include <stdlib.h>
int cdr, nr_pasi;
int c_hilbert(int n, int lin, int col) {
int lim, i, aux;
if(n==1) {
if(lin==1 && col==0)
nr_pasi++;
else if(lin==1 && col==1)
nr_pasi+=2;
else if(lin==0 && col==1)
nr_pasi+=3;
return nr_pasi;
}
lim=1<<(n-1);
if(lin<lim && col<lim) {
cdr = 1;
aux=col;
col=lin;
lin=aux;
}
if(lin>=lim && col<lim) {
cdr = 2;
lin-=lim;
}
if(lin>=lim && col>=lim) {
cdr = 3;
lin-=lim;
col-=lim;
}
if(lin<lim && col>=lim) {
cdr = 4;
aux=lin;
lin=2*lim-col-1;
col=2*lim-aux-1;
col-=lim;
}
for(i=0; i<cdr-1; i++)
nr_pasi+=lim*lim;
return c_hilbert(n-1, lin, col);
}
int main()
{
int n, lin, col;
FILE *fi, *fo;
fi = fopen("fractal.in", "r");
fo = fopen("fractal.out", "w");
fscanf(fi, "%d%d%d", &n, &col, &lin);
fprintf(fo, "%d", c_hilbert(n, lin-1, col-1));
fclose(fi);
fclose(fo);
return 0;
}