Pagini recente » Cod sursa (job #2080274) | Cod sursa (job #692502) | Cod sursa (job #1890055) | Cod sursa (job #162795) | Cod sursa (job #539009)
Cod sursa(job #539009)
#include <cstdio>
#include <cstdlib>
FILE *fin=fopen("fractal.in","r");
FILE *fout=fopen("fractal.out","w");
int len[32];
int main (int argc, char * const argv[]) {
int x,y,k;
fscanf(fin, "%d%d%d",&k,&x,&y);
x--; y--;
len[0]=0;
for (int i=1; i<=k; i++)
len[i]=len[i-1]*4+3;
int sum = 0;
int sgn = 1;
while (k)
{
int lq = (x&(1<<(k-1)));
int dq = (y&(1<<(k-1)));
if (lq)
x = (1<<k)-x-1;
if (dq)
{
y-=(1<<(k-1));
} else {
int tmp = y;
y = x;
x = (1<<(k-1))-tmp-1;
}
if (!lq&&!dq)
{
sum+=sgn*(len[k-1]+1);
sgn*=-1;
}
if (!lq&&dq)
sum+=sgn*(len[k-1]+1);
if (lq&&dq)
sum+=sgn*(len[k-1]*2+2);
if (lq&&!dq)
sum+=sgn*(len[k-1]*3+3);
k--;
}
fprintf(fout, "%d\n",sum);
fclose(fin);
fclose(fout);
return 0;
}