좋은 접두사
시간 제한1초메모리 제한128 MB
길이 L인 문자열 중 모든 접두사에서 각 문자의 등장 횟수 차이가 2 이하인 문자열의 개수를 K와 함께 세어 1e9+7로 나눈 나머지를 구한다. L은 10^18까지 커진다.
문제
크기가 인 알파벳으로 이루어진 문자열을 생각하자. 예를 들어 이면 알파벳은 일 수 있고, 그런 문자열의 예로 가 있다.
문자열 에 대해 를 에서 기호 가 나타나는 횟수라고 정의한다. 예를 들어 이고 이다.
문자열 의 접두사는 의 뒤쪽 문자들을 개 이상 지워서 얻는 문자열이다. 예를 들어 의 접두사는 빈 문자열, , , 이다.
문자열 가 좋은 접두사를 가진다는 것은, 의 모든 접두사 와 알파벳의 임의의 두 기호 , 에 대해 가 성립함을 뜻한다. 예를 들어 는 좋은 접두사를 가지지만, 는 그렇지 않다. 이고 이기 때문이다.
크기가 인 알파벳 위에서 길이가 이며 좋은 접두사를 가지는 문자열의 개수를 구하여라. 이 수가 클 수 있으므로 로 나눈 나머지를 출력한다.
입력
한 줄에 두 정수 과 가 공백으로 구분되어 주어진다. , 이다.
출력
크기가 인 알파벳 위에서 길이가 이며 좋은 접두사를 가지는 문자열의 개수를 로 나눈 나머지를 한 줄에 출력한다.