n
≤
1
e
5
,
p
≤
1
e
18
n\le1e5,p\le1e18
n≤1e5,p≤1e18
Solution
跟昨天的WC T2用同样的套路来转化??!可惜没有提前做到这场模拟赛,血亏。
简单的数论都不太熟练,做同余问题连智商都没有了。
首先假设
g
g
g为原根,有
g
x
=
a
g^x=a
gx=a,设
a
o
r
d
(
a
)
=
1
a^{ord(a)}=1
aord(a)=1,那么
g
x
∗
o
r
d
(
a
)
=
1
g^{x*ord(a)}=1
gx∗ord(a)=1,所以
(
p
−
1
)
∣
x
∗
o
r
d
(
a
)
(p-1)|x*ord(a)
(p−1)∣x∗ord(a),把
x
x
x除到左边,可以得到
p
−
1
(
x
,
p
−
1
)
∣
o
r
d
(
a
)
\frac{p-1}{(x,p-1)}|ord(a)
(x,p−1)p−1∣ord(a),所以最小的
o
r
d
(
a
)
ord(a)
ord(a)满足
o
r
d
(
a
)
=
p
−
1
(
x
,
p
−
1
)
ord(a)=\frac{p-1}{(x,p-1)}
ord(a)=(x,p−1)p−1。
接下来我们考虑
g
x
=
a
,
g
y
=
b
g^x=a,g^y=b
gx=a,gy=b,解
a
i
=
b
j
a^i=b^j
ai=bj,那么
x
i
=
y
j
(
%
(
p
−
1
)
)
xi=yj(\%(p-1))
xi=yj(%(p−1)),同理
(
y
,
p
−
1
)
∣
x
i
(y,p-1)|xi
(y,p−1)∣xi,所以
i
=
(
y
,
p
−
1
)
(
x
,
y
,
p
−
1
)
i=\frac{(y,p-1)}{(x,y,p-1)}
i=(x,y,p−1)(y,p−1)最小。
(
x
,
p
−
1
)
=
p
−
1
o
r
d
(
a
)
(x,p-1)=\frac{p-1}{ord(a)}
(x,p−1)=ord(a)p−1,
i
=
p
−
1
o
r
d
(
b
)
(
p
−
1
o
r
d
(
a
)
,
p
−
1
o
r
d
(
b
)
)
=
p
−
1
o
r
d
(
b
)
p
−
1
l
c
m
(
o
r
d
(
a
)
,
o
r
d
(
b
)
)
=
l
c
m
(
o
r
d
(
a
)
,
o
r
d
(
b
)
)
o
r
d
(
b
)
=
o
r
d
(
a
)
(
o
r
d
(
a
)
,
o
r
d
(
b
)
)
i=\frac{\frac{p-1}{ord(b)}}{(\frac{p-1}{ord(a)},\frac{p-1}{ord(b)})}=\frac{\frac{p-1}{ord(b)}}{\frac{p-1}{lcm(ord(a),ord(b))}}=\frac{lcm(ord(a),ord(b))}{ord(b)}=\frac{ord(a)}{(ord(a),ord(b))}
i=(ord(a)p−1,ord(b)p−1)ord(b)p−1=lcm(ord(a),ord(b))p−1ord(b)p−1=ord(b)lcm(ord(a),ord(b))=(ord(a),ord(b))ord(a)。
i
m
i
n
∗
j
m
i
n
=
o
r
d
(
a
)
o
r
d
(
b
)
(
o
r
d
(
a
)
,
o
r
d
(
b
)
)
2
i_{min}*j_{min}=\frac{ord(a)ord(b)}{(ord(a),ord(b))^2}
imin∗jmin=(ord(a),ord(b))2ord(a)ord(b)。
考虑在质因数个数上做一个类似高维后缀和的东西,然后再高维差分(相当于取min)那么枚举
d
=
(
o
r
d
(
a
)
,
o
r
d
(
b
)
)
,
d
∣
p
−
1
d=(ord(a),ord(b)),d|p-1
d=(ord(a),ord(b)),d∣p−1,就可以直接计算答案。
o
r
d
(
a
)
ord(a)
ord(a)可以直接试除法找到一个最小的
a
i
=
1
,
i
∣
p
−
1
a^{i}=1,i|p-1
ai=1,i∣p−1,每一次枚举
p
−
1
p-1
p−1的一个质因子即可,做pollard_rho分解质因数。