만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

토끼 농장

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

요약
n, k, p가 주어질 때 n번째 달의 토끼 쌍 수를 p로 나눈 나머지를 구합니다. 전체 쌍 수를 k로 나눈 나머지가 1이면 새로 태어난 한 쌍이 죽습니다.
난이도

어려움10점 중 8점

유형
행렬, 정수론, 시뮬레이션
정답자
아직 제출이 없습니다

문제

농부 DongDong의 올해 작물 수확량은 계속 부진하다. 돈을 더 벌 방법을 고민하던 중, 옆집 아이들이 토끼 번식 이야기를 나누는 것을 우연히 들었다.

문제는 이렇다. 첫 달 초에 어린 토끼 한 쌍이 태어났다. 이 토끼들은 두 달을 자란 뒤, 세 번째 달 초부터 매달 새끼 토끼 두 마리를 낳는다. 새로 태어난 토끼도 두 달을 자라면, 그 뒤로 매달 한 쌍씩 새끼를 낳는다. 아이들은 nn번째 달에 토끼가 모두 몇 쌍인지 묻는다.

눈치 빠른 독자라면 이미 알아챘을 것이다. nn번째 달의 토끼 쌍 수는 nn번째 피보나치 수와 같다. DongDong은 피보나치 수가 무엇인지 모르지만, 규칙은 알아냈다. 달 i+2i+2의 토끼 쌍 수는 달 ii의 쌍 수와 달 i+1i+1의 쌍 수를 더한 것과 같다. 따라서 처음 몇 달의 토끼 쌍 수는 1, 1, 2, 3, 5, 8, 13, 21, 34, ... 이다.

DongDong은 시간이 갈수록 토끼가 빠르게 늘어난다는 것을 알게 된다. 토끼 번식으로 큰돈을 벌 생각에, 첫 달 초에 바로 토끼 한 쌍을 샀다.

DongDong은 매일 토끼에게 먹이를 준다. 토끼는 먹는 습관이 매우 까다롭다. 항상 kk쌍이 원을 이루어 둘러앉는다. kk쌍에 못 미치는 나머지 무리는 따로 원을 이룬다. 토끼는 외로움을 몹시 싫어하기 때문이다. 세 번째 달부터, 먹이를 줄 때 한 쌍으로만 이루어진 원이 생기면 그 쌍은 곧 죽는다. 죽는 토끼는 항상 가장 나중에 태어난 토끼라고 가정한다. 예를 들어 k=7k=7이면 처음 몇 달의 토끼 쌍 수는 1, 1, 2, 3, 5, 7, 12, 19, 31, 49, 80, ... 이다.

nn이 주어질 때, nn번째 달의 토끼 쌍 수를 구하라. 답이 매우 클 수 있으므로 pp로 나눈 나머지를 구하면 된다.

입력

세 개의 양의 정수 nn, kk, pp가 한 줄에 주어진다.

출력

nn번째 달의 토끼 쌍 수를 pp로 나눈 나머지를 한 줄에 출력한다.

제한

  • 1≤n≤10181 \le n \le 10^{18}
  • 2≤k≤1062 \le k \le 10^{6}, 2≤p≤1092 \le p \le 10^{9}

예제2

  1. 예제 1

    입력
    6 7 100
    
    예상 출력
    7
    
  2. 예제 2

    입력
    7 7 5
    
    예상 출력
    2