Pagini recente » Cod sursa (job #1707411) | Cod sursa (job #497157) | Cod sursa (job #3185165) | Cod sursa (job #1417803) | Cod sursa (job #2082361)
#include<stdio.h>
void rezolva(int k,int x,int y,int *numar_pasi,int two_to_k){
if(k==1){
if(x == 1 && y == 2)
(*numar_pasi)++;
if(x == 2 && y == 1)
(*numar_pasi) += 3;
if(x == 2 && y == 2)
(*numar_pasi) += 2;
}
else {
int coord = 1<<(k-1);
if(x <= coord && y <= coord){
x^=y;
y^=x;
x^=y;
}
else if(x <= coord && y > coord){
y-=k;
if(y>k)
y--;
(*numar_pasi) += two_to_k;
}
else if(x > coord && y > coord){
x=x-(k+1);
y=y-(k+1);
(*numar_pasi) += 2*two_to_k;
}
else if(x > coord && y <= coord){
x-=k;
if(x>k)
x--;
(*numar_pasi) += 3*two_to_k;
}
rezolva(--k,x,y,numar_pasi,two_to_k/4);
}
}
int main(){
FILE *fisier_intrare,*fisier_iesire;
fisier_intrare = fopen("fractal.in","rt");
fisier_iesire = fopen("fractal.out","wt");
int k,x,y;
int numar_pasi = 0;
fscanf(fisier_intrare,"%d %d %d",&k,&x,&y);
rezolva(k,x,y,&numar_pasi,1<<(2*k-2));
fprintf(fisier_iesire,"%d",numar_pasi);
return 0;
}