Cod sursa(job #1314843)

Utilizator mihail.jianuJianu Mihail mihail.jianu Data 12 ianuarie 2015 14:27:40
Problema Fractal Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.78 kb
#include<cstdio>
#include<cmath>
FILE*n=fopen("fractal.in","r"),*m=fopen("fractal.out","w");
int a[2][2],p,t,z,k,x,y,i,d;
void c(int&o,int&p){
    z=o;
    o=p;
    p=z;
}
int r(){
    p/=2;
    t=(t-3)/4;
    if(k==0)
        return 0;
    d=a[y>p][x>p];
    if(x>p)
        x-=p;
    if(y>p)
        y-=p;
    if(d==1)
        if(!a[1][1]%2)
            c(a[0][0],a[1][1]);
        else
            c(a[1][0],a[0][1]);
    if(d==4){
        if(a[1][1]%2)
            c(a[0][0],a[1][1]);
        else
            c(a[1][0],a[0][1]);
    }
    k--;
    return (t+1)*(d-1)+r();
}
int main(){
    fscanf(n,"%d%d%d",&k,&x,&y);
    a[0][0]=1;
    a[1][0]=2;
    a[1][1]=3;
    a[0][1]=4;
    p=pow(2,k);
    t=pow(4,k)-1;
    fprintf(m,"%d",r());
    return 0;
}