题意:
给定两个数字在模1e9 + 7意义下x + y的和以及x和y的乘积,求x和y
题目分析
由于x和y的取值范围,我们可以得到x + y的范围为 0 <= x + y < 2 * p,那么对于第一个式子我们可以得到: x + y = b 或者 x + y = p + b的两种情况.
对于第一种情况,将第一个式子代入第二个式子可得
y * (b - y) = k * p + c
移项得,y ^ 2 - b * y + k * p + c = 0
如果y要有整数解,当且仅当 b ^ b - 4 * (k * p + c) 为完全平方数,从而得到如下方程
a ^ 2 = b * b - 4 * (k * p + c)
对两边同时模p可得
a ^ 2 ≡b * b - 4 * c (mod p)
从而转化为一个二次剩余的问题
二次剩余:
当时比赛的时候用下面的博客魔改了一下过了,博客里边有简单的证明
https://blog.csdn.net/acdreamers/article/details/10182281
在比赛之后又参考了下边的博客,才真正理解了这个神奇的东西
https://blog.csdn.net/a_crazy_czy/article/details/51959546
Part one 二次剩余的基本概念
在数论中,特别在同余理论里,一个整数 d \bm{d} d对另一个整数 p \bm{p} p 的二次剩余(英语:Quadratic residue)指X的平方 X 2 \bm{X^2} X2 除以 p \bm{p} p得到的余数。
当存在某个 X \bm{X} X, X 2 ≡ d ( m o d p ) \bm{X^2≡d(mod p) } X2≡d(modp) 式子成立时,称 “ d \bm{d} d 是模 p \bm{p} p 的二次剩余 ”
当对任意 X \bm{X} X,上式都不成立时,称 “ d \bm{d} d 是模 p \bm{p} p 的二次非剩余 ”
关于二次剩余的判定,可以用欧拉准则来判断,具体方法如下:
若 p 是奇质数且 p 不能整除 d ,则:
d 是模 p 的二次剩余当且仅当: d p − 1 2 ≡ 1 ( m o d p ) \bm{d^\frac{p-1}{2}≡ 1(mod p)} d2p−1≡1(modp)
d 是模 p 的二次非剩余当且仅当: d p − 1 2 ≡ − 1 ( m o d p ) \bm{d^\frac{p-1}{2}≡ -1(mod p)} d2p−1≡−1(modp)
以勒让德符号表示,即为: d p − 1 2 ≡ ( d p ) m o d p {\displaystyle d^{\frac {p-1}{2}}\equiv\left({\frac {d}{p}}\right){mod {p}}} d2p−1≡(pd)modp
其中勒让德符号的定义如下:
欧拉从充分性和必要性两个方面证明了上述结论,给出的证明如下:
首先,由于 p {\displaystyle p} p是一个奇素数,由费马小定理, d p − 1 ≡ 1 ( m o d p ) {\displaystyle d^{p-1}\equiv 1{\pmod {p}}} dp−1≡1(modp)。但是 p − 1 {\displaystyle} p-1 p−1是一个偶数,
所以有 ( d p − 1 2 − 1 ) ⋅ ( d p − 1 2 + 1 ) ≡ 0 ( m o d p ) {\displaystyle (d^{\frac {p-1}{2}}-1)\cdot (d^{\frac {p-1}{2}}+1)\equiv 0{\pmod {p}}} (d2p−1−1)⋅(d2p−1+1)≡0(modp)
p {\displaystyle}p p是一个素数,所以 d p − 1 2 − 1 {\displaystyle d^{\frac {p-1}{2}}-1} d2p−1−1和 d p − 1 2 + 1 {\displaystyle d^{\frac {p-1}{2}}+1} d2p−1+1中必有一个是 p {\displaystyle }p p 的倍数。因此 d p − 1 2 {\displaystyle d^{\frac {p-1}{2}}} d2p−1模 p