(转载)二次剩余(知识总结+板子整理)

二次剩余Cipolla算法学习小记 Preface 今天zz大神给我们讲数论和代数,然后后面讲了几个超级神的算法。CipollaCipolla算是其中一个吧。貌似国内直接查名字还没有什么资料,查二次剩余的算法有ACdreamer简略的介绍。今天听讲时算是听懂了大半,回来又搞鼓了整个晚上才算完全弄明白。这个算法真的是从头到尾都是脑洞,太神了! 详细的解释见维基百科。 Paper 首先我们要弄清楚什么叫二次剩余,其实就是 阅读详情

思路来源

https://blog.youkuaiyun.com/kele52he/article/details/78897187(二次剩余)

https://blog.youkuaiyun.com/stevensonson/article/details/85845334(二次剩余)

https://blog.youkuaiyun.com/skywalkert/article/details/52591343?locationNum=3&fps=1(Cipolla定理、二次剩余、三次剩余)

https://www.cnblogs.com/nbwzyzngyl/p/8469035.html(扩域、二次域)

https://blog.youkuaiyun.com/qq_24451605/article/details/45093911?locationNum=1(欧拉判别准则)

 

知识点整理

二次剩余,现在的研究范围,只在p为奇素数下进行

若存在1\leq x< p使得x^{2}\equiv n(mod\ p),则称n是模p的二次剩余

二次剩余的充要条件,勒让德记号余数为1

充分性:

d,x属于[1,p-1],显然与p互质;

欧拉判别准则,这里其实就是费马小定理

必要性:

用原根可以证明d,可以表示为d=a^{2i}的形式,从而得证

二次非剩余的充要条件,勒让德记号余数为-1

不是二次剩余,则若ij=n(mod p),i和j一定不相同,

根据扩展欧几里得,

把ij%p=n,转化成 ij+pq=n,

由于gcd(i,p)=1,所以 ij+pq=1肯定有解,

因为n是1的倍数,所以ij+pq=n肯定有解

所以,j=j0+k*p,且j0≠0,故必有且只有一个解j落在[1,p-1]内

n整除p时,勒让德记号余数为0

由勒让德记号定义,显然成立

二次剩余的解n,恰有\frac{p-1}{2}个

由于u和v的取值[1,p-1],所以u-v(不妨u>v)的差必在[1,p-2]之间,与素数p互质,

且u+v取值[2,2p-2],故u+v==p,说明每对和为p的值有唯一的平方值

不同对(u,v)(w,x)之间若平方相同,设v和w(w≠u)相同,

则必有u+v==p,v+w==p,w+x==p,这推得u==w,与w≠u矛盾,故平方值不同

故有\frac{p-1}{2}个解,每个二次剩余恰有两个解,且这两个解和为p

 

 

Cipolla定理(求n给定时的一组二次剩余)

由于满足\binom{w}{p}=-1的解有\frac{p-1}{2}个,选中的概率是\frac{1}{2},所以期望为2步

由于p是质数,所以在C_{p}^{i}的展开式中,p和分母任意项互质,从而p不可被约掉,使C_{p}^{i}为p的倍数

x是解,那么p-x显然是解,代入(p-x)^2=p^2-2*p*x+x^2\equiv x^2(mod\ p)即得

所以,求了一个,即相当于求了另一个

 

扩域(类似复数域)

实际求(a+\sqrt{a^{2}-n})^{\frac{p+1}{2}}时,由于w=\sqrt{a^{2}-n}为非二次剩余,mod p意义下勒让德符号为-1

故可将与复数域联系,视为复数域中的i,进行复数域(a+i)的快速幂的运算,

实部单算,虚部单算,称其为扩域,只是这里w^{2}=a^{2}-n,而非-1

由拉格朗日定理知,最终(a+\sqrt{a^{2}-n})^{\frac{p+1}{2}}的虚部为0(不懂)

板子

#include<bits/stdc++.h>
using namespace std; 
typedef long long ll;

ll p,w;

struct field{//扩域 x实部 y虚部
	ll x,y;
	field(ll a=0,ll b=0){
		x=a;y=b;
	}
};

field operator*(field a,field b){return field(1ll*a.x*b.x%p+1ll*a.y*b.y%p*1ll*w%p,1ll*a.x*b.y%p+1ll*a.y*b.x%p);}

ll ran(){//随机数种子
	static ll seed=23333;
	return seed=((((((ll)seed^20030927)%p+330802)%p*9410)%p-19750115+p)%p^730903)%p;
}
 
ll pows(ll a,ll b){
	ll base=1;
	while(b){
		if(b&1) base=1ll*base*a%p;
		a=1ll*a*a%p;b/=2;
	}
	return base;
}
 
