首页 > 其他分享 >同余相关

同余相关

时间:2023-11-13 11:44:41浏览次数:26  
标签:int cdot pmod dfrac 相关 cases 同余 equiv

取余定义: \(a\%b=a-b\left\lfloor \dfrac{a}{b}\right\rfloor\)

整除

\(a|b\) 表示 \(a\) 能被 \(b\) 整除,即 \(b=a\times k (k\in Z)\) 。

同余

\(a \equiv b \pmod m\) 表示 \(a\mod m=b\mod m\) 。

相当于 \(a-b=m\times k(k \in N)\) 。

裴属定理

内容

若 \(a\) , \(b\) 是整数,且 \(\gcd(a,b)=d\) ,那么对于任意的整数 \(x\) , \(y\) , \(ax+by\) 都一定是 \(d\) 的倍数,特别地,一定存在整数 \(x,y\) ,使 \(ax+by=d\) 成立。

同余方程

\[ax\equiv m\pmod b \]

\[ax-m=by \]

\[ax+by=m \]

欧几里得算法

\(\gcd(a,b)=\gcd(b,a\% b)\)

int gcd(int x,int y)
{
    if(!y) return x;
    return gcd(y,x%y);
}

扩展欧几里得

可以通过欧几里得求 gcd 的过程求解 \(ax+by=\gcd(a,b)\) 。

设 \(\gcd(a,b)=d\) ,当前的式子为 \(ax+by=d\) ,则下一轮要递归的式子为 \(bx_1+(a\% b)y_1=d\) 。

假设我们已经得出了 \(bx_1+(a\% b)y_1=d\) ,需要求出 \(x,y\) 。

\[bx_1+(a\%b)y_1=d \]

由 \(a\%b=a-b\left\lfloor \dfrac{a}{b}\right\rfloor\) 可得

\[bx_1+(a-b\left\lfloor\dfrac{a}{b}\right\rfloor)y_1=d \]

整理得

\[ay_1+b(x_1-\left\lfloor\dfrac{a}{b}\right\rfloor y_1)=d \]

\[\begin{cases}x=y_1\\y=(x_1-\left\lfloor\dfrac{a}{b}\right\rfloor y_1)\end{cases} \]

边界:辗转相除最后 \(b=0\) 返回 \(a\) 。

所以当 \(b=0\) 时,我们令 \(x=1\) 即可( \(y\) 可以为任意数,因为 \(b=0\) )。


求出了特解,我们就可以推出通解。

设通解为 \(x_k,y_k\) ,

\[\begin{cases}x_k=x+k\cdot\dfrac{b}{\gcd(a,b)}\\y_k=y-k\cdot\dfrac{a}{\gcd(a,b)}\end{cases} (k\in Z) \]

其实可以先求出来 \(x_k\) 在将 \(x_k\) 带入进原式得出 \(y_k\) 。


设一个同余方程为 \(ax+by=k\) ,\(\gcd(a,b)=d\)。

由裴蜀定理可知,\(k\) 一定为 \(d\) 的倍数。

所以可以先求出 \(ax_0+by_0=d\) 的解。再求出 \(ax+by=k\) 解。

\[\begin{cases}x=x_0\cdot\dfrac{k}{\gcd(a,b)}\\y=y_0\cdot\dfrac{k}{\gcd(a,b)}\end{cases} \]

int x,y;
int exgcd(int a,int b,int &x,int &y)
{
    if(!b) {x=1,y=0;return a;}
    int d=exgcd(b,a%b,x,y);
    int t=x;
    x=y;y=t-a/b*y;
    return d;
}

逆元

