ABC212G Power Pair
给你一个质数 P P P。求点对 ( x , y ) , x , y ∈ [ 0 , P − 1 ] (x, y), x, y \in [0, P - 1] (x,y),x,y∈[0,P−1] 的点对数量。
其中 x k ≡ y ( m o d P ) x^k \equiv y \pmod P xk≡y(modP)。
可以想到如果能把指数拿下来会就变成一个乘积的形式,那么能将指数取下来的情况也就是底数相同。题目中给定的是一个素数 P P P。这也就是意味着其缩系的大小就是 P − 1 P - 1 P−1。然后质数的原根也就是 P − 1 P - 1 P−1。能表示题目中的任意数。
那么我们可以转换到 g k a ≡ g b ( m o d P ) g^{ka} \equiv g^b \pmod P gka≡gb(modP) 我们就可以把指数取下来。得到 k a ≡ b ( m o d P − 1 ) ka \equiv b \pmod {P - 1} ka≡b(modP−1)。我们把形式转换一下得到 k a − y ( P − 1 ) = b ka - y(P - 1) = b ka−y(P−1)=b。
根据 L u c a s \tt Lucas Lucas 定理这个方程有解的条件就是 b ∣ gcd ( a , P − 1 ) b | \gcd(a, P - 1) b∣gcd(a,P−1)。
这边可以将 k k k 当成 x x x 会更加显然。
那么 b b b 的数量就是 P − 1 gcd ( a , P − 1 ) \frac{P - 1}{\gcd(a, P - 1)} gcd(a,P−1)P−1。
做法 1 1 1:
那么可以得到柿子 ∑ i = 1