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

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

숫자

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

요약
숫자 문자열과 상한 C가 주어질 때, 선행 0 없이 각 수가 C 이하가 되도록 문자열을 나누는 경우의 수를 구하고 그 마지막 k자리를 출력한다.
난이도

보통10점 중 7점

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

문제

보바가 또 실수를 저질렀다. 그는 출력 파일에 숫자들을 공백 없이 붙여서 출력하고 말았다. 결과를 본 보바는 경악했다. 그러나 곧 그는, 그 숫자들을 공백 없이 이어 붙였을 때 보바의 결과와 같아지는 음이 아닌 정수 수열이 몇 개나 되는지 궁금해졌다. 그는 자신의 프로그램이 아무 숫자나 출력할 수 있는 게 아니라 CC 이하의 숫자만, 그것도 앞에 0을 붙이지 않고 출력한다는 것을 기억해 냈다.

그래서 그는 각 수가 CC를 넘지 않는 음이 아닌 정수 수열의 개수를 구하기로 했다. 그 수가 꽤 클 수 있으므로, 그는 그 수의 마지막 kk자리만 알면 충분하다.

입력

첫째 줄에 세 정수 nn, CC, kk가 주어진다 (1≤n≤500001 \le n \le 50000, 1≤C≤1081 \le C \le 10^8, 1≤k≤181 \le k \le 18). 둘째 줄에는 nn자리 숫자로 이루어진 문자열, 즉 보바 프로그램의 결과가 주어진다.

출력

찾고자 하는 수열의 개수의 마지막 kk자리를 출력한다 (앞에 0을 붙이지 않는다).

예제3

  1. 예제 1

    입력
    3 11 2
    111
    
    예상 출력
    3
    
  2. 예제 2

    입력
    10 9 1
    0123456789876543210
    
    예상 출력
    1
    
  3. 예제 3

    입력
    1 8 3
    9
    
    예상 출력
    0