새해와 순열
시간 제한1초메모리 제한1024 MB
길이 n인 모든 순열에서 최댓값과 최솟값의 차가 구간 길이에서 1을 뺀 값과 같은 구간의 총 개수를 소수 m으로 나눈 나머지를 구한다.
문제
순열이란 부터 까지의 서로 다른 개의 정수를 임의의 순서로 나열한 배열이다. 예를 들어 는 순열이지만, 는 순열이 아니고 (가 두 번 등장한다), 도 순열이 아니다 (인데 가 들어 있다).
수열 가 수열 의 부분 구간이라는 것은, 의 앞에서 몇 개 (0개 또는 전부일 수도 있다)의 원소를 지우고 뒤에서 몇 개 (0개 또는 전부일 수도 있다)의 원소를 지워 를 얻을 수 있다는 뜻이다. 부분 구간을 로 나타내며, 여기서 은 인 두 정수다. 이는 앞에서 개의 원소를, 뒤에서 개의 원소를 지운 부분 구간을 가리킨다.
순열 에 대해, 틀린 구간이란 을 만족하는 부분 구간 을 말한다. 예를 들어 순열 의 틀린 구간으로는 등이 있다. 특히 는 이상 이하의 모든 에 대해 항상 틀린 구간이다.
순열 의 행복도는 이고 이 틀린 구간인 순서쌍 의 개수로 정의한다. 예를 들어 순열 의 행복도는 이며, 를 제외한 모든 구간이 틀린 구간이다.
정수 과 이 주어질 때, 종원이는 길이 인 모든 순열의 행복도의 합을 소수 으로 나눈 나머지를 구하려고 한다. 길이 인 순열은 (의 계승)개 있다.
입력
한 줄에 두 정수 과 이 주어진다. (, , 은 소수)
출력
길이 인 모든 순열의 행복도의 합을 소수 으로 나눈 나머지 ()을 출력한다.
힌트
예제 입력 에 대해 길이 인 모든 순열을 살펴보자:
- : 모든 부분 구간이 틀린 구간이다. 행복도는 .
- : 를 제외한 모든 부분 구간이 틀린 구간이다. 행복도는 .
- : 을 제외한 모든 부분 구간이 틀린 구간이다. 행복도는 .
- : 을 제외한 모든 부분 구간이 틀린 구간이다. 행복도는 .
- : 를 제외한 모든 부분 구간이 틀린 구간이다. 행복도는 .
- : 모든 부분 구간이 틀린 구간이다. 행복도는 .
따라서 행복도의 합은 이다.