백준 2526 - 싸이클 (파이썬)
글 작성자: pental

https://www.acmicpc.net/problem/2526
풀이
수열 A는 다음과 같이 정의할 수 있다.
- A_0 = N
- A_i = A_{i-1} * N mod P
수열을 계속 계산하다 보면, 언젠가 같은 값이 다시 등장해서 반복(싸이클)이 발생한다. 이때 반복되는 구간의 길이를 구하는 문제이다.
- order 딕셔너리는 각 숫자가 몇 번째에 처음 등장했는지를 저장한다.
- n = n * N % P는 문제에서 정의된 수열의 다음 항을 계산한다.
- 만약 n이 이미 order에 있다면
- 싸이클이 시작된 시점은 order[n]
- 현재 시점은 count
- 즉, 싸이클 길이는 count - order[n]
코드
# 백준 2526 - 싸이클 # 분류 : 구현 N, P = map(int, input().split()) n = N order = {} count = 0 while True : if n not in order : order[n] = count n = n * N % P count += 1 else : print(count - order[n]) break
이 글은
(새창열림)
본 저작자 표시, 비영리 규칙 하에 배포할 수 있습니다. 자세한 내용은 Creative Commons 라이선스를 확인하세요.
Creative Commons
본 저작자 표시
비영리
'Programming > 백준' 카테고리의 다른 글
백준 2527 - 직사각형 (파이썬) (0) | 2025.03.28 |
---|---|
백준 2460 - 지능형 기차 2 (파이썬) (0) | 2025.03.28 |
백준 2530 - 인공지능 시계 (파이썬) (0) | 2025.03.28 |
백준 31962 - 등교 (파이썬) (0) | 2025.03.26 |
백준 25377 - 빵 (파이썬) (0) | 2025.03.25 |
댓글
이 글 공유하기
다른 글
-
백준 2527 - 직사각형 (파이썬)
백준 2527 - 직사각형 (파이썬)
2025.03.28 -
백준 2460 - 지능형 기차 2 (파이썬)
백준 2460 - 지능형 기차 2 (파이썬)
2025.03.28 -
백준 2530 - 인공지능 시계 (파이썬)
백준 2530 - 인공지능 시계 (파이썬)
2025.03.28 -
백준 31962 - 등교 (파이썬)
백준 31962 - 등교 (파이썬)
2025.03.26
댓글을 사용할 수 없습니다.