아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

하늘의 타일링

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

요약
격자를 원기둥처럼 말았을 때 도미노 타일링의 가짓수를 제곱해 소수 P로 나눈 나머지를 구한다.
난이도

보통10점 중 7점

유형
동적 계획법, 행렬, 비트 연산, 수학
정답자
아직 제출이 없습니다

문제

N=2N = 2, M=6M = 6일 때의 각기둥 모양 격자. 빨간색은 도미노를 놓을 수 있는 위치의 예시입니다.

최근 이카로스는 비어있는 N×MN \times M 격자에서 1×21 \times 2 모양의 도미노와 2×12 \times 1 모양의 도미노로 격자를 빈틈없이 채우는 도미노 타일링의 가짓수를 계산하는 방법을 공부했습니다.

하지만 배운 내용을 실험하고자 직접 만든 격자를 님프가 날아와 둥글게 말아서 각기둥 모양으로 만들어버렸습니다. 격자를 다시 만들고자 했지만 더 이상 재료가 없어 만들 수 없어 상심에 빠져 있던 찰나, 이카로스는 각기둥 모양의 격자에서도 타일링의 가짓수를 충분히 구할 수 있다고 생각했습니다. 그렇지만 배운 내용으로 이를 계산하기는 역부족이었기에 여러분에게 이 문제를 해결해달라고 부탁했습니다.

이때 격자는 격자의 세로 방향의 양 끝이 서로 맞닿게 말려있습니다.

격자를 채울 도미노들을 가지러 간 이카로스를 대신하여 N×MN \times M 격자를 말아 만든 각기둥 모양 격자의 도미노 타일링의 가짓수를 제곱한 값을 구해주세요. 각기둥을 회전했을 때 같아지는 타일링이라도 매번 세야 합니다.

입력

첫 번째 줄에 처음 격자의 세로 길이와 가로 길이를 나타내는 NN과 MM 그리고 소수 PP가 공백으로 구분되어 주어집니다. (1≤N≤10181\leq N \leq 10^{18}, 3≤M≤453 \leq M \leq 45, 2≤P<1092 \leq P < 10^{9})

출력

각기둥 모양 격자의 도미노 타일링의 가짓수를 제곱한 값을 PP로 나눈 나머지를 출력합니다.

예제3

  1. 예제 1

    입력
    3 4 37
    
    예상 출력
    25
    
  2. 예제 2

    입력
    14 43 50505043
    
    예상 출력
    11579967
    
  3. 예제 3

    입력
    1000000000000000000 10 999999937
    
    예상 출력
    617876432