만드는 중입니다

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

K-pop 문자열

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

요약
길이가 n이고 문자 35종으로 이루어진 문자열 중 길이 n-k 이상의 탠덤 반복이 없는 것의 개수를 998244353으로 나눈 나머지로 구합니다.
난이도

어려움10점 중 8점

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

문제

부분 문자열 s[l..r]s[l..r]은 r−l+1r - l + 1이 짝수이고 s[l...(l+r−1)/2]=s[(l+r+1)/2...r]s[l...(l+r-1)/2] = s[(l+r+1)/2...r]을 만족하면 탠덤 반복(tandem repeat)이다.

Gennady는 접미사 구조를 이용해 문자열 안의 탠덤 반복 개수를 세는 방법을 고안했다. 이제 그는 탠덤 반복을 바탕으로 한 새로운 종류의 문자열을 만들었다. 길이가 nn인 문자열 ss는 길이가 n−kn - k 이상인 탠덤 반복이 없으면 K-pop 문자열이라고 한다. "1", "2", ..., "9", "a", "b", ..., "z" 문자만으로 이루어진 길이 nn의 K-pop 문자열 개수를 998244353으로 나눈 나머지를 구하라.

입력

첫 줄에 두 정수 nn과 kk가 주어진다. nn은 문자열의 길이이고, kk는 매개변수이다 (1≤n≤1001 \le n \le 100, 0≤k≤160 \le k \le 16).

출력

주어진 nn과 kk에 대해, 0이 아닌 숫자와 영어 소문자로만 이루어진 길이 nn의 K-pop 문자열 개수를 998244353으로 나눈 나머지를 정수 하나로 출력한다.

힌트

첫 번째 입력의 답은 35이다. 길이가 1인 문자열은 모두 가능하기 때문이다: "1", "2", ..., "9", "a", "b", ..., "z". 두 번째 입력의 답은 354−35235^4 - 35^2이다.

예제3

  1. 예제 1

    입력
    1 16
    
    예상 출력
    35
    
  2. 예제 2

    입력
    4 0
    
    예상 출력
    1499400
    
  3. 예제 3

    입력
    15 5
    
    예상 출력
    911125634