Mảng chia hết cho M

Đề bài

Mô tả

Cho một mảng a1,a2,,an gồm n số nguyên dương và một số nguyên dương m.

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 m nếu với mọi cặp phần tử đứng cạnh nhau (hai phần tử ở vị trí ii+1 được xem là cạnh nhau), tổng của chúng chia hết cho m. Một mảng chỉ gồm đúng một phần tử luôn được xem là chia hết cho m.

Hãy tìm số lượng mảng con ít nhất mà ta có thể chia mảng a thành, sao cho mỗi mảng con đều chia hết cho m.

Dữ liệu vào

  • Dòng đầu chứa một số nguyên t 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 nm.
    • Dòng thứ hai chứa n số nguyên a1,a2,,an.

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 m ít nhất.

Ràng buộc

  • 1t1000
  • 1n105
  • 1m105
  • 1ai109
  • Tổng của tất cả n và tổng của tất cả m trên mọi bộ dữ liệu đều không vượt quá 105.

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 [4,8] (vì 4+8 chia hết cho 4), [2,6,2] (vì 2+66+2 chia hết cho 4) và [9]. Cần 3 mảng con.
Bộ 3: chỉ một phần tử nên cần 1 mảng.
Bộ 4: 2+4=6 chia hết cho 2 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ư 3, tổng hai phần tử bất kỳ chia hết cho 6 nên gộp chung được 1 mảng.
Bộ 2: ba phần tử số dư 1, không phần tử nào kề nhau được (vì 1+1 không chia hết cho 6) nên cần 3 mảng.
Bộ 3: hai phần tử số dư 0 gộp thành 1 mảng, ba phần tử số dư 5 gộp thành 1 mảng, tổng cộng 2.

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