시간 제한 | 메모리 제한 | 제출 | 정답 | 맞힌 사람 | 정답 비율 |
---|---|---|---|---|---|
1 초 | 512 MB | 63 | 28 | 14 | 38.889% |
경기과학고에 재학 중인 $N$명의 학생들은 연말마다 선물을 주고받는 기념비적인 행사를 진행한다. 학교에서 주관하는 중요한 행사인 만큼, 모두가 참여하여 미리 선물을 준비하고 전달한다. 그러나 선물을 받지 못해 슬퍼하는 학생이 있어서는 안 되기 때문에 아래와 같은 세 가지 기본 규칙이 있다.
물론 $A_{i}=i$여서 $i$번 학생이 자신에게 선물을 주는 것도 가능하다.
경기과학고의 행사 관리자인 여러분은 위 규칙이 완벽하다고 생각했기 때문에, 규칙을 따로 바꾸지 않고 몇 년 동안 행사를 그대로 이어 왔다. 그러나 행사의 만족도는 점차 떨어졌고 작년의 만족도 조사에서는 대부분의 학생들이 '이 행사의 의미를 잘 모르겠다'라고 답했다. 이유를 물어 보니, 누구한테서 선물을 받을지가 너무 뻔하다는 것이었다. 따라서 올해는 학생들에게 알리지 않은 채로 아래 규칙을 추가해서 행사를 진행했다.
그러자 $i$번 학생이 처음 가지고 있던 선물은 $B_{i}$번 학생에게로 가게 되었고, 모든 학생은 신선하다며 높은 만족도를 보였다. 여러분 또한 새로운 규칙에 만족했다. 그러다 문득 각 학생이 2번 규칙에서 어떤 수를 골랐는지 알고 싶어졌다. $i$번 학생이 처음 가지고 있던 선물을 최종적으로 받게 된 학생의 번호 $B_{i}$들의 배열 $[B_{1}, B_{2}, ..., B_{N}]$이 주어졌을 때, $i$번 학생이 2번 규칙에서 고른 자연수 $A_{i}$들의 배열 $[A_{1}, A_{2}, ..., A_{N}]$로 가능한 것의 개수를 구해 보자.
첫 번째 줄에 두 양의 정수 $N$, $K$가 공백을 사이에 두고 주어진다. $(1 \le N, K \le 1000)$
두 번째 줄에는 $N$개의 양의 정수가 공백을 사이에 두고 주어진다. $i$번째 수는 $i$번 학생이 처음 가지고 있던 선물을 최종적으로 받게 된 학생의 번호 $B_{i}$를 의미한다. $(1 \le B_{i} \le N)$
첫 번째 줄에 $i$번 학생이 고른 자연수 $A_{i}$들의 배열 $[A_{1}, A_{2}, ..., A_{N}]$으로 가능한 것의 개수를 $10^9+7$로 나눈 나머지를 출력한다.
3 2 3 1 2
1
$[2, 3, 1]$은 유일하게 가능한 $A_{i}$들의 배열이다.
2 2 1 1
0
기본적인 규칙을 만족하면서 $1$번 학생이 두 개의 선물을 받는 경우는 없다.
High School > 경기과학고등학교 > 나는코더다 2022 송년대회 H번