Bộ số bằng nhau
Đề bài
Mô tả
Trong lập trình, lệnh Random cho phép người lập trình tạo ra một giá trị ngẫu nhiên. Bạn Hiếu sử dụng lệnh này nhiều lần để tạo ra dãy số nguyên . Với giá trị bằng nhau: (), Hiếu nhận thấy chúng có thể tạo thành các bộ nhị (bộ hai phần tử bằng nhau), bộ tam (bộ ba phần tử bằng nhau), bộ tứ (bộ bốn phần tử bằng nhau), …, bộ (bộ phần tử bằng nhau).
Ví dụ:
- , với sẽ tạo thành một bộ nhị.
- , với sẽ tạo thành một bộ tam.
- , với sẽ tạo thành một bộ .
Hai bộ được coi là khác nhau nếu tập chỉ số của chúng khác nhau.
Yêu cầu: Với số nguyên dương cho trước, hãy giúp bạn Hiếu xác định số lượng các bộ .
Dữ liệu vào
- Dòng 1: Ghi số nguyên dương () và số nguyên dương là số lượng bộ test ().
- Dòng 2: Ghi số nguyên (, ).
- dòng tiếp theo, mỗi dòng ghi một số nguyên dương (), cho biết cần tìm số lượng các bộ có thể tạo thành.
Các số trên một dòng cách nhau bởi một dấu cách.
Dữ liệu ra
Ghi ra dòng tương ứng với test, với mỗi test ghi kết quả là số lượng các bộ . Vì số lượng các bộ thoả mãn có thể rất lớn nên chỉ cần in ra phần dư cho .
Ràng buộc
- , .
- .
- .
- số test với ; ; ;
- số test với ; ; ; ;
- số test với ràng buộc gốc.
Ví dụ
| Input | Output | Giải thích |
|---|---|---|
| 6 2 4 5 4 6 6 4 2 4 |
4 0 |
Các giá trị bằng nhau: ; . Khi , số lượng các bộ nhị là : ; ; ; . Khi , số lượng các bộ tứ là . |
| 8 4 -3 3 -3 7 3 -3 7 -3 2 3 4 8 |
8 4 1 0 |
Ví dụ bổ sung. Giá trị xuất hiện lần (vị trí ), giá trị và mỗi giá trị xuất hiện lần; và là hai giá trị khác nhau. Khi : bộ nhị. Khi : bộ tam, đều gồm các phần tử . Khi : chỉ có bộ . Khi : không có bộ nào. |
Bình luận