白駿2331.重複数列-問題解決(pop)(Python/Python)


🔎 2331番です.質問の表示
https://www.acmicpc.net/problem/2331

💡 問題を解く前に
思ったより構造が簡単でした.
「規則に従って数値を追加し、重複する数値が発生した場合は、すぐに計算を停止します!」
📋 コードの表示
from sys import stdin

A, P = map(int, stdin.readline().split())
check = [A]

while True:
    new = 0
    for i in (str(check[-1])):
        new += int(i) ** P
    if new in check:
        while True:
            if new == check.pop():
                print(len(check))
                exit()
    else:
        check.append(new)
🥕 コード解釈と関連概念
ルールに従って数値を計算するたびに、checkという名前のリストに新しい数値が追加されます.
for文は新数(new)を計算する区間である
そして、新しい数字(new)がcheckというリストにある場合、
たとえば、[1,5,3,4]を5にして追加しようとした場合
checkリストでpopから5.
そして残りのcheckリストの長さを出力すればいいです.