[백준/파이썬] 2526번 싸이클 풀이

업데이트:



문제 정보


풀이

문제

수열 x_{i+1} = (x_i * N) mod P를 만들 때 처음으로 반복되는 구간(사이클)의 길이를 구하는 문제입니다.

코드

n,p=map(int,input().split())
a,t=[],n
while True:
    t=(t*n)%p
    if t in a:
        print(len(a)-a.index(t))
        break
    a.append(t)

설명

이미 나온 값을 리스트에 저장하다가 중복이 발생하면, 처음 등장 위치부터 현재 끝까지 길이가 사이클 길이입니다.



댓글남기기