BOJ 1074 - Z
4865 ワード
質問リンク
関数→2^n*2^n配列で(r,c)アクセス順を返す関数
base condition → n == 0: return 0
復帰式
1象限であればreturn func(n-1,r,c)
2象限の場合は、2^(n-1)*2^(n-1)+func(n-,r,c-2^(n-1))を返します.
3象限の場合は2(2^(n-1)2^(n-1))+func(n-,r-2^(n-1),c)を返します.
4象限であればreturn 3(2^(n-1)2^(n-1))+func(n-,r-2^(n-1),c-2^(n-1)
import sys
def zigzag(n, r, c):
if n == 0:
return 0
half = 1 << (n-1)
if r < half and c < half:
return zigzag(n-1, r, c)
if r < half and c >= half:
return half*half + zigzag(n-1, r, c - half)
if r >= half and c < half:
return 2*half*half + zigzag(n-1, r - half, c)
return 3*half*half + zigzag(n-1, r - half, c - half)
n, r, c = map(int, sys.stdin.readline().split(' '))
print(zigzag(n, r, c))
Reference
この問題について(BOJ 1074 - Z), 我々は、より多くの情報をここで見つけました https://velog.io/@jjiani/BOJ-1074-Zテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol