博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
相关数学理论和公式(同余问题)
阅读量:6372 次
发布时间:2019-06-23

本文共 1673 字,大约阅读时间需要 5 分钟。

基本定理与概念


形如\(a\equiv b(mod\;m)\)的式子称为同余式

  1. \(a\equiv b(mod\;m)\)当且仅当\(m\;|\;(a-b)\)
  2. \(a\equiv b(mod\;m)\)\(b\equiv c(mod\;m)\),则\(a\equiv c(mod\;m)\)(传递性)
  3. \(a\equiv b(mod\;m)\),则
    • \(a+c\equiv b+c(mod\;m)\)
    • \(a-c\equiv b-c(mod\;m)\)
    • \(a\times c\equiv b\times c(mod\;m)\)
  4. \(a\equiv b(mod\;m)\)\(c\equiv d(mod\;m)\)
    • \(ax+cy=bx+dy(mod\;m)\)
    • \(a\times c\equiv b\times d(mod\;m)\)
    • \(a^n\equiv b^n(mod\;m)\)
    • \(f(a)\equiv f(b)(mod\;m)\)
  5. \(a\equiv b(mod\;m)\),且\(d\;|\;m\),则\(a\equiv b(mod\;d)\)

线性同余方程


形如\(ax\equiv b(mod\;m)\)的包含未知数的同余式称为一元线性同余方程

  1. \(gcd(a,m)=d\),如果\(d\;|\;b\),则方程有d个模m不同的解,否则无解
  2. 求解一元线性同余方程需要使用扩展欧几里德算法,过程如下:
    \(a=d\times a_0\)\(m=d\times m_0\),方程变为:
    \(a_0x+m_0y=b\;/\;d\)
void exgcd(ll a,ll b,ll &d,ll &x,ll &y){     if(b==0){         x=1;y=0;         d=a;return;     }else{         exgcd(b,a%b,d,x,y);         ll tmp=x;         x=y;         y=tmp-(a/b)*y;     }}int solve(int a,int b,int m){     exgcd(a,m,d,x,y);     if(b%d) return -1;  //无解     x=x*(b/d)%m;     for(int i=1;i<=d;i++) ans[i]=(x+(i-1)*m/d)%m;}

设同余方程组为

\[ \begin {aligned} x&=r_1(mod\;a_1)\\\ x&=r_2(mod\;a_2)\\\ x&=r_3(mod\;a_3)\\\ x&=r_4(mod\;a_4)\\\ &\cdots\\\ x&=r_5(mod\;a_5)\\\ \end {aligned} \]
求解一元线性同余方程组(小于m的非负整数解),求解x,例题【POJ 2891】

void exgcd(ll a,ll b,ll &d,ll &x,ll &y){     if(b==0){         x=1;y=0;         d=a;     }else{         exgcd(b,a%b,d,y,x),y-=x*(a/b);     }}int a[N],r[N],n;ll solve(){    ll ta=a[1],tr=r[1],x,y,d;    for(int i=2;i<=n;i++){        exgcd(ta,a[i],d,x,y);        if((r[i]-tr)%d) return -1;        x=(r[i]-tr)/d*x%(a[i]/d);        tr+=x*ta;ta=ta/d*a[i];        tr%=ta;     }     return tr>0?tr:tr+ta;}

转载于:https://www.cnblogs.com/zsyacm666666/p/7196143.html

你可能感兴趣的文章
GBDT的基本原理
查看>>
MySQL修改root密码的多种方法(转)
查看>>
MongoDB 基础命令——数据库表的增删改查——遍历操作表中的记录
查看>>
.NET Core 跨平台发布(dotnet publish)
查看>>
Activity入门(一)
查看>>
CentOS下如何从vi编辑器插入模式退出到命令模式
查看>>
Mysql索引的类型
查看>>
Eclipse debug模式 总是进入processWorkerExit
查看>>
Nginx的https配置记录以及http强制跳转到https的方法梳理
查看>>
springcloud(十三):Eureka 2.X 停止开发,但注册中心还有更多选择:Consul 使用详解...
查看>>
关于Boolean类型做为同步锁异常问题
查看>>
TestLink运行环境:Redhat5+Apache2.2.17+php-5.3.5+MySQL5.5.9-1
查看>>
Get File Name from File Path in Python | Code Comments
查看>>
显示本月每一天日期
查看>>
[转]java 自动装箱与拆箱
查看>>
NET的堆和栈04,对托管和非托管资源的垃圾回收以及内存分配
查看>>
think in coding
查看>>
IdHttpServer实现webservice
查看>>
HTML的音频和视频
查看>>
Unsupported major.minor version 52.0
查看>>