Logo
(追記) (追記ここまで)

34986번 - 오량

시간 제한메모리 제한제출정답맞힌 사람정답 비율
1 초 512 MB248615428.421%

문제

대신고에는 $N$명의 학생들이 있고, 각 학생은 자신의 노트를 하나씩 들고 온다. 처음에 $i$번째 학생은 $i$번 노트를 하나 가지고 있다.

대신고의 학생들은 점심시간에 다른 학생에게 오량을 하곤 한다. 오량이란 한 학생이 다른 학생의 모든 노트를 가져가는 것이다. 점심시간 동안 오량은 순서 제약 없이 여러 번 일어날 수 있으며, 오량이 일어나지 않을 수도 있다. 또한 두 개 이상의 오량이 동시에 일어나지 않음이 보장된다.

어느 날 대신이는 점심시간 이후 학생들이 오량을 했을 때 노트를 가지는 경우의 수가 얼마나 될지 궁금해졌다! 당신은 각 학생이 점심시간 이후 최종적으로 가지고 있는 노트의 개수가 주어졌을 때, 이 개수에 맞게 $N$개의 노트를 학생들이 가지게 되는 서로 다른 경우의 수를 구해야 한다. 서로 다른 경우란, 적어도 한 명이 가지고 있는 노트 번호의 집합이 다른 경우를 의미한다.

대신이를 도와 문제를 해결하는 코드를 작성해 주자.

입력

첫번째 줄에 테스트 케이스의 개수 $T$가 주어진다. $(1 \leq T \leq 1,000円)$

각 테스트 케이스의 첫번째 줄에 대신고의 학생 수 $N$이 주어진다. $(2 \leq N \leq 2,000円)$

각 테스트 케이스의 두번째 줄에 각 학생이 점심시간 이후 가지고 있는 노트의 개수 $A_1, A_2, \cdots, A_N$이 공백으로 구분되어 주어진다. $(0 \leq A_i \leq N;$ $\sum_{i=1}^{N}A_i = N)$

출력

각 테스트 케이스에 대해 학생들이 노트를 가지는 경우의 수를 10ドル^9 + 7$로 나눈 나머지를 한 줄에 하나씩 순서대로 출력한다.

제한

예제 입력 1

3
3
1 0 2
2
2 0
12
1 0 1 2 0 0 3 0 0 0 5 0

예제 출력 1

3
1
332640

예제 1의 첫 번째 테스트 케이스의 경우 각 학생이 최종적으로 가질 수 있는 노트 번호의 집합을 나열했을 때 아래와 같이 3ドル$가지의 경우가 가능하다.

$\Bigl[\{1\}, \{\}, \{2, 3\}\Bigr], \Bigl[\{2\}, \{\}, \{1, 3\}\Bigr], \Bigl[\{3\}, \{\}, \{1, 2\}\Bigr]$

예제 1의 두 번째 테스트 케이스의 경우, 1ドル$번 학생이 1ドル$번 노트와 2ドル$번 노트 둘 다 가져가는 경우만 있으므로 1ドル$가지의 경우만이 가능하다.

예제 입력 2

1
20
5 0 0 0 0 5 0 0 0 0 5 0 0 0 0 5 0 0 0 0

예제 출력 2

732744947

노트

출처

School > 대전대신고등학교 > 제1회 코더즈 코딩페어 H번

(追記) (追記ここまで)

출처

대학교 대회

  • 사업자 등록 번호: 541-88-00682
  • 대표자명: 최백준
  • 주소: 서울시 서초구 서초대로74길 29 서초파라곤 412호
  • 전화번호: 02-521-0487 (이메일로 연락 주세요)
  • 이메일: contacts@startlink.io
  • 통신판매신고번호: 제 2017-서울서초-2193 호

AltStyle によって変換されたページ (->オリジナル) /