๐ ์ถ์ฒ - 1074 - Z
๋ฌธ์ ์ค๋ช
ํ์๋ ํฌ๊ธฐ๊ฐ 2N ร 2N์ธ 2์ฐจ์ ๋ฐฐ์ด์ Z๋ชจ์์ผ๋ก ํ์ํ๋ ค๊ณ ํ๋ค. ์๋ฅผ ๋ค์ด, 2ร2๋ฐฐ์ด์ ์ผ์ชฝ ์์นธ, ์ค๋ฅธ์ชฝ ์์นธ, ์ผ์ชฝ ์๋์นธ, ์ค๋ฅธ์ชฝ ์๋์นธ ์์๋๋ก ๋ฐฉ๋ฌธํ๋ฉด Z๋ชจ์์ด๋ค.
N > 1์ธ ๊ฒฝ์ฐ, ๋ฐฐ์ด์ ํฌ๊ธฐ๊ฐ 2N-1 ร 2N-1๋ก 4๋ฑ๋ถ ํ ํ์ ์ฌ๊ท์ ์ผ๋ก ์์๋๋ก ๋ฐฉ๋ฌธํ๋ค.
๋ค์ ์๋ 22 ร 22 ํฌ๊ธฐ์ ๋ฐฐ์ด์ ๋ฐฉ๋ฌธํ ์์์ด๋ค.
N์ด ์ฃผ์ด์ก์ ๋, rํ c์ด์ ๋ช ๋ฒ์งธ๋ก ๋ฐฉ๋ฌธํ๋์ง ์ถ๋ ฅํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
๋ค์์ N=3์ผ ๋์ ์์ด๋ค.
์
๋ ฅ
์ฒซ์งธ ์ค์ ์ ์ N, r, c๊ฐ ์ฃผ์ด์ง๋ค.
์ถ๋ ฅ
rํ c์ด์ ๋ช ๋ฒ์งธ๋ก ๋ฐฉ๋ฌธํ๋์ง ์ถ๋ ฅํ๋ค.
์ ํ
์์ ์ ๋ ฅ | ์์ ์ถ๋ ฅ |
---|---|
2 3 1 | 11 |
3 7 7 | 63 |
1 0 0 | 0 |
4 7 7 | 63 |
10 511 511 | 262143 |
10 512 512 | 786432 |
์๋ฅผ ๋ค์ด, N=3, r=7, c=7๋ฅผ ์ ๋ ฅ ๋ฐ์๋ค๊ณ ๊ฐ์ ํ๋ค๋ฉด ๋ต์ผ๋ก ๋์ถ๋์ด์ผ ํ๋ ๊ฐ์ 63์ด๋ค. ์ด ๊ณผ์ ์ ํ๋ฒ ์ดํด๋ด๋ณด์.
๋จผ์ ์ด๋ ๊ฒ 4๊ฐ์ ์์ญ์ผ๋ก ๋ถํ ํ์ ๋ ๊ท์น์ ์ดํด๋ณด๋ฉด
์ฒ์ (7, 7)์ N=3์ธ ์์ญ์์ ์ 4์ฌ๋ถ๋ฉด์ ํด๋น๋ฉ๋๋ค.
(๊ฐ๋ก ์ขํ 7 >= 2์ 2์น, ์ธ๋ก ์ขํ 7 >= 2์ 2์น์ด๋ฏ๋ก ์ 4์ฌ๋ถ๋ฉด)
๋ ๋ฒ์งธ๋ก ์ชผ๊ฐฐ์๋๋ (7, 7)์ ์ขํ๋ (3, 3)์ด ๋ฉ๋๋ค.
(๊ฐ๋ก ์ธ๋ก๊ฐ ๊ฐ๊ฐ ๋ค์นธ์ฉ ์ค์ด๋๋๊น, 7 - 2์ 2์น = 3)
๋ํ (3, 3)์ N = 2์ธ ์์ญ์์ ์ 4์ฌ๋ถ๋ฉด์ ํด๋น๋ฉ๋๋ค.
(3 >= 2์ 1์น, 3 >= 2์ 1์น์ด๋ฏ๋ก ์ 4์ฌ๋ถ๋ฉด)
48์ ๋บ๋ค๊ณ ๊ฐ์ ํ๋ค๋ฉด, ์ 4 ์ฌ๋ถ๋ฉด์ 12๋ถํฐ ์์ํฉ๋๋ค.
์ธ ๋ฒ์งธ๋ก ์ชผ๊ฐ๋ฉด (3, 3)์ ์ขํ๋ (1, 1)๋ก, ์ 4์ฌ๋ถ๋ฉด์ ํด๋นํฉ๋๋ค.
(๊ฐ๋ก ์ธ๋ก ๋ ์นธ์ฉ ์ค์ด๋๋๊น, 3 - 2์1์น = 1)
์ 4์ฌ๋ถ๋ฉด์ธ (1, 1)์ 3์ ๋๋ค.
๊ทธ๋์ 48 + 12 + 3์ 63์ ๋๋ค.
N, r, c = map(int, input().split())
ans = 0
while N != 0:
N -= 1
size = 2 ** N
if r < size and c < size: # 1์ฌ๋ถ๋ฉด
ans += (size) * (size) * 0
elif r < size and c >= size: # 2์ฌ๋ถ๋ฉด
ans += (size) * (size) * 1
c -= size
elif r >= size and c < size: # 3์ฌ๋ถ๋ฉด
ans += (size) * (size) * 2
r -= size
else: # 4์ฌ๋ถ๋ฉด
ans += (size) * (size) * 3
c -= size
r -= size
print(ans)