만드는 중입니다

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

문자열 나누기

면접 대비

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

요약
숫자 문자열을 K개의 비어 있지 않은 연속 부분 문자열로 자를 때, 어떤 조각도 0으로 시작하지 않도록(단, "0" 하나는 허용) 자르는 경우의 수를 구한다.
난이도

보통10점 중 6점

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

문제

숫자로 이루어진 문자열 SS가 있다. 문자열 SS를 K−1K-1번 잘라 KK개의 비어 있지 않은 연속 부분 문자열로 나눌 때, 어떤 연속 부분 문자열에도 leading zero가 없도록 나누는 경우의 수를 구하자.

입력

첫째 줄에 문자열의 길이 NN과 연속 부분 문자열의 개수 KK가 주어진다. (1≤K≤N≤2,5001 \le K \le N \le 2{,}500)

둘째 줄에 문자열 SS가 주어진다.

출력

첫째 줄에 경우의 수를 1,000,000,0071{,}000{,}000{,}007로 나눈 나머지를 출력한다.

힌트

leading zero는 숫자로 이루어진 문자열에서 0을 제외한 첫 번째 숫자 앞에 오는 모든 숫자 0을 의미한다.

단, "0"은 leading zero에 해당하지 않는다.

예제3

  1. 예제 1

    입력
    5 3
    00300
    
    예상 출력
    1
    
  2. 예제 2

    입력
    5 2
    00200
    
    예상 출력
    0
    
  3. 예제 3

    입력
    5 4
    12345
    
    예상 출력
    4