HILO
시간 제한2초메모리 제한1024 MB
엘시가 고를 수 있는 모든 순열에 대해 응답 문자열에 부분 문자열 HILO가 나타나는 횟수의 합을 구한다.
문제
Bessie는 어떤 수 를 알고 있다. 여기서 는 이상 이하의 정수이다 ().
Elsie는 이 수를 맞히려고 한다. Elsie는 이상 이하의 정수 에 대해 "는 높은가 낮은가?"라는 질문을 할 수 있다. Bessie는 가 보다 크면 "HI!"라고, 가 보다 작으면 "LO!"라고 답한다.
Elsie는 다음과 같은 전략으로 Bessie의 수를 맞히려고 한다. 추측을 시작하기 전에 부터 까지의 수가 각각 정확히 한 번씩 들어 있는 길이 의 수열을 만든다. 즉, 이 수열은 크기 의 순열이다. 그런 다음 수열에 나오는 수를 순서대로 추측한다. 다만 Elsie는 불필요한 추측을 건너뛴다. Elsie가 어떤 수 를 추측하려는데 이전에 추측한 어떤 에 대해 Bessie가 "HI!"라고 답한 적이 있다면, Elsie는 를 추측하지 않고 수열의 다음 수로 넘어간다. 마찬가지로 어떤 수 를 추측하려는데 이전에 추측한 어떤 에 대해 Bessie가 "LO!"라고 답한 적이 있다면, Elsie는 를 추측하지 않고 수열의 다음 수로 넘어간다. 이 전략을 쓰면 Elsie가 어떤 순열을 만들든 항상 를 유일하게 알아낼 수 있음을 증명할 수 있다.
Bessie의 "HI" 또는 "LO" 응답을 모두 이어 붙여 하나의 문자열 를 만들면, Bessie가 "HILO"라고 말한 횟수는 의 길이 인 부분 문자열 중 "HILO"와 같은 것의 개수이다.
Bessie는 Elsie가 이 전략을 쓸 것이라는 것을 알고 있고 의 값도 이미 정했지만, Elsie가 어떤 순열을 쓸지는 모른다. Elsie가 고를 수 있는 모든 순열에 대해 Bessie가 "HILO"라고 말한 횟수의 합을 로 나눈 나머지를 구하여라.
입력
입력은 한 줄로 이루어지며, 과 가 주어진다.
출력
HILO의 총 개수를 로 나눈 나머지를 출력한다.