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
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 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
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 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