[牛客多校第九场]Quadratic equation(二次剩余)

博客探讨了二次剩余的概念,给出了欧拉准则和勒让德符号在判断二次剩余中的应用。介绍了Cipolla算法解决二次剩余问题,并通过引理证明了随机数解法的有效性。还提供了代码实现,用于在模1e9 + 7下求解二次剩余问题。
摘要由CSDN通过智能技术生成

在这里插入图片描述

题意:

给定两个数字在模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) } X2d(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)} d2p11(modp)
d 是模 p 的二次非剩余当且仅当: d p − 1 2 ≡ − 1 ( m o d p ) \bm{d^\frac{p-1}{2}≡ -1(mod p)} d2p11(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}}} d2p1(pd)modp
其中勒让德符号的定义如下:在这里插入图片描述

欧拉从充分性和必要性两个方面证明了上述结论,给出的证明如下:

首先,由于 p {\displaystyle p} p是一个奇素数,由费马小定理, d p − 1 ≡ 1 ( m o d p ) {\displaystyle d^{p-1}\equiv 1{\pmod {p}}} dp11(modp)。但是 p − 1 {\displaystyle} p-1 p1是一个偶数,
所以有 ( 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}}} (d2p11)(d2p1+1)0(modp)
p {\displaystyle}p p是一个素数,所以 d p − 1 2 − 1 {\displaystyle d^{\frac {p-1}{2}}-1} d2p11 d p − 1 2 + 1 {\displaystyle d^{\frac {p-1}{2}}+1} d2p1+1中必有一个是 p {\displaystyle }p p 的倍数。因此 d p − 1 2 {\displaystyle d^{\frac {p-1}{2}}} d2p1 p

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值