Bài 3: Truy vấn chia hết (TS10 Vĩnh Phúc thi thử - 2026)

Xem PDF



Tác giả:
Dạng bài
Ngôn ngữ cho phép
Assembly, Awk, C, C#, C++, Clang, Cobol, D, Groovy, Haskell, JS, Java, Kotlin, Lua, Node JS, OCaml, ObjectiveC, Output, PHP, Pascal, Perl, Prolog, Pypy, Pypy 3, Python, Ruby, Rust, Scala, Scratch, Swift
Điểm: 1800 (p) Thời gian: 1.0s Bộ nhớ: 256M Input: bàn phím Output: màn hình

Cho dãy gồm \(N\) số nguyên dương đôi một phân biệt \(A = (a_1, a_2, \dots, a_N)\).

Hãy trả lời \(Q\) truy vấn, mỗi truy vấn gồm ba số nguyên dương \(l, r, d\), yêu cầu đếm số phần tử \(a_i\) trong \(A\) thoả mãn:

  • \(l \leq i \leq r\)
  • \(a_i\) hoặc là ước số của \(d\), hoặc là bội số của \(d\).

Input

  • Dòng 1: Hai số nguyên \(N, Q\) — số phần tử của dãy \(A\) và số truy vấn (\(1 \leq N, Q \leq 10^5\)).
  • Dòng 2: \(N\) số nguyên dương đôi một phân biệt \(a_1, a_2, \dots, a_N\) (\(1 \leq a_i \leq 2 \cdot 10^5; a_i \neq a_j, \forall i \neq j\)).
  • \(Q\) dòng tiếp theo, mỗi dòng chứa ba số nguyên \(l, r, d\) (\(1 \leq l \leq r \leq N, 1 \leq d \leq 2 \cdot 10^5\)).

Output

  • In ra một dòng gồm \(Q\) số nguyên, số thứ \(i\) là kết quả của truy vấn thứ \(i\).

Example

Test 1

Input
8 5
12 10 3 18 6 72 28 42
1 8 6
3 7 7
2 6 9
1 5 5
4 8 4
Output
6 1 3 1 2
Note
  • Truy vấn 1: \(Q([12, 10, 3, 18, 6, 72, 28, 42], 6) \implies \{12, 3, 18, 6, 72, 42\}\)
  • Truy vấn 2: \(Q([3, 18, 6, 72, 28], 7) \implies \{28\}\)
  • Truy vấn 3: \(Q([10, 3, 18, 6, 72], 9) \implies \{3, 18, 72\}\)
  • Truy vấn 4: \(Q([12, 10, 3, 18, 6], 5) \implies \{10\}\)
  • Truy vấn 5: \(Q([18, 6, 72, 28, 42], 4) \implies \{72, 28\}\)

Scoring

  • Subtask \(1\) (\(40\%\) số điểm): \(N, Q \leq 1000\).
  • Subtask \(2\) (\(60\%\) số điểm): Không có ràng buộc bổ sung.

Bình luận

Mới nhất
Tải bình luận...

Không có bình luận nào.