field powfield(field a,ll b){//扩域快速幂
	field base=field(1,0);
	while(b){
		if(b&1) base=base*a;
		a=a*a;b/=2;
	}
	return base;
}
 
ll legander(ll x){//勒让德记号 
//返回-1时x不为二次剩余
//返回1时x为二次剩余
//返回0时p整除x
	ll a=pows(x,(p-1)/2);
	if(a+1==p) return -1;
	return a;
}
 
ll surplus(ll x){//求b.x*b.x==x(mod p)时的b.x
//即给定x,求x为二次剩余时的解b.x
//x为非二次剩余时返回-1 while(1)期望次数两次
	ll a;
	if(!x)return 0;
	if(legander(x)==-1) return -1;
	while(1){
		a=ran()%p;
		w=((1ll*a*a-x)%p+p)%p;
		if(legander(w)==-1) break;
	}
	field b=field(a,1);
	b=powfield(b,(p+1)/2);
	return b.x;
}
int main()
{
	return 0;
}

 

 

 

 

Android 的端智能学习路径 基础层:先补齐 Android 进阶(JNI / 性能优化)和 AI 基础概念,无需深入算法开发;核心层:掌握 TFLite 的模型加载、推理、量化,能完成基础端侧推理;落地层:聚焦实战场景(图像 / OCR / 语音),解决工程化问题(模型管理、异常处理);优化层:通过模型量化、硬件加速、工程优化,提升推理性能和用户体验。 阅读详情

相关推荐

深入解析iDP3的Learning模块:从数据集构建到3D动作预测的代码实现

本文深入解析iDP3框架的Learning模块,从数据集构建到3D动作预测的完整代码实现。通过扩散模型实现视觉输入到动作序列的端到端预测,详细介绍数据采集、增强策略、模型架构及训练技巧,帮助开发者掌握3D动作预测策略的核心技术。

k0l1m2n3o的博客 311

浅谈二次剩余

二次剩余是数论基本概念之一,它是初等数论中非常重要的结果。 什么是二次剩余呢?简单来说就是如果存在一个整数xxx,使得x2≡n(mod&amp;amp;nbsp;p)x^2≡n(mod\ p)x2≡n(mod&amp;amp;nbsp;p),那么则称nnn是模ppp的二次剩余。 有一种很巧妙的办法,可以得出一个数是否是模ppp的二次剩余。这个办法是勒让德符号(np)(\frac{n}{p})(pn​)。 如果nnn是模ppp的二...

stevensonson的博客 1万+

Ferromagnetic soft continuum robots

本文来自机器人领域顶刊,Science Robotics。介绍了一种铁磁软连续体机器人,主要贡献为1)介绍了一个基于磁性微粒和聚合物的软连续体机器人的制造方法,在机器人外表面涂了一层水凝胶,极大地降低了摩擦阻力;2)并研究了在磁场下,不同粒子体积分数下,此机器人的驱动性能;利用手动操控的磁铁,进行了许多实验证明该机器人性能的优异性。 铁磁软连续体机器人 Ferromagnetic soft continuum robots [1] Paper Link Authors: Kim, Yoonho, et al

XU Yangxin的博客 1374

二次剩余定理详解

title: 二次剩余定理详解 date: 2019-09-10 13:09:36 tags: - 数论 mathjax: true 二次剩余 x2≡n(mod p)x^2≡n(mod\ p)x2≡n(mod p) 对于这个方程,求出满足的x。 引理1 首先来看一个符号 (np) (\frac{n}{p}) (pn​) 这个符号叫做勒让德符号,这个符号里有两个值,一个是n,一...

weixin_44203780的博客 7796

openclaw + ollama本地模型 + 飞书平台 windows平台部署教程

本教程将指导您在 Windows 10/11 环境下,通过 Ollama 运行本地模型,并结合 OpenClaw 接入飞书,搭建一个完全本地化的 AI 助手。

专注于技术研发行业技术主要有AI人工智能视觉识别、物联网技术、电商平台、app原生技术、微信小程序、鸿蒙语言开发、办公企业oa、ERP等,致力于做东半球最优秀的程序员 2175

能碳双控| AIRIOT智慧能碳管理解决方案

基于AIRIOT打造的智慧能碳管理平台解决方案结合大数据、物联网、人工智能(AI)、数字孪生等新一代信息技术,通过整合碳达峰、碳中和、实时碳价、碳配额和碳资产等多个模块,为组织提供了全方位、灵活且智能的碳资产管理解决方案,有助于实现碳管理目标、提升可持续性,并适应碳市场的不断变化。

AIRIOT的博客 1809

数论基础:模奇素数的二次剩余 (2)

