๐ก ์์ด๋์ด
- ์ ์ฒด ์ฌ์ด์ฆ๊ฐ 2์ ์ ๊ณฑ์ผ๋ก ์ฆ๊ฐํ๊ธฐ ๋๋ฌธ์ ์ ์ฒด๋ฅผ 4๋ถ๋ฉด์ผ๋ก ๋๋ ์ ํ ๋ณ์ ๊ธธ์ด๊ฐ 2๊ฐ ๋ ๋๊น์ง ๋๋๋ค.
- ํ ๋ณ์ ๊ธธ์ด๊ฐ 2๊ฐ ๋๋ฉด r๊ณผ c๋ฅผ ์ด์ฉํด์ ์ซ์๋ฅผ ์ฐพ๋๋ค.
- ์ซ์๋ฅผ ์ฐพ๊ธฐ ์ํด์๋ ๊ฐ์ฅ ์ผ์ชฝ ๋งจ ์์ ์ซ์์ ์ฃผ๋ชฉํด์ ์ฌ๊ท๋ฅผ ํตํด ์ฌ์ด์ฆ๊ฐ ์์์ง ๋๋ง๋ค idx๋ฅผ ์ด์ฉํด์ ์์ํ๋ ์ซ์๋ฅผ ์ง์ ํด์ค์ผํ๋ค.
N, r, c = map(int, input().split())
def divide(size, r, c):
idx = 0
if size == 2:
return r * 2 + c * 1
half = size // 2
if r < half and c < half:
return idx + divide(half, r, c)
elif r < half and c >= half:
idx += int(size * size / 4)
return idx + divide(half, r, c-half)
elif r >= half and c < half:
idx += int(size * size / 4 * 2)
return idx + divide(half, r-half, c)
else:
idx += int(size * size / 4 * 3 )
return idx + divide(half, r-half, c-half)
print(divide(2**N, r, c))