주기점

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

요약
구간 [0,m] 위의 조각별 선형 사상에서 주기 n인 주기점의 개수를 모듈로로 구하고, 해가 무한할 경우 이를 판별하는 문제입니다.
난이도

어려움10점 중 9점

유형
수학, 기하, 시뮬레이션
정답자
아직 제출이 없습니다

문제

동역학계의 고정점 개수, 더 일반적으로 주기 궤도의 개수를 계산하는 것은 여러 연구 분야에서 관심을 받는 문제입니다. 하지만 겉보기에는 단순해 보이는 모형에서도 그 동역학은 매우 복잡하게 나타날 수 있습니다. 이 문제에서는 실수 구간 [0,m][0, m]을 자기 자신으로 보내는 조각별 선형 사상 ff의 주기 nn인 주기점의 개수를 세야 합니다. 즉, 사상 f:[0,m]→[0,m]f : [0, m] \rightarrow [0, m]이 주어질 때, x∈[0,m]x \in [0, m]에 대한 방정식 fn(x)=xf^n(x) = x의 해의 개수를 구해야 합니다. 여기서 fnf^n은 ff를 nn번 반복 합성한 것입니다.

fn=f∘⋯∘f∘f⏟n번,f^n = \underbrace{f \circ \cdots \circ f \circ f}_{n \text{번}},

∘\circ는 사상의 합성을 뜻하며 (g∘h)(x)=g(h(x))(g \circ h)(x) = g(h(x))입니다.

이 사상들은 다음 성질을 만족합니다.

  • mm은 양의 정수이고, ff는 [0,m][0, m]의 모든 정수를 [0,m][0, m]의 정수로 보냅니다. 즉, 모든 k∈{0,1,…,m}k \in \{0, 1, \dots, m\}에 대해 f(k)∈{0,1,…,m}f(k) \in \{0, 1, \dots, m\}입니다.
  • 모든 k∈{0,1,…,m−1}k \in \{0, 1, \dots, m - 1\}에 대해 ff는 구간 [k,k+1][k, k+1]에서 선형입니다. 즉, 모든 x∈[k,k+1]x \in [k, k+1]에 대해 그 상은 f(x)=(k+1−x) f(k)+(x−k) f(k+1)f(x) = (k + 1 - x)\,f(k) + (x - k)\,f(k + 1)이며, 따라서 [k,k+1][k, k+1]에서 ff의 그래프는 직선 선분입니다.

주기점이 매우 많을 수 있으므로 결과를 주어진 정수로 나눈 나머지를 출력하세요. 해가 무한히 많으면 대신 Infinity를 출력하세요.

입력

입력은 여러 개의 테스트 케이스로 이루어지며, 각 테스트 케이스는 하나의 빈 줄로 구분됩니다. 각 테스트 케이스는 정수 mm (1≤m≤801 \le m \le 80)이 적힌 줄로 시작합니다. 다음 줄은 사상 ff를 설명하며, m+1m + 1개의 정수 f(0),f(1),…,f(m)f(0), f(1), \dots, f(m)을 담고 있고 각 값은 00 이상 mm 이하입니다. 테스트 케이스는 공백으로 구분된 두 정수, 즉 nn (1≤n≤50001 \le n \le 5000)과 나눗셈에 사용할 법 mod\mathit{mod} (2≤mod≤100002 \le \mathit{mod} \le 10000)가 적힌 줄로 끝납니다.

입력의 끝은 정수 00 하나만 있는 줄로 표시됩니다.

출력

각 테스트 케이스에 대해, 구간 [0,m][0, m]에서 방정식 fn(x)=xf^n(x) = x의 해의 개수를 mod\mathit{mod}으로 나눈 나머지를 출력하세요. 해가 무한히 많으면 대신 Infinity를 출력하세요.

예제1

  1. 예제 1

    입력
    2
    2 0 2
    2 10
    
    3
    0 1 3 2
    1 137
    
    3
    2 3 0 3
    20 10000
    
    0
    
    예상 출력
    4
    Infinity
    9074