x2≡a(mod p)的解法x^2 \equiv a(mod\ p)的解法x2≡a(mod p)的解法 我们假定 a∈QR(p)a \in Q_{R}(p)a∈QR​(p),即方程有解 p≡3(mod 4)的情形p \equiv 3(mod\ 4)的情形p≡3(mod 4)的情形 实现思路:随机选取 aaa,计算Legendre符号。若Legendre符号等于111,那么 ap+14(mod p)a^{\frac{p+1}{4}}(mod\ p)a4p+1

su1yu4n's Blog 1949

字节跳动程序媛教你如何刷算法题:面试手撕代码我就没怕过

本人上一次刷题还是大一的C语言期末考试……但是面试中算法考核截止上岸前一直保持着100%正确率的光辉记录。 本文将给你指明一条刷题的决胜指南。并从算法的重要性、题库的选择以及刷题的三大步骤分别进行讲解,彻底解决你所有关于面试算法所有的困扰。

Stay Hungry Stay Foolish 求知若饥 虚心若愚 2万+

NOI级数学 初等数学:二次剩余

NOI级数学 初等数学:二次剩余

青少年趣味编程 1627

【CC精品教程】iTwin capture倾斜摄影建模完整操作流程

【CC精品教程】iTwin capture倾斜摄影建模完整操作流程。包括:无人机航测外业作业流程(像控点布设、航线规划、仿地飞行、航拍)和内业数据处理软件(Pix4d、CC、EPS、PhotoScan、Globalmapper)像控点权重调配、空三加密、DOM、DSM、DEM,DLG生成、等高线生成、高程点提取,点云分类过滤分割、点云生成DEM、三维模型生成等。

智慧空间实验室 3961

华为od 面试八股文_数据库_01_含答案

华为od 面试八股文_数据库_01_含答案

MISAYAONE的博客 2168

(转载)类欧几里得(知识点整理+板子总结)

思路来源 https://blog.youkuaiyun.com/wwx233/article/details/82431820 https://www.cnblogs.com/cyz666/p/7083213.html https://blog.youkuaiyun.com/qq_35649707/article/details/79169099(证明清楚详细) https://blog.youkuaiyun.com/wh...

小衣同学的博客 2786

ComfyUI 局部重绘工作流示例

本文介绍了使用ComfyUI进行图像局部重绘的基础工作流程,重点讲解如何修改人物眼睛颜色和表情。主要内容包括:1.准备工作(可选下载DreamShaperv8模型);2.加载素材图片和工作流文件;3.使用遮罩编辑器绘制需要修改的区域;4.修改提示词控制生成内容;5.调整denoise参数优化效果。教程提供了详细的提示词示例(如"smile,blackeyes"等)和参数设置建议,帮助用户通过多次尝试获得理想效果。该工作流适用于修改图像局部区域而不影响整体画面。

云域A的博客 334

(转载)回文树/回文自动机(知识整理+板子总结)

心得 回文树,又名回文自动机,是一个东西 去年网络赛之后一直想学这个东西,一直碍于太难没学…… 今天有个SA+PAM(后缀数组+回文自动机)的题,快100个队过,我就来补了…… 一看我收藏的那篇讲解回文树的博客2W访问,看来你国网友都会了 原理感觉和AC自动机很类似,真的很巧妙啊, 由于now是从cur补字母c构成的回文串, 所以fail[now]要从fail[cur]失配时的最长后...

小衣同学的博客 532

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

(转载)快速沃尔什变换(FWT) (知识整理+板子总结)

思路来源 https://blog.youkuaiyun.com/john123741/article/details/76576925 https://www.cnblogs.com/cjyyb/p/9065615.html(含and、or、xor具体证明过程) 强力安利思路来源博主的博客,翻了好几个都看不懂,这两位比较清晰…… 用途 , a数组如果在第i位为1,b数组在第j位为1, 那么卷积...

小衣同学的博客 1117

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

2019浙江集训——待整理的知识点、博客和题解

