2024 BUPT Programming Contest F

YipChip發表於2024-10-22

簡要題意

給定一個 \(n \times n\) 矩陣,矩陣中的每一個元素的計算方式如下:

  • 隨機從 \([0, n - 1]\) 中選出兩個整數(可以重複)\(a, b\),矩陣的元素為 \(a \times b \bmod n\)

求矩陣中元素 \(m\) 出現次數的期望。

  • \(0 \le m < n \le 10^{12}\)

題解

對於矩陣中的任意一個元素是獨立的,因此我們考慮對於一組 \(a \times b \equiv m \pmod n\) 的期望。

原式可推出 \(ab + kn = m\),由裴蜀定理可知,當 \(\gcd(a, n) \mid m\) 時,方程有線性解。

接下來考慮對於一個合法的 \(a\) 有多少組解是可以被接受的,由於 \(at = sn\),我們想要找到儘可能小的 \((s, t)\) 的一組解,那麼 \(t = \frac{n}{\gcd(a, n)}\),若 \(ab \equiv m \pmod n\),那麼 \(a\left(b + \frac{n}{\gcd(a, n)}\right) \equiv m \pmod n\)

考慮將 \(m\) 分解,必存在最小的二元組 \((a, b)\) 使得同餘式成立,因此所有的合法解為:

\[\sum_{d \mid m}\frac{n - \frac{m}{d}}{\gcd(d, n)} \]

相關文章