접미사 배열의 개수
시간 제한1초메모리 제한512 MB
길이가 N이고 서로 다른 문자를 최대 M개 쓰는 문자열들이 만들 수 있는 서로 다른 접미사 배열 개수를 1e9+7로 나눈 나머지를 구합니다.
문제
길이가 인 문자열 의 접미사 배열을 이렇게 정의한다. 의 번째 접미사는 의 번째 문자부터 마지막 문자까지를 잘라낸 문자열이다. 접미사 개를 사전순으로 정렬한 뒤 각 접미사의 시작 위치를 차례대로 적으면 부터 까지의 순열이 하나 나온다. 이 순열이 의 접미사 배열이다. 길이가 서로 다른 두 접미사도 사전순 대소가 항상 정해지므로 접미사 배열은 문자열마다 하나로 정해진다.
문자는 순서가 정해진 알파벳에서 고른다. 알파벳은 종류를 쓰기에 충분히 크다.
길이가 이고 사용한 문자의 종류가 가지 이하인 문자열을 모두 모아 각각의 접미사 배열을 구했을 때, 서로 다른 배열이 몇 개인지 구하라. 두 배열 와 가 서로 다르다는 것은 인 정수 가 적어도 하나 있다는 뜻이다.
입력
첫째 줄에 두 자연수 , 이 공백으로 구분되어 주어진다. ()
출력
조건을 만족하는 문자열의 접미사 배열 가운데 서로 다른 것의 개수를 로 나눈 나머지를 한 줄에 출력한다.
힌트
, 이면 서로 다른 접미사 배열이 12개다. 각 배열과 그 배열을 만드는 문자열의 예를 함께 적으면 다음과 같다.
- :
aaab - :
aabb - :
abbb - :
baab - :
babb - :
abab - :
bbab - :
aaba - :
abba - :
baba - :
abaa - :
aaaa,baaa,bbaa,bbba,bbbb
맨 아래 줄처럼 서로 다른 문자열이 같은 접미사 배열을 만들기도 한다. 이런 배열도 한 번만 센다.