페이지가 로드되지 않나요? 여기를 눌러보면 고쳐질 수도 있어요.
Placeholder

#3656

배열의 개수 1 2s 512MB

문제

길이 N짜리 배열 A가 주어진다. A[i] = 0인 곳에 적절한 정수를 채워 다음 조건을 만족하도록 수열을 만드는 경우의 수를 구하는 프로그램을 작성하여라.

  1. 1 ≤ A[i] ≤ N
  2. A[i] ≠ i (1 ≤ i ≤ N)
  3. A[i] ≠ A[j] (1 ≤ i ≠ j ≤ N)​

입력

첫째 줄에 N이 주어진다. (1 ≤ N ≤ 1,000,000)

둘째 줄에 A[i]가 주어진다. (0 ≤ A[i] ≤ N)​ 


출력

만들 수 있는 배열 A의 개수를 1,000,000,007로 나눈 나머지를 출력한다.

 


예제 #1

4

0 0 0 0
9

예제 #2

5

3 0 0 1 0
3

예제 #3

5

0 0 2 2 0
0
로그인해야 코드를 작성할 수 있어요.