Pagini recente » Cod sursa (job #2754460) | Cod sursa (job #2829342) | Cod sursa (job #2569925) | Cod sursa (job #746623) | Cod sursa (job #1874900)
#include <cstdio>
using namespace std;
int k, x, y;
long long ans = 0;
void fractal(int startx, int starty, int level)
{
if(level == 0)
return;
int middle = (1<<(level-1));
if(x <= startx + middle - 1 && y <= starty + middle - 1)
fractal(startx, starty, level-1);
if(x >= startx + middle && y <= starty + middle - 1)
{
ans += 1LL*middle*middle;
fractal(startx+middle, starty, level-1);
}
if(x >= startx + middle && y >= starty + middle)
{
ans += 2LL*middle*middle;
fractal(startx+middle, starty+middle, level-1);
}
if(x <= startx + middle - 1 && y >= starty + middle)
{
ans += 3LL*middle*middle;
fractal(startx, starty + middle, level-1);
}
}
int main()
{
freopen("fractal.in", "r", stdin);
freopen("fractal.out", "w", stdout);
scanf("%d%d%d", &k, &y, &x);
fractal(1, 1, k);
printf("%d", ans);
return 0;
}