传送门:203. 同余方程 - AcWing题库

思路:应用欧几里得算法求

代码:

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
void exgcd(ll a,ll b,ll &x,ll &y)
{if(b==0) { x=1,y=0;return ; }exgcd(b,a%b,x,y);ll t=x;x=y;y=t-y*(a/b);
}
int main()
{ll a,b,x,y;cin>>a>>b;exgcd(a,b,x,y);cout<<(x%b+b)%b;return 0;
}

线性同余:

在数论中,线性同余方程是最基本的同余方程,“线性”表示方程的未知数次数是一次,即形如:

ax≡b (mod n)的方程。此方程有解当且仅当 b 能够被 a 与 n 的最大公约数整除(记作 gcd(a,n) | b)。

线性同余方程

传送门:线性同余方程

思路:线性同余方程a*x≡b(mod m)可以转化为a*x+m*y=b。

该同余方程有解当且仅当b%gcd(a,m)== 0 ???,

证明:假如有一组整数x1,y1满足a*x1+m*y1=gcd(a,m),

此时有b=k*gcd(a,m),则必有k*(a*x1+m*y1)=k*gcd(a,m)

有解时用扩展欧几里得算法求出一组整数解x1,y1,满足a*x1+m*y1=gcd(a,m),至于答案就是

x = x1*(b/gcd(a,m))

而通解的话,待续。

代码:

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
ll exgcd(ll a,ll b,ll &x,ll &y)
{if(b==0) { x=1,y=0;return a; }int d= exgcd(b,a%b,x,y);ll t=x;x=y;y=t-y*(a/b);return d;
}
int main()
{ll a,b,x,y,m;
int t;
cin>>t;
while(t--)
{cin>>a>>b>>m;ll d=exgcd(a,m,x,y);if(b%d==0){cout<<(ll)x*(b/d)%m<<endl;}elseprintf("impossible\n");}return 0;
}

传送门:计算器(三个愿望一次满足)

高次同余方程:

问题:给定整数a,b,p,其中a,p互质,求一个非负整数x,使得 a^x≡b( mod p )

朴素思路:

形如a^x≡b( mod p )一类问题,保证p是质数以及a,p互质的前提下,

首先根据飞马小定理可以得到 a^(p-1)≡1(mod p),可以那么设x属于区间[0,p-2],通过枚举不同的x下 a^x(mod p)的值与b(mod p)的值进行对比,那么一定可以确保答案在0~p-2之间。

证明:a^(p-1)≡1(mod p)==a^ 0 ≡1(mod p),此时a的次方模p的数值已经完成了一个循环,再往后的更高次方mod p的值也是在(0~p-2)次方mod p之间。

优化思路:

上面的做法的时间复杂度是O(p),当p的值过大的时,时间复杂度也会线性递增。

因此这里可以使用一个BSGS算法来优化时间复杂度使其降低到√p,

设问题中的x为 i*t-j,其中有

t = √p 向上取整

i的范围是[0,t]

j的范围是[0,t-1];

由这条  i * t - j 就可以枚举出x属于[0,p]的所有情况了,接下来这一步

因为a,p互质,所以可以在模p意义下对a进行乘,除法运算。

原方程变为a^(  i * t - j )≡b( mod p )————(a^t) ^i  ≡ b * a ^ j ( mod p)

将所有的 b * a ^ j (mod p)的值插入一个哈希表,对等号左边计算出所有的(a^t) ^i (mod p)的值查询哈希表是否存在对应的j值。该问题有可能无解。

代码:
其中如果a是p的倍数情况下无解,

