Pagini recente » Cod sursa (job #522265) | Cod sursa (job #3197467) | Cod sursa (job #2987804) | Cod sursa (job #2875621) | Cod sursa (job #73346)
Cod sursa(job #73346)
#include<stdio.h>
#include<math.h>
#include<fstream>
using namespace std;
int main()
{
freopen("fractal.in","r",stdin);
int k,x,y;
scanf("%d %d %d",&k,&x,&y);
int a[6][6];
a[1][1]=1; a[1][2]=1; a[1][3]=1; a[1][4]=3;
a[2][1]=4; a[2][2]=2; a[2][3]=2; a[2][4]=2;
a[3][1]=3; a[3][2]=3; a[3][3]=3; a[3][4]=1;
a[4][1]=2; a[4][2]=4; a[4][3]=4; a[4][4]=4;
int s[6],mx,my,q,i,v;
s[1]=1;s[2]=4;s[3]=2;s[4]=3;
int pasi=0;
int lix=0,liy=0,lfx=(int)pow(2.0,k),lfy=(int)pow(2.0,k);
while(k)
{
mx=(lfx+lix)/2;
my=(lfy+liy)/2;
if(x<=mx&&y<=my)
{
q=1;
lfx=mx;
lfy=my;
}
else
if(x<=mx&&y>my)
{
q=3;
lfx=mx;
liy=my;
}
else
if(x>mx&&y<=my)
{
q=2;
lix=mx;
lfy=my;
}
else
if(x>mx&&y>my)
{
q=4;
lix=mx;
liy=my;
}
pasi+=(int)pow(2.0,2*(k-1))*(s[q]-1);
v=s[q];
for(i=1;i<=4;i++)
s[i]=a[s[i]][v];
k--;
}
freopen("fractal.out","w",stdout);
printf("%d",pasi);
return 0;
}