Câu 3. Phân chia dãy số - tên file chương trình: BL3.PAS
Cho dãy số nguyên A có N phần tử: A
1, A
2, ..., A
N.
Yêu cầu: tìm một cách phân chia tất cả các phần tử của tập {1, 2, ..., N} thành các tập con thỏa mãn đồng
thời các điều kiện sau:
-Tổng các phần tử của A có chỉ số thuộc cùng một tập con chia hết cho số nguyên dương M cho
trước.
-Hai tập con khác nhau không có phần tử chung.
-Số tập con là nhiều nhất.
Dữ liệu vào: đọc từ file văn bản có tên BL3.INP, có cấu trúc:
-Dòng đầu tiên ghi hai số nguyên dương N, M (N≤100, M≤1000).
-Dòng thứ hai ghi các số thuộc dãy A, theo thứ tự từ A
1 đến A
N.
Dữ liệu ra: ghi vào file văn bản có tên BL3.OUT theo cấu trúc:
-Dòng đầu tiên ghi số nguyên S là số tập con tìm được (S=0 nếu không có cách phân chia).
-Nếu S≠0 thì dòng thứ i trong số S dòng tiếp theo, mỗi dòng ghi thông tin về một tập con tìm được
bao gồm: số nguyên dương đầu tiên là số phần tử của A thuộc tập con, các số tiếp theo là chỉ số các phần
tử thuộc tập con đó.
Hai số liên tiếp trong các file dữ liệu vào và ra ghi cách nhau ít nhất một kí tự trống.
Ví dụ:
BL3.INP BL3.OUT
8 3
5
2 1 3 4 5 6 7 2
2 1 2
1 3
2 4 5
1 6
2 7 8
Bạn đang xem câu 3. - Đề thi HSG tin học THCS năm học 2006-2007 tỉnh Vĩnh Phúc