쿼드 압축
과 유사한 부분이 있습니다. N,r,c = list(map(int,input().split(" ")))
answer = -1
def quadrant(r,c): #몇사분면에 있는지를 계산합니다
if r == c == 0:
return 0
elif r == 0 and c == 1:
return 1
elif r == 1 and c == 0:
return 2
else:
return 3
def Z_func(N,r,c,answer):
if N == 0: #N이 0일 경우가 종료조건입니다.
# (2**(2*N-2))은 한 사분면의 크기입니다
return int(answer + (2**(2*N-2))**quadrant(r,c))
#div로 몇분면에 위치하는지, mod로 해당 분면의 어디에 위치하는지를 표시합니다.
r_div,r_mod = divmod(r,2**(N-1))
c_div,c_mod = divmod(c,2**(N-1))
answer += (2**(2*N-2))*quadrant(r_div,c_div)
return Z_func(N-1,r_mod,c_mod,answer)
print(Z_func(N,r,c,answer))
quadrant
를 분기 없이 구현할 수 없을까?