Đường đi trên đồ thị ước

Đề bài

Mô tả

Cho số nguyên dương D. Xây dựng đồ thị vô hướng có trọng số như sau:

  • Mỗi đỉnh là một ước của D (kể cả 1 và chính D).
  • Hai đỉnh xy (với x>y) được nối bằng một cạnh khi x chia hết cho yxy là số nguyên tố.
  • Trọng số cạnh nối xy bằng số ước của x mà không phải ước của y.

Ví dụ, cạnh giữa 412 có trọng số 3, vì 12 có các ước [1,2,3,4,6,12] còn 4 có các ước [1,2,4], nên có 3 ước của 12 không phải ước của 4 — đó là [3,6,12].

Độ dài của một đường đi giữa hai đỉnh là tổng trọng số các cạnh trên đường đi đó (đường đi có thể đi qua một đỉnh nhiều lần; đường đi rỗng có độ dài 0). Đường đi ngắn nhất giữa hai đỉnh là đường đi có độ dài nhỏ nhất.

Hai đường đi được coi là khác nhau nếu chúng có số cạnh khác nhau, hoặc tồn tại vị trí i sao cho cạnh thứ i của chúng khác nhau.

q truy vấn, mỗi truy vấn cho hai đỉnh vu — hãy đếm số đường đi ngắn nhất giữa vu. Vì kết quả có thể lớn, in ra theo modulo 998244353.

Dữ liệu vào

  • Dòng đầu chứa số nguyên D (1D1015).
  • Dòng thứ hai chứa số nguyên q (1q3·105) — số truy vấn.
  • q dòng tiếp theo, mỗi dòng chứa hai số nguyên vu (1v,uD). Bảo đảm D chia hết cho cả vu.

Dữ liệu ra

In ra q dòng, dòng thứ i là số đường đi ngắn nhất giữa viui, theo modulo 998244353.

Ràng buộc

  • 1D1015
  • 1q3·105
  • 1v,uDD chia hết cho cả vu

Ví dụ

Input Output Giải thích
12
3
4 4
12 1
3 4
1
3
1
Truy vấn 1: v=u=4, chỉ có đường đi rỗng độ dài 0. Truy vấn 2: có 3 đường đi độ dài 5 từ 12 về 1: 12421, 12621, 12631. Truy vấn 3: chỉ một đường đi độ dài 33124.
1
1
1 1
1 D=1, đồ thị chỉ có một đỉnh; đường đi rỗng là duy nhất.
18
4
1 18
2 9
6 6
18 1
3
1
1
3
18=2·32. Truy vấn 1183!1!·2!=3 thứ tự đi qua các số nguyên tố. Truy vấn 29 qua gcd=1 chỉ có một đường.

Bình luận

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

gnatmake 12.2.0 a68g 3.1.2 nasm 2.16.1 as_x64 2.46 awk 1.3.4 gcc 16.1.0 csc 6.12.0.200 g++ 16.1.0 g++-themis 16.1.0 g++17 16.1.0 g++20 16.1.0 g++23 16.1.0 clang++ 22.1.6 dmd 2.112.0 dart 3.12.1 gforth 0.7.3 gfortran 12.2.0 go 1.26.3 groovyc 5.0.6 javac 25.0.3 node 26.2.0 kotlinc 2.3.21 sbcl 2.2.9 lua 5.4.8 nim 2.2.10 fpc 3.2.2 fpc-themis 3.2.2 perl 5.36.0 php 8.5.6 pike 8.0 pypy3 7.3.23 python3 3.14.5 racket 8.7 ruby 4.0.5 rustc 1.96.0 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 tclsh 8.6 bun 1.3.14 deno 2.8.1 v 0.5.1 zig 0.16.0