trang chủ / đề bài / dhbb25_dx33_11_equal

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 N số nguyên a1,a2,…,aN. Với M giá trị bằng nhau: aj1,aj2,…,ajM (1≤j1<j2<…<jM≤N), 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ộ K (bộ K phần tử bằng nhau).

Ví dụ:

  • aj1=aj2, với j1<j2 sẽ tạo thành một bộ nhị.
  • aj1=aj2=aj3, với j1<j2<j3 sẽ tạo thành một bộ tam.
  • aj1=aj2=…=ajK, với j1<j2<…<jK sẽ tạo thành một bộ K.

Hai bộ được coi là khác nhau nếu tập chỉ số {j1,j2,…,jK} của chúng khác nhau.

Yêu cầu: Với số nguyên dương K cho trước, hãy giúp bạn Hiếu xác định số lượng các bộ K.

Dữ liệu vào

  • Dòng 1: Ghi số nguyên dương N (2≤N≤106) và số nguyên dương T là số lượng bộ test (T≤200).
  • Dòng 2: Ghi N số nguyên a1,a2,…,aN (|ai|≤106, 1≤i≤N).
  • T dòng tiếp theo, mỗi dòng ghi một số nguyên dương K (2≤K≤N), cho biết cần tìm số lượng các bộ K 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 T dòng tương ứng với T test, với mỗi test ghi kết quả là số lượng các bộ K. 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 109+7.

Ràng buộc

  • 2≤N≤106, 1≤T≤200.
  • |ai|≤106.
  • 2≤K≤N.
  • 20% số test với K≤N≤20; T≤10; 0≤ai≤106;
  • 40% số test với N≤2·105; T=1; K=2; 0≤ai≤106;
  • 40% 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: (a1=a3=a6); (a4=a5). Khi K=2, số lượng các bộ nhị là 4: (a1,a3); (a1,a6); (a3,a6); (a4,a5). Khi K=4, số lượng các bộ tứ là 0.
8 4
-3 3 -3 7 3 -3 7 -3
2
3
4
8
8
4
1
0
Ví dụ bổ sung. Giá trị −3 xuất hiện 4 lần (vị trí 1,3,6,8), giá trị 3 và 7 mỗi giá trị xuất hiện 2 lần; −3 và 3 là hai giá trị khác nhau. Khi K=2: 6+1+1=8 bộ nhị. Khi K=3: 4 bộ tam, đều gồm các phần tử −3. Khi K=4: chỉ có bộ (a1,a3,a6,a8). Khi K=8: không có bộ nào.

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.47 awk 1.3.4 gcc 16.2.0 dotnet 10.0.402 g++ 16.2.0 g++-themis 16.2.0 g++17 16.2.0 g++20 16.2.0 g++23 16.2.0 clang++ 22.1.8 dmd 2.113.0 dart 3.13.6 gforth 0.7.3 gfortran 15.3.0 go 1.27.3 groovyc 5.1.3 javac 26.0.2.1 node 26.12.1 julia 1.13.2 kotlinc 2.4.21 lean 4.35.0 sbcl 2.2.9 lua 5.5.1 nim 2.2.12 fpc 3.2.2 fpc-themis 3.2.2 perl 5.42.3 php 8.5.12 pike 8.0 swipl 9.0.4 pypy3 7.3.23 python3 3.15.1 racket 8.7 ruby 4.0.8 rustc 1.99.1 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 swiftc 6.4.1 tclsh 8.6 bun 1.4.4 deno 2.9.8 v 0.5.2 zig 0.17.0