Pagini recente » Cod sursa (job #2080613) | Cod sursa (job #2785507) | Cod sursa (job #2321548) | Cod sursa (job #1274547) | Cod sursa (job #371118)
Cod sursa(job #371118)
#include <stdio.h>
int d[17];
int z(int x,int y,int n)
{
int cnt,a;
if (n>1)
{
--n;
if ((x>d[n])&&(y>d[n]))
{
x-=d[n];
y-=d[n];
cnt=2*d[n]*d[n]+z(x,y,n);
}
else if ((x<=d[n])&&(y>d[n]))
{
y-=d[n];
a=y;
y=x;
x=d[n]-a+1;
cnt=3*d[n]*d[n]+z(x,y,n);
}
else if((x>d[n])&&(y<=d[n]))
{
x-=d[n];
cnt=d[n]*d[n]+z(x,y,n);
}
else
{
a=y;
y=d[n]-x+1;
x=a;
cnt=z(x,y,n);
}
return cnt;
}
else
{
if ((x==1)&&(y==1)) return 1;
if ((x==1)&&(y==2)) return 4;
if ((x==2)&&(y==1)) return 2;
return 3;
}
}
int main()
{
int x,y,n,k,i;
freopen("fractal.in","r",stdin);
freopen("fractal.out","w",stdout);
d[0]=1;
for (i=1;i<16;i++) d[i]=2*d[i-1];
scanf("%d%d",&n,&k);
for (i=1;i<k+1;i++)
{
scanf("%d%d",&x,&y);
printf("%d\n",z(x,y,n));
}
return 0;
}