Pagini recente » Cod sursa (job #1954876) | Cod sursa (job #2194946) | Cod sursa (job #1936263) | Cod sursa (job #1571453) | Cod sursa (job #2037664)
#include <cstdio>
using namespace std;
int n,x,y,s=0;
int pow(int p,int k)
{
int nr=1;
while(k)
nr*=p,k--;
return nr;
}
void rez(int n)
{
if(n>1)
{n--;
int lin,col,p2n=pow(2,n),p4n=pow(4,n);
if(x<=p2n&&y<=p2n)
{
lin=y;
col=p2n-x+1;
col=p2n-col+1;
x=lin;
y=col;
rez(n);
}
if(x>p2n&&y<=p2n)
{
s+=p4n;
x-=p2n;
rez(n);
}
if(x>p2n&&y>p2n)
{
s+=2*p4n;
y-=p2n;
x-=p2n;
rez(n);
}
if(x<=p2n&&y>p2n)
{
y-=p2n;
col=x;
lin=n-y+1;
col=n-col+1;
x=lin;
y=col;
s+=3*p4n;
rez(n);
}
}
else
{
if(x==1&&y==2)
s+=3;
if(x==2&&y==1)
s++;
if(x==2&&y==2)
s+=2;
}
}
int main()
{
freopen("fractal.in","r",stdin);
freopen("fractal.out","w",stdout);
scanf("%d%d%d",&n,&y,&x);
rez(n);
printf("%d",s);
return 0;
}