該当の問題
https://beta.atcoder.jp/contests/abc009/tasks/abc009_4
提出したコード
python3
1# 入力 2K, M = map(int, input().split()) 3A = list(map(int, input().split())) 4C = list(map(int, input().split())) 5 6 7def atM(m): 8 """ 9 :param m: 目的の要素の1originでの位置 10 :return: Aのm番目の要素 11 """ 12 13 # 目的の要素がすでにある場合 14 if m in range(1, len(A)+1): 15 return A[m-1] 16 # 新しく計算する必要がある場合 17 else: 18 # 計算 19 result = C[1-1] & atM(m-1) 20 for i in range(m-2, m-K-1, -1): 21 result = result ^ (C[m-i-1] & atM(i)) 22 # 追加 23 A.append(result) 24 return result 25 26 27print(atM(M))
入力sampleへの反応
入力例1 → 正常に作動
入力例2 → 正常に作動
入力例3 → 問題発生
エラー内容
Traceback (most recent call last):
File "C:/Users/user/PycharmProjects/AtCoder/ABC/9/d.py", line 17, in <module>
print(atM(M))
File "C:/Users/user/PycharmProjects/AtCoder/ABC/9/d.py", line 10, in atM
result = C[1-1] & atM(m-1)
File "C:/Users/user/PycharmProjects/AtCoder/ABC/9/d.py", line 10, in atM
result = C[1-1] & atM(m-1)
File "C:/Users/user/PycharmProjects/AtCoder/ABC/9/d.py", line 10, in atM
result = C[1-1] & atM(m-1)
[Previous line repeated 993 more times]
File "C:/Users/user/PycharmProjects/AtCoder/ABC/9/d.py", line 7, in atM
if m in range(1, len(A)+1):
RecursionError: maximum recursion depth exceeded in comparison
一応無駄な計算はしないように配慮したつもりなのですが、ほかの参加者の方の回答を見てもこの簡単な対策では上手くいかないことはわかりました。
もしどなたか解決方法をご存知でしたら、御時間のある折にでもお教えいただきたく思います。
よろしくお願いします。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/10/08 23:05