Pagini recente » Cod sursa (job #293371) | Cod sursa (job #2105006) | Cod sursa (job #1603621) | Cod sursa (job #2135812) | Cod sursa (job #2045111)
#include <cstdio>
#include<iostream>
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=p2n-y+1;
col=p2n-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;
}