Paprika và Hoán Vị
Đề bài
Mô tả
Cho một mảng gồm số nguyên dương . Bạn muốn biến mảng này thành một hoán vị của các số nguyên từ đến .
Để làm điều đó, bạn có thể thực hiện các thao tác. Trong mỗi thao tác, bạn chọn một chỉ số () và một số nguyên , rồi gán (thay bằng phần dư của khi chia cho ). Ở các thao tác khác nhau, và được chọn có thể khác nhau.
Hãy xác định số thao tác ít nhất cần thực hiện để biến mảng thành một hoán vị của các số nguyên từ đến . Nếu không thể, in ra .
Một hoán vị là một mảng gồm số nguyên phân biệt nhận giá trị từ đến theo thứ tự bất kỳ. Ví dụ, là một hoán vị, nhưng thì không (số xuất hiện hai lần) và cũng không (với nhưng có số ).
Dữ liệu vào
- Dòng đầu chứa một số nguyên — số lượng bộ dữ liệu.
- Với mỗi bộ dữ liệu:
- Dòng đầu chứa số nguyên .
- Dòng thứ hai chứa số nguyên .
Dữ liệu ra
Với mỗi bộ dữ liệu, in ra trên một dòng số thao tác ít nhất cần thực hiện để biến mảng thành một hoán vị của đến , hoặc nếu không thể.
Ràng buộc
- Tổng trên tất cả các bộ dữ liệu không vượt quá .
Ví dụ
| Input | Output | Giải thích |
|---|---|---|
| 4 2 1 7 3 1 5 4 4 12345678 87654321 20211218 23571113 9 1 2 3 4 18 19 5 6 7 |
1 -1 4 2 |
Bộ 1: chọn để , được — cần thao tác. Bộ 2: không thể tạo hoán vị của . Bộ 4: giảm và là đủ — cần thao tác. |
| 6 1 1 1 1000000000 5 1 2 3 4 5 5 2 2 2 2 2 4 1000000000 1000000000 1000000000 1000000000 3 2 4 6 |
0 1 0 -1 4 -1 |
Bộ 3 đã là hoán vị nên cần thao tác. Bộ 4: chỉ giữ được một số , ba số còn lại không thể biến thành nên in . |
Bình luận