THHV 2025 - DX19 - 10 - Đường đi ước số

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

Dạng bài
Ngôn ngữ cho phép
C, C++, Java, Output Only, Pascal, PyPy, Python, Scratch, TEXT

Trong trường hợp đề bài hiển thị không chính xác, bạn có thể tải đề bài tại đây: Đề bài

Cho một số nguyên dương ~D~, ta xây dựng đồ thị sau từ nó như sau:

  • Mỗi đỉnh được đánh số là một ước của ~D~;

  • Hai đỉnh ~x~ và ~y~ ~(x > y)~ có một cạnh vô hướng giữa chúng nếu ~x~ chia hết cho ~y~ và ~\frac{x}{y}~ là số nguyên tố;

  • Trọng số của một cạnh là số ước của ~x~ không phải là ước của ~y~ ~(x > y)~.

Ví dụ đồ thị với ~D = 12~ như sau:

Do ~D = 12~ có các ước là ~\{1, 2, 3, 4, 6, 12\}~ nên đồ thị có ~6~ đỉnh được đánh số là ~1, 2, 3, 4, 6, 12~.

Không có cạnh nào giữa đỉnh ~3~ và đỉnh ~2~, vì ~3~ không chia hết cho ~2~. Không có cạnh nào giữa ~12~ và ~3~, vì ~\frac{12}{3} = 4~ không phải là số nguyên tố.

Giữa hai đỉnh ~12~ và ~4~ có một cạnh vô hướng nối chúng, vì ~12~ chia hết cho ~4~ và ~\frac{12}{4} = 3~ là số nguyên tố. Cạnh ~(12, 4)~ có trọng số là ~3~, vì ~12~ có các ước ~\{1, 2, 3, 4, 6, 12\}~ và ~4~ có ước ~\{1, 2, 4\}~. Như vậy có ~3~ ước của ~12~ không phải là ước của ~4~ là ~3, 6, 12~.

Gọi độ dài đường đi giữa đỉnh ~u~ và ~v~ trong đồ thị là tổng trọng số các cạnh trên đường đi. Ví dụ đường đi ~(1, 2), (2, 6), (6, 12), (12, 4), (4, 2), (2, 6)~ có độ dài ~1 + 2 + 2 + 3 + 1 + 2 = 11~. Đường đi rỗng có độ dài ~0~.

Đường đi ngắn nhất giữa hai đỉnh ~u~ và ~v~ là đường đi có độ dài nhỏ nhất trong số các đường đi giữa đỉnh ~u~ và ~v~.

Hai đường đi khác nhau nếu số cạnh của hai đường đi khác nhau hoặc tồn tại chỉ số ~i~ sao cho cạnh thứ ~i~ của hai đường đi khác nhau.

Bạn được cho ~q~ truy vấn có dạng ~u~ ~v~ là yêu cầu tính số đường đi ngắn nhất giữa hai đỉnh ~u~ và ~v~. Câu trả lời cho mỗi truy vấn có thể lớn, vì vậy hãy đưa ra nó theo mô-đun ~998244353~.

Input

  • Dòng đầu tiên chứa số nguyên ~D~ ~(1 \le D \le 10^{15})~ là số mà đồ thị được tạo từ nó.

  • Dòng thứ hai chứa số nguyên ~q~ ~(1 \le q \le 3 \cdot 10^5)~ là số truy vấn.

  • Mỗi dòng trong ~q~ dòng tiếp theo chứa hai số nguyên ~u~ và ~v~ (~1 \le u, v \le D~; ~u, v~ đều là ước của ~D~) mô tả một truy vấn.

Output

Với mỗi truy vấn, in số đường đi ngắn nhất giữa hai đỉnh đã cho theo mô-đun ~998244353~.

Scoring

Subtask Điểm Ràng buộc
1 ~30\%~ ~1 \le D \le 10^3~ và ~1 \le q \le 10^3~
2 ~30\%~ ~1 \le D \le 10^6~ và ~1 \le q \le 10^4~
3 ~40\%~ Không có thêm ràng buộc nào

Sample Input 1

12
3
4 4
12 1
3 4

Sample Output 1

1
3
1

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.