若 \(ab\equiv1\pmod p\) ,\(a,b\) 互质,则称 \(b\) 为 \(a\) 的逆元(\(b=inv(a)\)。其实就是 \(a\) 在模意义下的倒数。

扩展欧几里得求逆元

设 \(b\) 为 \(a\) 模 \(p\) 意义下的逆元,由逆元定义的可得

\[ab+py=1 \]

使用扩展欧几里得即可

int x,y;
void exgcd(int a,int p,int &x,int &y)
{
    if(!b) {x=1,y=0;return ;}
    exgcd(p,a%p,x,y);
    int t=x;
    x=y;y=t-a/p*y;
    return ;
}
int main(){
    a=read(),p=read();
    exgcd(a,p,x,y)
    printf("%lld",(x%p+p)%p);//( x 一直加 p 直到大于 0 )
}

费马小定理求逆元

费马小定理为:如果 \(p\) 是一个质数,而整数 \(a\) 不是 \(p\) 的倍数,则有 \(a^{p-1}\equiv1\pmod p\) 。

由逆元的定义可以得出

\[a\cdot inv(a)\equiv 1\equiv a^{p-1}\pmod p \]

\[inv(a)\equiv a^{p-2}\pmod p \]

用快速幂计算即可

inline int qpow(int a,int p){
    int b=p-2;int base=a,ans=1;
    while(b){
        if(b&1) ans=(ans*base)%p;
        base=(base*base)%p;
        b>>=1;
    }
    return ans;
}

线性递推法

设 \(p=aq+r\) ,则 \(q=\left\lfloor\dfrac{p}{a}\right\rfloor,r=p\%a\) 。

\[aq+r\equiv0\pmod p \]

\[a\equiv-r\cdot inv(q)\pmod p \]

\[inv(a)\equiv-q\cdot inv(r)\pmod p \]

可得递推式:

\[inv(a)=-(\dfrac{p}{a})\cdot inv(p\%a)\pmod p \]

int inv[M];
inline void getInv(int n,int p)
{
    inv[1]=1;
    for(int i = 2;i <= n;i++){
        inv[i]=-p/i*inv[p%i];
        inv[i]=(inv[i]%p+p)%p;
    }
}

中国剩余定理(CRT)

出自《孙子算经》

有物不知其数,三三数之剩二,五五数之剩三,七七数之剩二。问物几何?

本质是求解一个同余方程组

\[\begin{cases}x\equiv a_1\pmod {m_1}\\x\equiv a_2\pmod {m_2}\\...\\x\equiv a_n\pmod {m_n}\end{cases} \]

有一个限制:\(m_i\) 两两互质。

我们可以将方程组分开来看:

\[\begin{cases}x_1\equiv a_1\pmod {m_1}\\x_2\equiv a_2\pmod {m_2}\\...\\x_n\equiv a_n\pmod {m_n}\end{cases} \]

只有当 \(m_1|x_2\) 时, \(x_1+x_2 \equiv a_1\pmod {m_1}\)

使 \(x=\sum_{i=1}^n x_i\) ,我们设 \(p=\prod_{i=1}^n m_i, M_i=\dfrac{p}{m_i},r_i=\dfrac{x_i}{M_i}\) ,解下面的同余方程:

\[\begin{cases}M_1\cdot r_1\equiv a_1\pmod {m_1}\\M_2\cdot r_2\equiv a_2\pmod {m_2}\\...\\M_n\cdot r_n\equiv a_n\pmod {m_n}\end{cases} \]

因为 \(m_i\) 两两互质,可以用 exgcd 求解,即求关于 \(w_i\) 的同余方程:

\[\begin{cases}M_1\cdot w_1\equiv 1\pmod {m_1}\\M_2\cdot w_2\equiv 1\pmod {m_2}\\...\\M_n\cdot w_n\equiv 1\pmod {m_n}\end{cases} \]

(相当于求 \(M_i\) 的在模 \(m_i\) 意义下的逆元 \(inv(M_i)|_{m_i}\) )

将解代回得 \(r_i=a_i\cdot w_i\)

再将 \(r_i\) 代回得 \(x_i=r_i\cdot M_i=a_i\cdot M_i\cdot w_i=a_i\cdot M_i\cdot inv(M_i)|_{m_i}\)

解即为

\[x\equiv \sum_{i=1}^n a_i\cdot M_i\cdot inv(M_i)|_{m_i} \pmod p \]

for(int i = 1;i <= n;i++)
        a[i]=read(),b[i]=read(),P*=a[i];
for(int i = 1;i <= n;i++)
{
    int M=P/a[i];
    ans+=(b[i]*M*inv(M,a[i]))%P;
}

标签:int,cdot,pmod,dfrac,相关,cases,同余,equiv
From: https://www.cnblogs.com/cnm2k3h/p/17828793.html

相关文章

  • 银河麒麟系统下idea相关
    idea安装1、下载ideaIU-2023.2.4-aarch64.tar.gz,可用最新版本。网址:https://www.jetbrains.com/idea/download/download-thanks.html?platform=linuxARM642、操作系统更新命令:sudoaptupdate命令:aptlist3、解压下载的安装文件命令:tar-zxvfideaIU-2023.2.4-aarch64.tar.......
  • Odoo模型_联系人相关
    res.partner(联系人)联系人包括客户的公司以公司的员工、供应商的公司以及公司的员工。res.partner.category(联系人标签)用于给联系的人打标签,也是树形结构,可以设置上级标签,类似产品中的产品类。res.partner.title(联系人称谓)当联系人为个人或者是公司下面的......
  • Odoo模型_产品相关
    product.template(产品模板)product.product(产品变体)product.attribute(产品属性)预设产品变体的属性,包括尺码、颜色等。product.template.attribute.line(产品属性明细)产品属性明细就是产品属性的值可以预设几种,用来选择,结合产品属性生成变体。product.category(......
  • 本机Java连接虚拟机的redis相关
    1、代码Jedisjedis=newJedis("192.168.88.151",6379);2、开启6379端口//查看6379端口是否开启--yes是开启;no是关闭firewall-cmd--query-port=6379/tcp//开启6379端口firewall-cmd--zone=public--add-port=6379/tcp--permanent//重启使生效firewall-cmd--reloa......
  • 虚拟机安装redis相关步骤
    1、官网下载地址--https://download.redis.io2、下载rediswgethttp://download.redis.io/releases/redis-5.0.7.tar.gz3、将文件解压缩tar-zvxfredis-5.0.7.tar.gz4、编译redis//在解压文件的目录下执行make命令cdredis-5.0.7make几个文件也都成功出现啦:......
  • Linux中的权限属性以及ACL相关的命令
    Linux系统中,一切皆文件。对于存在于Linux系统的文件来讲系统中的用户分别属于三种不同的角色,分别是属主、属组、其他。属主:所有者 owner|user  u属组:属于哪个组groupg其它用户:不是所有者,也不是组中的用户othero三个角色对文件拥有三种不同的权限:读权限  read     ......
  • 【RAG问答相关】复杂知识库问答综述(下)
    前言大模型落地应用过程中,一般形式还是问答形式,无论是人机对话还是机机对话,都是靠问答来解决一系列问题。无论是要求大模型给出具体的专业化知识,还是要求大模型进行某项作业的开展,都是以问题(指令其实也是一种特殊的问题)的形式进行。所以在RAG中,如何将问题转化为大模型能够理解的......
  • JVM系列-第10章-垃圾回收概述和相关算法-cnblog
    title:JVM系列-第10章-垃圾回收概述和相关算法tags:-JVM-虚拟机categories:-JVM-1.内存与垃圾回收篇keywords:JVM,虚拟机。description:JVM系列-第10章-垃圾回收概述和相关算法。cover:'https://gitee.com/youthlql/randombg/raw/master/logo/jvm.png'ab......
  • 【小沐学前端】Windows下搭建WordPress(二、相关工具安装)
    1、简介WordPress是基于PHP和MySQL的免费开源内容管理系统(CMS)。它是全球使用最广泛的CMS软件,截至2019年5月,它为排名前1000万个网站中提供了超过30%的支持,并拥有在使用CMS构建的所有网站中,估计有60%的市场份额。2、搭建环境2.1Nginx配置nginx.conf,文件在nginx目录下的conf文件夹......
  • 常见面试题-计算机网络相关
    1.OSI七层模型?OSI七层模型:应用层、表示层、会话层、传输层、网络层、数据链路层、物理层TCP/IP五层模型:应用层、传输层、网络层、链路层、物理层应用层应用层是由网络应用程序使用的,是离用户最近的一层应用层通过各种协议,为网络应用提供服务,常见协议如下:FTP-文件传输协议HTTP/......