Chú gấu Tommy và các bạn

View as PDF

Submit solution

Points: 100.00 (partial)
Time limit: 1.0s
Memory limit: 1G
Input: stdin
Output: stdout

Author:
Problem type
Allowed languages
C, C++, GAS64, Pascal, Perl, PHP, Python, Sed, TCL, Text

Chú gấu Tommy là một chú gấu rất dễ thương. Một ngày nọ chú đến trường và được thầy dạy về những con số nguyên tố. Chú và các bạn vô cùng thích thú và lao vào tìm hiểu chúng. Thế nhưng, càng tìm hiểu sâu chú lại càng gặp phải những bài toán khó về số nguyên tố. Hôm nay thầy giao cho cả lớp một bài toán khó và yêu cầu cả lớp ~a_i~ làm nhanh nhất sẽ được thầy cho bánh. Vì thế, để có bánh ăn, Tommy phải giải bài toán nhanh nhất có thể.

Bài toán như sau: Cho dãy n số nguyên dương ~x_1~, ~x_2~, …, ~x_n~ và m truy vấn, mỗi truy vấn được cho bởi 2 số nguyên ~l_i~, ~r_i~. Cho một hàm f(p) trả về số lượng các số xk là bội của p. Câu trả lời cho truy vấn li, ri là tổng ~ \sum_{(pes(l_i,r_i)}f(p) ~, trong đó S(~l_i~,~r_i~) là tập các số nguyên tố trong đoạn [~l_i~,~r_i~]

Bạn hãy giúp chú gấu Tommy giải bài toán này nhé!

Dữ liệu vào:

  • Dòng đầu tiên chứa số nguyên ~n~ ~(1≤ n ≤ 10^5)~
  • Dòng thứ 2 chứa n số nguyên dương ~x_1~, ~x_2~, …, ~x_n~ (2 ≤ ~x_i~ ≤ ~10^7~)
  • Dòng thứ 3 chứa số nguyên m (1 ≤ m ≤ 50000). Mỗi dòng i trong m dòng sau chứa 2 số nguyên ngăn cách bởi 1 dấu cách ~l_i~, ~r_i~ (2 ≤ ~l_i~ ≤ ~r_i~ ≤ 2.~10^9~)

Kết quả ra:

  • Gồm m dòng, mỗi dòng 1 số nguyên là câu trả lời cho một truy vấn.
Ví dụ:
INPUT
6
5 5 7 10 14 15
3
2 10
3 12
4 4
OUTPUT
9
7
0

Giải thích: 3 truy vấn trong test1

  1. Truy vấn 1: ~l~ = 2, ~r~ = 11. Ta cần tính: f(2) + f(3) + f(5) + f(7) + f(11) = 2 + 1 + 4 + 2 + 0 = 9.
  2. Truy vấn 2: ~l~ = 3, ~r~ = 12. Ta cần tính: f(3) + f(5) + f(7) + f(11) = 1 + 4 + 2 + 0 = 7.
  3. Truy vấn 3: ~l~ = 4, ~r~ = 4 ~\rightarrow~ không có số nguyên tố.

Comments

Please read the guidelines before commenting.


There are no comments at the moment.