Mẫu vật (Olympic 30/4 K11 - 2021)

Xem dưới dạng PDF

Gửi bài giải

Điểm: 20
Giới hạn thời gian: 1.0s
Giới hạn bộ nhớ: 256M

Tác giả:
Kiểu bài tập

Để chuẩn bị cho thí nghiệm, các nhà khoa học đã thu thập được \(N\) mẫu vật. Các nhà khoa học quan tâm tới \(M\) tính chất của các mẫu vật, do đó họ mã hóa mỗi mẫu vật dưới dạng một chuỗi \(M\) bit, với giá trị \(1\) nghĩa là mẫu vật có tính chất này, giá trị \(0\) nghĩa là không có. Trong thí nghiệm đầu tiên, các nhà khoa học cần chọn ra \(2\) mẫu vật có độ tương đồng nhất định. Cụ thể, họ cần chọn ra hai mẫu vật sao cho chúng khác biệt nhau ở đúng \(K\) tính chất, nghĩa là với mỗi tính chất trong \(K\) tính chất này, một mẫu vật sẽ có nó trong khi mẫu vật còn lại thì không. Các nhà khoa học cần đếm số cách chọn ra \(2\) mẫu vật thỏa yêu cầu. Do số lượng mẫu vật rất lớn, các nhà khoa học rất cần sự trợ giúp. Bạn hãy dùng khả năng lập trình của mình để hỗ trợ các nhà khoa học nhé!

Yêu cầu

  • Hãy viết chương trình đọc vào \(N\) chuỗi nhị phân biểu diễn các mẫu vật và đưa ra số cách chọn \(2\) mẫu vật thỏa mãn.

Dữ liệu vào

  • Dòng đầu tiên chứa ba số nguyên \(N, M, K\) \((1 \le N \le 10^5, 1 \le K \le M \le 16)\).
  • \(N\) dòng tiếp theo, mỗi dòng chứa một chuỗi nhị phân \(M\) bit, tượng trưng cho mẫu vật.

Dữ liệu ra

  • Một số nguyên là số cách chọn một cặp mẫu vật khác nhau ở đúng \(K\) tính chất

Ràng buộc

  • 50% số điểm của bài tương ứng với các test có \(M \le 10\).

Input 1

5 4 2
0100
1001
0110
1010
0010

Output 1

3

Giải thích

  • Các cặp thỏa mãn là (0100, 0010), (1001, 1010), (0110, 1010)

Nhận xét

Không có ý kiến tại thời điểm này.