결국 주기적인 수열
시간 제한1초메모리 제한128 MB
N, 시작값 n, 후위 표기법으로 주어진 함수 f가 있을 때 x를 f(x) mod N으로 반복 적용하며 결국 반복되는 주기의 길이를 구한다.
문제
음이 아닌 정수 에 대하여 함수 가 주어지고, 인 음이 아닌 정수 이 주어진다. 이를 이용해 다음과 같이 무한 수열 을 만들 수 있다. 여기서 은 , 으로 재귀적으로 정의된다.
이렇게 만든 수열 는 항상 결국 주기적이다. 즉, 어느 지점 이후로는 같은 구간이 반복된다. 예를 들어 와 같다.
, , 그리고 함수 가 주어질 때 수열 의 주기를 구하여라.
입력
입력의 각 줄에는 , , 그리고 함수 를 후위 표기법(역폴란드 표기법, RPN)으로 나타낸 식이 주어진다. 피연산자는 부호 없는 정수 상수, 문자 , 또는 변수 중 하나이다. 연산자는 이항 연산자만 허용되며 (덧셈), (곱셈), (나머지, 즉 정수 나눗셈의 나머지) 세 가지이다. 피연산자와 연산자는 공백으로 구분된다. 연산자는 각 함수에서 정확히 한 번만 나타나며, 항상 가장 마지막(가장 오른쪽, 즉 가장 위쪽) 연산자이고 그 두 번째 피연산자는 언제나 입력으로 주어진 이다. 예를 들어 다음 후위 표기식
2 x * 7 + N %
은 익숙한 중위 표기 에 해당한다. 모든 입력 줄의 길이는 100자 미만이다. 입력의 마지막 줄은 이며, 이 줄은 처리하지 않는다.
출력
입력의 각 줄마다 한 줄에 정수 하나를 출력한다. 그 값은 해당 입력 줄의 데이터로 만든 수열 의 주기이다.