풀이


주어진 규칙에 따라 수열을 구하다보면 반복되는 수열이 나타난다는 점을 활용해서 문제를 해결해야한다.

반복되는 수열이 다시 나타난다는 점은 이미 생성된 수열에 중복되는 숫자가 있다는 의미다.

때문에 그 숫자를 기준으로 앞선 수열을 슬라이싱하여 그 길이를 출력해주면 해결할 수 있다.

소스코드


import sys
 
input = sys.stdin.readline
 
a, p = map(int, input().split())
d = [a]
 
while True:
    temp = sum([int(i)**p for i in str(d[-1])])
    if temp in d:
        print(len(d[:d.index(temp)]))
        break
    else:
        d.append(temp)

References