trang chủ / bài tập / permnofp

Hoán vị không điểm cố định

Đề bài

Mô tả

Cho một hoán vị bị thiếu của n số nguyên phân biệt a1,a2,,an (với 1ain). Một số vị trí trong dãy đã bị thay bằng giá trị 1, biểu thị các phần tử bị mất.

Hoán vị gốc (trước khi bị xoá) không có điểm cố định, tức là không tồn tại chỉ số k nào sao cho ak=k.

Yêu cầu của bạn là đếm số cách khôi phục hoán vị gốc — nghĩa là điền lại các vị trí 1 bằng các giá trị còn thiếu sao cho dãy thu được là một hoán vị của 1,2,,n và không có điểm cố định nào. In kết quả modulo 109+7.

Dữ liệu vào

  • Dòng 1: số nguyên n.
  • Dòng 2: n số nguyên a1,a2,,an (ai=1 hoặc 1ain). Đảm bảo trong dãy đã cho không có điểm cố định, có ít nhất hai giá trị 1, và mỗi giá trị dương xuất hiện không quá một lần. Đảm bảo luôn tồn tại ít nhất một cách khôi phục hợp lệ.

Dữ liệu ra

Một số nguyên duy nhất — số cách khôi phục hoán vị gốc, lấy modulo 109+7.

Ràng buộc

  • 2n2000.

Ví dụ

Input Output Giải thích
5
-1 -1 4 3 -1
2 Hai hoán vị hợp lệ là [2,5,4,3,1][5,1,4,3,2].
6
-1 -1 -1 -1 -1 -1
265 Toàn bộ 6 vị trí đều bị mất, kết quả chính là số mất thứ tự (derangement) D6=265.
2
-1 -1
1 Chỉ có duy nhất hoán vị [2,1] thoả mãn điều kiện không điểm cố định.

Bình luận

Không có bình luận tại thời điểm này.

gnatmake 12.2.0 a68g 3.1.2 nasm 2.16.1 as_x64 2.46 awk 1.3.4 gcc 16.1.0 csc 6.12.0.200 g++ 16.1.0 g++-themis 16.1.0 g++17 16.1.0 g++20 16.1.0 g++23 16.1.0 clang++ 22.1.6 dmd 2.112.0 dart 3.12.1 gforth 0.7.3 gfortran 12.2.0 go 1.26.3 groovyc 5.0.6 javac 25.0.3 node 26.2.0 kotlinc 2.3.21 sbcl 2.2.9 lua 5.4.8 nim 2.2.10 fpc 3.2.2 fpc-themis 3.2.2 perl 5.36.0 php 8.5.6 pike 8.0 pypy3 7.3.23 python3 3.14.5 racket 8.7 ruby 4.0.5 rustc 1.96.0 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 tclsh 8.6 bun 1.3.14 deno 2.8.1 v 0.5.1 zig 0.16.0