Pagini recente » rosiimici | Cod sursa (job #2576446) | Arhiva de probleme | Cod sursa (job #141566) | Cod sursa (job #244845)
Cod sursa(job #244845)
#include<stdio.h>
int kk,aux,k,x,y,sol,a[3][3]={{0,0,0},{0,0,3},{0,1,2}};
void parc(int k,int x,int y){
kk=(k>>1);
if(k == 2){
sol+=a[x][y];
return ;
}
if(x<=k>>1){
//prima jumatate
if(y<=k>>1){
//patratu 1;
aux=x; x=y;
y=(kk-aux+1);
y=kk-y+1;
parc(kk,x,y);
}
else{
//patratu 2;
sol+=3*(kk*kk);
y-=kk;
aux=y;
y=x;
x=kk - aux +1;
y=kk-y+1;
parc(kk,x,y);
}
}
else{
//a doua juamtate
if(y<=kk){
//patratu 3; e bine
sol+=(kk*kk);
parc(kk,(x-kk),y);
}
else{
//patratu 4;
sol+=2*kk*kk);
parc( kk,(x-kk),(y-kk) );
}
}
}
int main(){
FILE *f=fopen("fractal.in","r");
fscanf(f,"%d %d %d",&k,&y,&x);
fclose(f);
parc((1<<k),x,y);
FILE *g=fopen("fractal.out","w");
fprintf(g,"%d",sol);
fclose(g);
return 0;
}