PS:时间限制不必太紧,重要的是深入理解算法思想。 待学知识: 1、图论   优化建边   基环树   负环和差分约束   二分图的性质   费用流、上下界网络流   2-sat问题 2、数据结构   树状数组、线段树的灵活使用   带权并查集   可持续化并查集   带修主席树   线段树合并   线段树分治   平衡树(https://www.luog...

weixin_30614587的博客 207

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

力扣的板子

【代码】力扣的板子。

qq_41799012的博客 1819

重新整理过去的板子

一、图论部分 1. Floyd; 2. Dijkstra; 3. SPFA; 4. Kruskal; 5. LCA. 二、数论部分 1. gcd, exgcd; 1 int gcd(int a,int b) 2 { 3 int temp; 4 while(b) 5 { 6 temp = b; 7 ...

dav74739的博客 100

转载整理一些ACM/ICPC的数学知识

掌握类 数论全家桶 线性筛法及积性函数总结 整除分块 斐波那契数列的性质 欧拉函数 斯特林数(Stirling) 第二类斯特林数总结 错排公式 可以套板子的 大数因式分解 Pollard_rho 算法详解 扩展欧几里得 各种逆元的求法 玄学 欧拉积分,伽马函数、wallis公式 (待补全) ...

backordinary的博客 459

AD PCB板子长度宽度 PCB板子尺寸大小信息

VS-C++ 系列:所有相关C++文章链接. VS-C# 系列:所有相关C#文章链接. bat 系列:所有相关bat文章链接. OpenCV 系列:所有相关OpenCV文章链接. AD 系列:所有相关文章链接 Keil 系列:所有相关文章链接 Arduino 系列:所有相关Arduino文章链接 Git SVN 系列:所有相关Git SVN文章链接 Linux 系列:所有相关文章链接 所有内容均以最小系统调试成功;逐步提供低分源码工程下载! 保证每行代码都经过验证! 如有疑惑,欢迎留言,看见即回;

Dxg团队 2497

如何从ubuntu或PC传递文件到板子,ubuntu如何上网?

3.3 如何从ubuntu或PC传递文件到板子,ubuntu如何上网? 答:以下将分别介绍如何在ubuntu和windows下如何传递文件。 ubuntu如何配置上网?ubuntu 上网:打开Oracle VM VirtualBox(虚拟机软件,笔者以此软件为例,也可用其他虚拟机软件)管理器中的设置,选择网络,启用网络连接,连接方式为:桥接网卡;界面名称:按实际出现选择。 如果想ubuntu使用固...

weixin_30537451的博客 258

基于MacOS的ESP8266 NodeMCU开发环境搭建(转载整理)

前言 前段时间一直使用Windows进行ESP8266的Nonos SDK开发,由于使用的安信可提供的一体化开发工具,安装起来十分的简单粗暴.只需要下载下来之后配置一下就可以使用了,但是在Mac 上确没有明确的开发环境搭建教程,大部分是基于 Ardiuno IDE 进行开发ESP8266的,而 Ardiuno IDE 没有代码提醒以及高亮状态让我感到十分的不爽.所以就在网上搜寻了一番,发现了一个基于 VS Code 的环境搭建流程.这里就直接分享整理一下了. 安装交叉编译包 安装交叉编译包之前..

得不到的永远是骚栋. 1909

18怎么确定板子形状_初学者 “滑雪单板怎么选板子?”自己都不懂别人说话你敢信?...

作者前言雪季结束了,洒家整理了一下新手雪友主要面临的问题,其中如何选择装备占据了很大的份额,大家的选择方法各不相同,有对有错,在这里给大家普及一下,尽量避免一些误区,朋友说的不一定就准确,教练说的也不一定就都对。此贴会按照以下顺序叙述:板型特点→板长选择→硬度选择→宽度选择→轮廓介绍纯原创手打,转载请注明出处。纯原创手打,转载请注明出处。例行公事:帅图镇楼!到底该如何选择雪板呢?首选我们来了解一下...

weixin_36076907的博客 5202

【转载】(整理)怎样计算PCB报价

怎样计算PCB报价! 1、板材费用(不同的板材费用是不同的) 2、钻孔费用(孔的数量和孔径大小影响钻孔费用) 3、制程费用(板子的不同工艺要求导致制程难度 4、人工水电加管理费用(此费用就要看各个工厂的成本控制了,相对来说台资厂就低的多国) 基本构成就这些,至于原材料的价格嘛,现在基本趋于稳定了,涨价的可能性不大了。 以上这位兄弟所说的不错,不过还不全面与详细。下面我再来...

weixin_30895603的博客 222

用Latex高效整理你的ACM-ICPC模板

前言 在ICPC比赛前,为了在赛场上比较高效的书写代码,各位ACMer往往会提前准备好一份或是他人整理的,亦或是自己整理的板子。 而在我们整理板子的过程中,因为word文档的局限性,我们往往会对模板的排版而绞尽脑汁,而如果我们花大量的时间在排版上,或许也太过与得不偿失。因此此时就需要我们采用\(\Latex\)这一排版神器来帮助我们高效的整理我们的ICPC板子。 我在浏览了各位大佬的博客后,发现他...

weixin_30655569的博客 488
上一篇: hdu1043 Eight(搜索/八数码问题)
下一篇: 矩阵快速幂(板子总结)
小衣同学
博客等级 码龄9年 1444粉丝 995原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小衣同学

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值