Pagini recente » Cod sursa (job #2452497) | Cod sursa (job #1616149) | Cod sursa (job #494515) | Cod sursa (job #2434042) | Cod sursa (job #1874899)
#include <cstdio>
using namespace std;
int k, ans = 0, x, y;
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 += middle*middle;
fractal(startx+middle, starty, level-1);
}
if(x >= startx + middle && y >= starty + middle)
{
ans += 2*middle*middle;
fractal(startx+middle, starty+middle, level-1);
}
if(x <= startx + middle - 1 && y >= starty + middle)
{
ans += 3*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;
}