首先大力推式子。
為了方便,先假設 \(2 \leq z\)。
\(x - \frac{y}{z} = n\)
\(\frac{x-y}{z} = (n-1) !\)
很顯然的 \(z | x\) 以及 \(z | y\)
令 \(m= \frac{x}{z}\) 以及 \(k = \frac{y}{z}\)
得到 \(\frac{m \times z - k}{m - k}=n\)
\((m \times z - k) = n \times (m - k)\)
\((m - k) + (z - 1) \times m = n \times (m - k)\)
\((z - 1) \times m = (n - 1) \times (m - k)\)
\((z - 1) | (n - 1) \times (m - k)\)
\((z - 1) | (n - 1) \times (m - k) \times z\)
\((z - 1) | (n - 1) \times (x - y)\)
\((z - 1) | (n - 1) \times (n - 1) ! \times z\)
因為 \(\gcd(z,z - 1)=1\)
所以有
$(z - 1) | (n - 1) \times (n - 1) ! $
然後注意到確定了 \(n,z\) 後,兩個一次方程可以確定一個唯一的一次方程。
所以答案就成了 \((n - 1) \times (n - 1) !\) 的因數個數。
但是我們可以預處理。
首先標記需要輸出答案的 \(n\)。
首先我們可以用線性篩篩出每個數每種質因子的冪次。
具體來說,首先線上性篩時儲存每個數被那哪些數篩掉了,這些數就是它的質因子做除法得出。接著對於每個數對每個質因子做除法得出冪次。
那麼令 \(f_i = (i - 1) \times (i - 1) !\)。
有 \(f_i = \frac{f_{i - 1} \times i^2}{i - 1}\)
所以每次 \(i\) 的質因子冪次加上 \(i\) 中冪次的兩倍,\(i - 1\) 的質因子冪次減去 \(i - 1\) 中冪次的一倍,如果這個 \(i\) 被詢問,那麼用所有質因子冪次加 \(1\) 之積計算因數數量。
但是由於冪次過多,這樣會 TLE 。
所以只維護答案,每次修改就暴力把每個質因子的貢獻修改。
顯然這樣是要求逆元的,這裡需要預處理。
考慮對於 \((n - 1) !\) 某個質因子的冪次 \(\leq \sum_{i = 1}^{k} \frac{n}{2^i} \leq n\)。
所以只要處理 \(1 \to n\) 的逆元即可。
那麼總複雜度就是 \(O(n \log n + T)\) 的。
那如果 \(z = 1\) 呢?
帶入前面的式子,有 \(n = (n - 1)\) ,即 \(n = 1\)。
此時顯然任意 \(x - y = 1\) 都可以滿足條件,故輸出 inf
即可。