首页 > TAG信息列表 > Cipolla

二次剩余与 Cipolla 算法

二次剩余 对于 \(P,n\),若存在 \(x\),满足: \[x^2≡n\pmod p \]则称 \(n\) 为模 \(P\) 意义下的二次剩余。 勒让德符号 定义如下: \[\left(\frac{n}{p}\right)= \begin{cases} 1,&n\text{ 在模 $p$ 意义下是二次剩余}\\ -1,&n\text{ 在模 $p$ 意义下是非二次剩余}\\ 0,&n\equiv0\pmod

二次剩余 Cipolla 算法浅析

参考资料 yyb blog Kewth blog 求解 \[x^2=n \pmod p \]仅介绍模数 p 为奇素数的解法,也就是 Cipolla 算法。 判定是否存在二次剩余 设 \(n=g^a,x=g^b\),由于原根环的长度为 \(p-1\) (是个偶数), 列出方程 \(2b = a \pmod {p-1}\),根据贝祖定理,当且仅当 \(\gcd(p-1,2)=2 \mid a\) 时

【Coel.做题笔记】【旁观者…】二次剩余- Cipolla 算法

题前闲语 这周末就是省选了,甚至考场就在这个机房,可惜我并没有参加的机会。 唉,今年得好好努力了! 题目简介 给出 \(N,p\),求解方程 \[x^2 \equiv N(\bmod ~p) \]多组数据。 保证 \(p\) 是奇素数。 输入输出格式 输入格式 第一行一个整数 $T$ 表示数据组数。 接下来 \(T\) 行,每行两个

【模板】【数论】二次剩余Cipolla算法,离散对数BSGS 算法

Cipolla LL ksm(LL k,LL n) { LL s=1; for(;n;n>>=1,k=k*k%mo) if(n&1) s=s*k%mo; return s; } namespace number { LL D; struct Z { LL x,y; Z(LL _x=0,LL _y=0){x=_x,y=_y;} }; Z operator +(const Z &x,c

二次剩余Cipolla算法学习笔记

\(Cipolla\)好像是个很厉害的东西……虽然我觉得这东西直接用离散对数+\(bsgs\)艹过去也可以…… 如无特殊说明,以下均默认\(p\)为模数,且\(p\)为奇素数 如无特殊说明,以下均认为运算在\(\mathbb{F}_p\)下进行(元素为\(0\)到\(p-1\)这\(p\)个元素,运算为模\(p\)意义下的加减乘除) 定义 二

P5277 【模板】多项式开根(加强版)(bsgs or Cipolla)

题面 传送门 题解 首先你得会多项式开根->这里 其次你得会解形如 \[x^2\equiv a\pmod{p}\] 的方程 这里有两种方法,一个是\(bsgs\)(这里),还有一种是\(Cipolla\)(施工)(不过这个只能用来解二次剩余就是了) 代码里留着的是\(bsgs\),注释掉的是\(Cipolla\) 如果用\(Cipolla\)的话注意这里需要

二次剩余Cipolla算法

参照jklover的博客。 概述 大概就是在模\(p\)意义下开根号,如求解方程\(x^2\equiv n\ (\bmod p)\). 这里只考虑\(p\)为素数的情况.若\(p=2\) ,则\(x=0\ when\ n=0,x=1\ when\ n=1\). 若\(p​\)为奇素数,定义勒让德符号: \[\lgroup\frac{n}{p}\rgroup =n^{\frac{p-1}{2}}\] 则根据欧