Pagini recente » Cod sursa (job #3200714) | Cod sursa (job #562969) | Cod sursa (job #183806) | Monitorul de evaluare | Cod sursa (job #227980)
Cod sursa(job #227980)
#include <stdio.h>
#include <algorithm>
using namespace std;
int p2[32];
int k, x, y;
int pasi(int k, int x, int y)
{
if (k == 0)
return 0;
int jm = k - 1, ps = p2[(k - 1) << 1];
if (y > p2[jm])
{
if (x <= p2[jm])
return (ps + pasi(jm, x, y - p2[jm]));
else return (ps * 2 + pasi(jm, x - p2[jm], y - p2[jm]));
}
else
{
if (x <= p2[jm])
return (pasi(jm, y, x));
else return (ps * 3 + pasi(jm, p2[jm] - y + 1, p2[k] - x + 1));
}
}
int main()
{
freopen("fractal.in","r",stdin);
freopen("fractal.out","w",stdout);
scanf("%ld %ld %ld", &k, &x, &y);
p2[0] = 1;
for (int i = 1; i <= k << 1; i++)
p2[i] = p2[i - 1] << 1;
printf("%ld\n", pasi(k, x, y));
fclose(stdin);
fclose(stdout);
return 0;
}