[백준/파이썬] 2526번 싸이클 풀이
업데이트:
문제 정보
- 문제 출처: 백준 온라인 저지
- 문제 링크: 2526번 싸이클
- 문제풀이 코드 GitHub 링크
- 제출 언어: Python 3
풀이
문제
수열 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)
설명
이미 나온 값을 리스트에 저장하다가 중복이 발생하면, 처음 등장 위치부터 현재 끝까지 길이가 사이클 길이입니다.
댓글남기기