Mảng chia hết cho M
Đề bài
Mô tả
Cho một mảng gồm số nguyên dương và một số nguyên dương .
Bạn cần chia toàn bộ các phần tử của mảng thành một số mảng con. Trong mỗi mảng con, bạn được tự do sắp xếp thứ tự các phần tử theo ý muốn.
Một mảng được gọi là chia hết cho nếu với mọi cặp phần tử đứng cạnh nhau (hai phần tử ở vị trí và được xem là cạnh nhau), tổng của chúng chia hết cho . Một mảng chỉ gồm đúng một phần tử luôn được xem là chia hết cho .
Hãy tìm số lượng mảng con ít nhất mà ta có thể chia mảng thành, sao cho mỗi mảng con đều chia hết cho .
Dữ liệu vào
- Dòng đầu chứa một số nguyên là số lượng bộ dữ liệu.
- Với mỗi bộ dữ liệu:
- Dòng đầu chứa hai số nguyên và .
- Dòng thứ hai chứa số nguyên .
Dữ liệu ra
Với mỗi bộ dữ liệu, in ra một số nguyên là số lượng mảng con chia hết cho ít nhất.
Ràng buộc
- Tổng của tất cả và tổng của tất cả trên mọi bộ dữ liệu đều không vượt quá .
Ví dụ
| Input | Output | Giải thích |
|---|---|---|
| 4 6 4 2 2 8 6 9 4 10 8 1 1 1 5 2 4 4 8 6 7 1 1 666 2 2 2 4 |
3 6 1 1 |
Bộ 1: chia thành (vì chia hết cho ), (vì và chia hết cho ) và . Cần mảng con. Bộ 3: chỉ một phần tử nên cần mảng. Bộ 4: chia hết cho nên cả hai vào chung một mảng. |
| 3 3 6 3 3 3 3 6 1 1 1 5 10 10 20 5 15 25 |
1 3 2 |
Bộ 1: mọi phần tử có số dư , tổng hai phần tử bất kỳ chia hết cho nên gộp chung được mảng. Bộ 2: ba phần tử số dư , không phần tử nào kề nhau được (vì không chia hết cho ) nên cần mảng. Bộ 3: hai phần tử số dư gộp thành mảng, ba phần tử số dư gộp thành mảng, tổng cộng . |
Bình luận