Pagini recente » Cod sursa (job #2434354) | Cod sursa (job #110781) | Cod sursa (job #1112777) | Cod sursa (job #2319553) | Cod sursa (job #719201)
Cod sursa(job #719201)
#include <cstdio>
FILE *f,*g;
int x,y,k;
void rot(int n, int *x, int *y, int rx, int ry) {
int t;
if (ry == 0) {
if (rx == 1) {
*x = n-1 - *x;
*y = n-1 - *y;
}
t = *x;
*x = *y;
*y = t;
}
}
int xy2d (int n, int x, int y) {
int rx, ry, s, d=0;
for (s=n/2; s>0; s/=2) {
rx = (x & s) > 0;
ry = (y & s) > 0;
d += s * s * ((3 * rx) ^ ry);
rot(s, &x, &y, rx, ry);
}
return d;
}
int main() {
f=fopen("fractal.in","r");
g=fopen("fractal.out","w");
fscanf(f,"%d%d%d",&k,&x,&y);
fprintf(g,"%d",xy2d(1<<k,x-1,y-1));
fclose(g);
return 0;
}