duong3982oj Contest 03 - Cặp số chia hết

Xem dạng PDF

Gửi bài giải


Điểm: 55,00 (OI)
Giới hạn thời gian: 1.0s
Giới hạn bộ nhớ: 1G
Input: stdin
Output: stdout

Tác giả:
Người đăng:
Dạng bài
Ngôn ngữ cho phép
C, C++, Java, Kotlin, Output Only, Pascal, PyPy, Python, Scratch, TEXT

Bạn ghuy4g là một người rất giỏi tin, tuy nhiên do sai giới hạn mảng, nên sau một kỳ thi bạn đã không được kết quả như bạn mong muốn. Bạn ghuy4g là một người chăm chỉ và liêm khiết nên thay vì khóc lóc, bạn vẫn luôn cố gắng luyện tập mỗi ngày không ngừng nghỉ.

Bạn ghuy4g nhớ rằng có khi đi thi có một bài như sau: Cho dãy ~N~ phần tử, cùng ~Q~ truy vấn, mỗi truy vấn bao gồm hai số nguyên dương ~L, R~, với ý nghĩa: tính số cặp ~i, j~ (~L \le i, j \le R~) mà ~a_i~ chia hết cho ~a_j~. Vì bài này quá dễ nên bạn ghuy4g nghĩ ra một bài khó hơn.

Cho một cây gồm ~n~ đỉnh. Mỗi đỉnh sẽ được gán một trọng số là ~a_i~. Cho ~q~ truy vấn, mỗi truy vấn là hai đỉnh ~u, v~, yêu cầu đếm số cặp ~i, j~, với ~i, j~ nằm trên đường đi đơn từ ~u~ tới ~v~, mà ~a_i~ chia hết cho ~a_j~.

INPUT

Dòng đầu tiên gồm hai số nguyên dương ~n~ và ~q~ (~1 \le n, q \le 40000~), là số đỉnh của cây và số truy vấn.

Dòng thứ hai gồm ~n~ số nguyên dương ~a_1, a_2, ..., a_n~ (~1 \le a_i \le 40000~) là các trọng số của các đỉnh.

~n - 1~ dòng tiếp theo, mỗi dòng gồm hai số nguyên dương ~u~ và ~v~ (~1 \le u \le v \le n~, ~u \neq v~) mô tả một cạnh của cây.

~q~ dòng tiếp theo, mỗi dòng gồm hai số nguyên dương ~u~ và ~v~ (~1 \le u \le v \le n~) mô tả một truy vấn.

OUTPUT

~q~ dòng, mỗi dòng là kết quả của một truy vấn.

SAMPLE INPUT

5 3  
2 6 3 12 4  
1 2  
1 3  
3 4  
3 5  
1 4  
2 5  
3 3  

SAMPLE OUTPUT

5
7
1

SUBTASKS

Subtask Điểm Ràng buộc
1 ~5~ ~n, q \le 100~, ~u_i = i~, ~v_i = i + 1~.
2 ~10~ ~n, q \le 100~.
3 ~15~ ~a_i = a_j~ với mọi ~1 \le i, j \le n~.
4 ~20~ ~n, q \le 2000~.
5 ~20~ ~u_i = i~, ~v_i = i + 1~.
6 ~30~ Không có ràng buộc gì thêm.

Bình luận

Hãy đọc nội quy trước khi bình luận.


Không có bình luận tại thời điểm này.