Pagini recente » Cod sursa (job #1202513) | Cod sursa (job #2553051) | Cod sursa (job #2766755) | Cod sursa (job #1472906) | Cod sursa (job #2036460)
#include <iostream>
#include <cstdio>
using namespace std;
int getCadran(int n,int x,int y)
{
if(x<=n/2)
{
if(y<=n/2)
return 1;
if(y>n/2)
return 2;
}
else
{
if(y<=n/2)
return 4;
if(y>n/2)
return 3;
}
}
int nrPasi(int n,int x,int y)
{
int nrCadran=getCadran(n,x,y);
if(n==2)
{
return nrCadran;
}
switch(nrCadran)
{
case 1: return (nrCadran-1)*(n*n/4)+nrPasi(n/2,y,x);
case 2: return (nrCadran-1)*(n*n/4)+nrPasi(n/2,x,y-n/2);
case 3: return (nrCadran-1)*(n*n/4)+nrPasi(n/2,x-n/2,y-n/2);
case 4: return (nrCadran-1)*(n*n/4)+nrPasi(n/2,n-y+1-n/2,n-x+1);
}
}
int main()
{
freopen("fractal.in","r",stdin);
freopen("fractal.out","w",stdout);
int k,x,y;
scanf("%d%d%d",&k,&x,&y);
printf("%d",nrPasi(1<<k,x,y)-1);
return 0;
}