时间限制:10000ms
单点时限:1000ms1 2 4
题目大意是给定n=p^k, p为素数.求三元组{1,a,b} 1 < a < b构成一个合法群
这种题目不看题解或代码很难做出来.
首先证明必然 a^2 =b(mod n)或(b^2) = a(mod n),如果不,则a^2 = 1(mod n) 并且b^2 = 1(mod n) 并且a*b=1(mod n),群里面就三个数,a,b必然互为逆元.两边同乘以b,可得a=b(mod n),矛盾,所以:a^2 =b(mod n)或(b^2) = a(mod n)
设a^2=b(mod n),由费马小定理可得x^phi(n) = 1(mod n),x为与n互素的整数
如果phi(n) % 3 == 0,则必然存在a=x ^ (phi(n)/3),满足条件.
如果phi(n) % 3 != 0,设phi(n) = 3 * k + y (y=1,2),如果存在a^3 = 1(mod n),则a^phi(n) = a^y = 1(mod n),则a的一次方或二次方里必然有一个mod n = 1,造成找不到所需三元组的情况.
至于phi(n) % 3 == 0, 为什么必然存在a满足条件, 可以用域里面本原元必然存在来证明,找到本原元的phi/3次方必然可以作为a,至于本原元为什么必然存在,在看ntt算法的时候查过一次证明,说什么群论里的基础,不过没有看懂