모듈로 솔리테어

시간 제한1초메모리 제한128 MB

요약
모듈러스 m, 최대 10개의 일차식 사상, 시작값 s0가 주어질 때 0에 도달하는 최소 이동 횟수를 구한다.
난이도

쉬움10점 중 3점

유형
BFS, 그래프
정답자
아직 제출이 없습니다

문제

모듈로 솔리테어는 심심할 때 즐길 수 있는 게임으로, 휴대폰 없이 종이만 있어도 할 수 있다. 먼저 법(modulus) mm을 정한다. 그다음 nn개의 수 쌍 (ai,bi)(a_i, b_i)를 정한다. 마지막으로 시작 수 s0s_0을 정한다. 목표는 s0s_0에서 시작하여 가능한 한 적은 횟수의 이동으로 00에 도달하는 것이다.

각 이동에서는 인덱스 ii(1≤i≤n1 \le i \le n)를 하나 고른 뒤, 현재 수 ss를 (s⋅ai+bi) mod m(s \cdot a_i + b_i) \bmod m으로 바꾼다. 즉, jj번째 이동 직전의 수가 sj−1s_{j-1}이고 인덱스 ii를 골랐다면 sj=(sj−1⋅ai+bi) mod ms_j = (s_{j-1} \cdot a_i + b_i) \bmod m이 된다.

s0s_0을 00으로 만드는 데 필요한 최소 이동 횟수를 구하여라.

입력

첫째 줄에 세 정수 mm, nn, s0s_0이 주어진다. (0<m≤1060 < m \le 10^6, 0≤n≤100 \le n \le 10, 0<s0<m0 < s_0 < m)

이어지는 nn개의 줄에는 각각 두 정수 aia_i와 bib_i가 주어진다. (0≤ai≤1090 \le a_i \le 10^9, 0≤bi≤1090 \le b_i \le 10^9)

출력

s0s_0에서 시작하여 00에 도달하는 데 필요한 최소 이동 횟수를 정수 하나로 출력한다. 어떤 방법으로도 00에 도달할 수 없다면 −1-1을 출력한다.

예제2

  1. 예제 1

    입력
    5 2 1
    2 1
    3 1
    
    예상 출력
    2
    
  2. 예제 2

    입력
    10 0 5
    
    예상 출력
    -1