아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

HILO

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

요약
엘시가 고를 수 있는 모든 순열에 대해 응답 문자열에 부분 문자열 HILO가 나타나는 횟수의 합을 구한다.
난이도

어려움10점 중 8점

유형
조합론, 수학, 동적 계획법, 구현
정답자
아직 제출이 없습니다

문제

Bessie는 어떤 수 x+0.5x+0.5를 알고 있다. 여기서 xx는 00 이상 NN 이하의 정수이다 (1≤N≤50001\le N\le 5000).

Elsie는 이 수를 맞히려고 한다. Elsie는 11 이상 NN 이하의 정수 ii에 대해 "ii는 높은가 낮은가?"라는 질문을 할 수 있다. Bessie는 ii가 x+0.5x+0.5보다 크면 "HI!"라고, ii가 x+0.5x+0.5보다 작으면 "LO!"라고 답한다.

Elsie는 다음과 같은 전략으로 Bessie의 수를 맞히려고 한다. 추측을 시작하기 전에 11부터 NN까지의 수가 각각 정확히 한 번씩 들어 있는 길이 NN의 수열을 만든다. 즉, 이 수열은 크기 NN의 순열이다. 그런 다음 수열에 나오는 수를 순서대로 추측한다. 다만 Elsie는 불필요한 추측을 건너뛴다. Elsie가 어떤 수 ii를 추측하려는데 이전에 추측한 어떤 j<ij < i에 대해 Bessie가 "HI!"라고 답한 적이 있다면, Elsie는 ii를 추측하지 않고 수열의 다음 수로 넘어간다. 마찬가지로 어떤 수 ii를 추측하려는데 이전에 추측한 어떤 j>ij > i에 대해 Bessie가 "LO!"라고 답한 적이 있다면, Elsie는 ii를 추측하지 않고 수열의 다음 수로 넘어간다. 이 전략을 쓰면 Elsie가 어떤 순열을 만들든 항상 xx를 유일하게 알아낼 수 있음을 증명할 수 있다.

Bessie의 "HI" 또는 "LO" 응답을 모두 이어 붙여 하나의 문자열 SS를 만들면, Bessie가 "HILO"라고 말한 횟수는 SS의 길이 44인 부분 문자열 중 "HILO"와 같은 것의 개수이다.

Bessie는 Elsie가 이 전략을 쓸 것이라는 것을 알고 있고 xx의 값도 이미 정했지만, Elsie가 어떤 순열을 쓸지는 모른다. Elsie가 고를 수 있는 모든 순열에 대해 Bessie가 "HILO"라고 말한 횟수의 합을 109+710^9+7로 나눈 나머지를 구하여라.

입력

입력은 한 줄로 이루어지며, NN과 xx가 주어진다.

출력

HILO의 총 개수를 109+710^9+7로 나눈 나머지를 출력한다.

예제2

  1. 예제 1

    입력
    4 2
    
    예상 출력
    17
    
  2. 예제 2

    입력
    60 10
    
    예상 출력
    508859913