题意简述
给定$n$,输出所有的整数$x$满足:$0<x<n$且$x^2=1 (mod n)$。
n<=2e9.
思路
以下所有的$=$都表示同余(那个三条横线我不会打…)
$x^2=1 (mod n)$
$x^2-1=0 (mod n)$
$(x-1)(x+1)=0 (mod n)$
枚举一对$a,b$使得$ab=n$。(按对枚举因数)
然后枚举$x$使得:$x-1$是$a$的倍数且$x+1$是$b$的倍数,或者$x-1$是$b$的倍数且$x+1$是$a$的倍数。用$set$去一下重。
时间复杂度是O(n所有小于$\sqrt{n}$的因数的和,然后乘一个logn)。反正是能过的吧。
代码
1 |
|