쿠옹이의 궁금증

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

요약
길이가 정확히 M이고 값이 N인 수식을 센다. 항은 0이거나 0으로 시작하지 않는 수이며 부호로 구분된다.
난이도

보통10점 중 5점

유형
동적 계획법, 조합론, 완전 탐색
정답자
아직 제출이 없습니다

문제

쿠옹이는 어느 날 갑자기 이런 궁금증이 들었다. '연산 결과가 NN이 되는 수식은 몇 개가 있을까?'

쿠옹이는 연산 결과가 NN이 되는 수식의 뒤에 +0, -0 등을 이어 붙이면 여전히 연산 결과가 NN이므로 이 시행을 반복하면 연산 결과가 NN인 수식을 무한히 만들 수 있다는 슬픈 사실을 깨닫고 말았다.

그래서 쿠옹이는 수식의 길이가 MM이어야 한다는 제약을 추가했지만 이번에는 답을 내지 못했다. 여러분이 대신 이 문제를 풀어 주자!

수식은 다음과 같이 정의된다.

  • 항은 0, 1, 2, 3, 4, 5, 6, 7, 8, 9만으로 구성되어 있으며 0으로 시작하지 않는 길이 1 이상의 문자열이다. 단 0은 0으로 시작하지만 예외적으로 항이다.
  • 수식은 1개 이상의 항을 포함하며 각 항이 + 또는 -로 구분되어 있는 문자열이다.

다르게 설명하면 수식은 다음 정규식을 만족하는 문자열을 말한다.

  • (([1-9][0-9]*|'0')[+-]))*([1-9][0-9]*|'0')

입력

첫째 줄에 정수 NN과 MM이 공백으로 구분되어 주어진다. (0≤N≤105,1≤M≤11)(0 \le N \le 10^5, 1 \le M \le 11)

출력

길이 MM의 연산 결과가 NN이 되는 서로 다른 수식의 수를 출력하라. 이때 그러한 수식이 아주 많을 수 있으므로 109+710^9+7로 나눈 나머지를 대신 출력하라.

예제5

  1. 예제 1

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

    입력
    123 3
    
    예상 출력
    1
    
  3. 예제 3

    입력
    100000 5
    
    예상 출력
    0
    
  4. 예제 4

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

    입력
    10 3
    
    예상 출력
    9