x 从 1 取起,挨个算一下,第一个满足要求的 x 就是 ans.
为了避免溢出,需要用乘法取模。
(a⋅b) ≡((amodm)⋅(bmodm)), (modm)
概念: 阶
设 n>1 且 a,n 互质,则有最小的正整数 t, 使得
atmodn=1此时称 t 为 a 对模 n 的阶,记为 t=Ordn(a).
概念: 原根
由欧拉定理可知 Ordn(a)<=ϕ(n).
当 Ordn(a)=ϕ(n) 时,称 a 是模 n 意义下 n 的一个原根.
因为要有解, 所以 n 必须是大于 1 的奇数.
可得 ans=Ordm(2), ans 的上界为 ϕ(m).
因为
2Ordm(2)2ϕ(m)modm=1,(阶的定义)modm=1,(欧拉定理)Ordm(2)≤ϕ(m)所以
Ordm(2)∣ϕ(m)所以 ans 是 ϕ(m) 的因子.
先计算 ϕ(m),然后枚举因子,最小的满足条件的因子就是 ans.
解法1: mod.1.cpp
解法2: mod.2.cpp