void get3(ll a,ll b,ll p)
{
map<ll,ll>mp;b%=p;if(a==0||a%p==0){if(b==0) cout<<0<<endl;else puts("-1);return ;}ll t=(ll)(sqrt(p)+1);for(int j=0;j<m;j++)  //存所有的b * a ^ j {ll m=b*qmi(a,j,p)%p;mp[m]=j;}a=qmi(a,t,p);for(int i=0;i<=t;i++)  //找(a^t) ^i {ll val=qmi(a,i,p);if(mp.count(val)){cout<<i*t-mp[val]<<endl;return ;}}puts("-1");
}

同余——同余方程+线性同余方程+高次同余方程相关推荐

  1. 数论 —— 高次同余方程与 BSGS 算法

    [概述] BSGS(Baby Step Giant Step)算法,又称大小步算法,其主要用于解形如  的高次同余方程中的 x,其核心思想是分块. 当 A 与 C 互质时,通过费马小定理: 可知,当  ...

  2. 信息安全数学基础-素数模高次同余方程 2021-10-09

    8.素数模高次同余方程 1. 素数模的高次同余方程 问题的引出 一般素数p模同余方程 f ( x ) = a 0 x n + . . . + a n ≡ 0 ( m o d p ) , p 不 整 除 ...

  3. (扩展)BSGS与高次同余方程

    前言: 今天更BSGS算法.俗称大步小步算法(Big-Step G--Step),又称拔山盖世.北上广深.白色狗屎 . 问题: 求解指数同余方程:ax≡b(modp)a^{x}\equiv b(mod ...

  4. 数学 ( 解高次同余方程 )——Discrete Logarithm Problem ( UVA 7457 )

    题目链接: https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show ...

  5. POJ3243 Clever Y 解 高次同余方程

    解高次同余方程A^x≡B(mod C)算法流程 S1:i从0到100循环,如果满足A^i≡B(mod C),那么i就为所求,否则继续S2: S2:令d=0,D=1,执行如下循环: while((tmp ...

  6. 高次同余方程式的解数及解法

    定理一: 若是k个两两互质的正整数,,则同余式                                            (1) 与同余式组                   (i=1, ...

  7. 【数论】同余(五):多元线性同余方程

    同余问题共7part,我的博客链接: 基本概念与性质 逆元:概念.求解方法与推导 线性同余方程 一元线性同余方程 一元线性同余方程组 多元线性同余方程 高次同余方程:BSGS算法(大小步算法.拔山盖世 ...

  8. 【数论】同余(四):一元线性同余方程组(两两相消、中国剩余定理)

    同余问题共7part,我的博客链接: 基本概念与性质 逆元:概念.求解方法与推导 线性同余方程 一元线性同余方程 一元线性同余方程组 多元线性同余方程 高次同余方程:BSGS算法(大小步算法.拔山盖世 ...

  9. 专题·扩展欧几里得定理【including 求解二元一次方程,线性同余方程

    初见安~这里是基础数论专题(3)~[详见数论专栏] p.s:本文章假设你已经掌握了欧几里得算法--辗转相除法求最大公约数(gcd) 一.二元一次方程 形如的含有两个未知数且最高次数为1的方程我们称之为 ...

最新文章

  1. 重新定义 AI 服务器架构
  2. 从体验上拉开差距,Serverless 将成就云计算的下一个 10 年!
  3. 【HDU - 4417】Super Mario(查询区间小于K的数的个数,主席树)
  4. 所有的面试问题都可以归结为这三类(附回答套路)
  5. 计算机部门 消防安全隐患,市计算机:消防隐患勿轻视,安全意识常在心
  6. 投影html连接电脑,电脑怎么连接投影仪?投影仪的详细安装使用教程
  7. 【读书笔记】《华为工作法》
  8. 【Java】我的世界Java版外挂制作 [3] - Killaura FastBow
  9. 电脑开机界面如何设置个性签名?
  10. spring5学习笔记
  11. 祛痘收缩毛孔的简单方法 - 生活至上,美容至尚!
  12. python函数做菜单_学不会的Python函数——函数小案例(名片管理器)
  13. R语言多层桑基图_R语言可视化(二十三):桑基图绘制
  14. 拍照扫描怎么弄?你可以试一下这两个方法
  15. Linux云服务器:MySQL安装失败、多种错误总结
  16. [黑群晖]DSM7.1 ds3617xs 志强e3 1265lv3 b85保姆级安装教程
  17. python在家创业项目_适合在家创业的项目有哪些 八大项目人人可做
  18. Excel制作随机点名小程序
  19. 职责链模式之真假美猴王
  20. robots 协议介绍

热门文章

  1. linux搜狗输入法卡死
  2. 竟然有这么多方法可以获得iphone5C的数据,FBI你高兴不?
  3. 各种RTMP直播流播放权限_音视频_数据花屏_问题检测与分析工具EasyRTMPClient
  4. linux 音频播放器源码,基于Linux的音频播放器的设计 源代码.doc
  5. 服务器系统盘符加密,在CentOS 8系统服务器上设置网络绑定磁盘加密(NBDE)
  6. 一个安卓终端客户端:JuiceSSH
  7. CRM系统,让销售人员识别客户真实需求!
  8. 干货 | 如何构建系统优化成本,携程出海云原生实践
  9. 图片在section上下居中_HTML5中的section标签是什么?HTML5中的section标签怎么居中?...
  10. Webmin与CSF的安装与配置