더 어려운 계단 수

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

요약
길이가 N인 B진법 계단 수 중 0부터 B-1까지 모든 숫자가 등장하는 수의 개수를 M으로 나눈 나머지를 구한다.
난이도

보통10점 중 7점

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

문제

45656이란 수를 보자.

이 수는 인접한 모든 자릿수의 차이가 1이 난다. 이런 수를 계단 수라고 한다.

그럼, 오늘도 역시 세준이는 0부터 B-1까지 모든 한 자리 숫자가 자릿수로 등장하면서, 길이가 N인 B진법 계단 수가 몇 개 있는지 궁금해졌다.

N, B, M이 주어질 때, 길이가 N이면서 0에서 B-1까지 모두 등장하는 B진법 계단 수의 개수를 M으로 나눈 나머지를 구하는 프로그램을 작성하시오. (0으로 시작하는 수는 없다.)

입력

첫째 줄에 자연수 N, B, M이 주어진다. (1 ≤ N ≤ 106, 2 ≤ B ≤ 106 , 109 ≤ M ≤ 2×109)

출력

첫째 줄에 정답을 출력한다.

예제4

  1. 예제 1

    입력
    14 12 1234567891
    
    예상 출력
    16
    
  2. 예제 2

    입력
    2000 1800 1000000000
    
    예상 출력
    47168488
    
  3. 예제 3

    입력
    5 6 2000000000
    
    예상 출력
    0
    
  4. 예제 4

    입력
    987654 3210 1234567890
    
    예상 출력
    245695446