CF1334E Divisor Paths

题目描述

给定一个正整数 $D$,我们基于它构建如下图: - 每个顶点是 $D$ 的一个约数(不要求是质数,$1$ 和 $D$ 本身也包括在内); - 对于两个顶点 $x$ 和 $y$($x > y$),如果 $x$ 能被 $y$ 整除且 $\frac{x}{y}$ 是质数,则在它们之间连一条无向边; - 边的权值为 $x$ 的约数中不是 $y$ 的约数的个数。 例如,$D=12$ 时的图如下: ![](https://cdn.luogu.com.cn/upload/vjudge_pic/CF1334E/38b890224bb6f89b8928dfc0b449557b94664dd4.png) 边 $(4,12)$ 的权值为 $3$,因为 $12$ 的约数为 $[1,2,3,4,6,12]$,$4$ 的约数为 $[1,2,4]$,因此 $12$ 有 $3$ 个约数不是 $4$ 的约数——$[3,6,12]$。 $3$ 和 $2$ 之间没有边,因为 $3$ 不能被 $2$ 整除。$12$ 和 $3$ 之间没有边,因为 $\frac{12}{3}=4$ 不是质数。 在该图中,某两个顶点 $v$ 和 $u$ 之间一条路径的长度为路径上所有边的权值之和。例如,路径 $[(1,2),(2,6),(6,12),(12,4),(4,2),(2,6)]$ 的长度为 $1+2+2+3+1+2=11$。空路径的长度为 $0$。 因此,两个顶点 $v$ 和 $u$ 之间的最短路径,就是所有可能路径中长度最小的那一条。 如果两条路径 $a$ 和 $b$ 的边数不同,或者存在某个位置 $i$ 使得 $a_i$ 和 $b_i$ 是不同的边,则认为这两条路径不同。 现在给定 $q$ 个询问,每个询问如下: - $v\ u$ —— 计算从顶点 $v$ 到顶点 $u$ 的最短路径的数量。 每个询问的答案可能很大,请对 $998244353$ 取模后输出。

输入格式

第一行包含一个整数 $D$($1 \le D \le 10^{15}$)——用于构建图的数。 第二行包含一个整数 $q$($1 \le q \le 3 \times 10^5$)——询问的数量。 接下来 $q$ 行,每行包含两个整数 $v$ 和 $u$($1 \le v, u \le D$)。保证 $D$ 能被 $v$ 和 $u$ 整除(即 $v$ 和 $u$ 都是 $D$ 的约数)。

输出格式

输出 $q$ 个整数,每个询问输出一行,表示从给定的两个顶点之间的最短路径数量,对 $998244353$ 取模。

说明/提示

在第一个样例中: - 第一个询问只有空路径,长度为 $0$; - 第二个询问有路径 $[(12,4),(4,2),(2,1)]$(长度 $3+1+1=5$)、$[(12,6),(6,2),(2,1)]$(长度 $2+2+1=5$)和 $[(12,6),(6,3),(3,1)]$(长度 $2+2+1=5$); - 第三个询问只有路径 $[(3,1),(1,2),(2,4)]$(长度 $1+1+1=3$)。 由 ChatGPT 4.1 翻译