만드는 중입니다

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

LCS 8

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

요약
길이가 N인 대문자 문자열 T 중 S와의 LCS 길이가 N-K 이상인 것의 개수를 10^9+7로 나눈 나머지로 구합니다.
난이도

어려움10점 중 8점

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

문제

대문자로만 이루어진 길이 NN의 문자열 SS와 작은 음이 아닌 정수 KK가 주어진다. 대문자로만 이루어진 길이 NN의 문자열 TT 중에서 SS와 TT의 최장 공통 부분 수열(LCS)의 길이가 N−KN - K 이상인 것의 개수를 구하라. 개수가 매우 클 수 있으므로 109+710^9 + 7로 나눈 나머지를 출력한다.

문자열 S=s1s2…snS = s_1s_2\ldots s_n이 문자열 T=t1t2…tmT = t_1t_2\ldots t_m의 부분 수열이라는 것은, 모든 1≤x≤n1 \le x \le n에 대해 sx=tixs_x = t_{i_x}를 만족하는 증가하는 인덱스 수열 1≤i1<i2<…<in≤m1 \le i_1 < i_2 < \ldots < i_n \le m이 존재한다는 뜻이다.

입력

첫째 줄에 대문자로만 이루어진 길이 NN의 문자열 SS가 주어진다. 길이는 1≤∣S∣≤50 0001 \le |S| \le 50\,000을 만족한다.

둘째 줄에 정수 KK가 주어진다. 0≤K≤30 \le K \le 3을 만족한다.

출력

조건을 만족하는 문자열 TT의 개수를 109+710^9 + 7로 나눈 나머지를 출력한다.

예제4

  1. 예제 1

    입력
    ACAYKP
    0
    
    예상 출력
    1
    
  2. 예제 2

    입력
    CAPCAK
    1
    
    예상 출력
    896
    
  3. 예제 3

    입력
    WEDONTNEEDNOEDUCATION
    2
    
    예상 출력
    24651976
    
  4. 예제 4

    입력
    WEDONTNEEDNOTHOUGHTCONTROL
    3
    
    예상 출력
    224129308