Pagini recente » Cod sursa (job #1929046) | Cod sursa (job #3200203) | Cod sursa (job #721165) | Cod sursa (job #2184947) | Cod sursa (job #1874916)
#include <cstdio>
using namespace std;
int k;
int ans = 0;
void fractal(int x, int y, int level)
{
if(level == 0)
return;
int middle = (1<<(level-1));
if(x <= middle && y <= middle)
fractal(y, x, level-1);
if(x > middle && y <= middle)
{
ans += middle*middle;
fractal(x - middle, y, level-1);
}
if(x > middle && y > middle)
{
ans += 2*middle*middle;
fractal(x - middle, y - middle, level-1);
}
if(x <= middle && y > middle)
{
ans += 3*middle*middle;
fractal(2*middle - y + 1, middle - x + 1, level - 1);
}
}
int main()
{
freopen("fractal.in", "r", stdin);
freopen("fractal.out", "w", stdout);
int x, y;
scanf("%d%d%d", &k, &y, &x);
fractal(x, y, k);
printf("%d", ans);
return 0;
}