数学:乘法逆元-拓展GCD

乘法逆元应用在组合数学取模问题中,这里给出的实现不见得好用

给出拓展GCD算法:

扩展欧几里得算法是指对于两个数a,b
一定能找到x,y(均为整数,但不满足一定是正数)
满足x*a+y*b=gcd(a,b)
gcd(x,y)是指x 与 y的最大公约数

有啥用呢?求解形如 a*x +b*y = c 的通解

然后我们先介绍同余方程,再介绍乘法逆元

同余方程
a≡b(mod m) 等价于小学的运算式 b÷m 余数为a
也就是a mod m=b

其实介绍这个就是看怎么把≡拿掉

乘法逆元
ax ≡ 1 (mod m)
我们称 x 是 a 关于 m 的乘法逆元
可以等价于这样的表达式: a*x + m*y = 1

当满足这个式子的时候:a*x + b*y = c 有解的充要条件: c % gcd(a , b) == 0

一般,我们能够找到无数组解满足条件,但是一般是让你求解出最小的那组解

我们求解出来了一个特殊的解 x0 ,我们用 x0 % m其实就得到了最小的解了

 1 #include<cstdio>
 2 using namespace std;
 3 inline long long read()
 4 {
 5     long long x=0,f=1;char ch=getchar();
 6     while(ch<'0'||ch>'9') {if(ch=='-')f=-1;ch=getchar();}
 7     while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();}
 8     return x*f;
 9 }
10 int a,b;
11 void exgcd(int a,int b,int &x,int &y)
12 {
13     if(b==0) {x=1;y=0;return;}
14     exgcd(b,a%b,x,y);
15     int t=x;x=y;y=t-a/b*y;
16 }
17 //ax ≡ 1 (mod b)
18 //-> a*x + b*y = 1
19 //->求出x和y后让x%b就是最小解了 
20 int main()
21 {
22     a=read();b=read();
23     int x,y;
24     exgcd(a,b,x,y);
25     x=(x%b+b)%b;
26     printf("%d",x);
27     return 0;
28 }

 

转载于:https://www.cnblogs.com/aininot260/p/9480161.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/427138.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java I O类大全_Java I/O最简单的几个类

今天把I/O中最简单的几个类整理了一下&#xff0c;之所以整理最简单的&#xff0c;是因为这样会让我更加快速方便的理顺这里面的东西&#xff0c;以前每一次用的时候都要先百度一下&#xff0c;觉得很烦。首先需要先看一下Read,Write和Stream&#xff0c;那么看下面的图就明确多…

rpm包安装mysql数据库

3.1上传以下两个rpm包到服务器上 MySQL-server-5.6.27-1.el6.x86_64.rpm MySQL-client-5.6.27-1.el6.x86_64.rpm 3.2卸载一个旧的mysql-libs包&#xff1a; rpm -e mysql-libs-5.1.73-3.el6_5.x86_64 --nodeps 3.3开始安装mysql-server服务器端 rpm -ivh MySQL-server-5.6.27…

micropython stm32f407 以太网_[MicroPython]STM32F407开发板DIY声光控开关

1.实验目的1. 学习在PC机系统中扩展简单I/O 接口的方法。2. 进一步学习编制数据输出程序的设计方法。3. 学习光敏模块的工作原理。4. 学习声音的工作原理。5. 学习F40 7Micropython开发板与声音传感器与光敏传感器的接线方法以及利用声音与光控制发光二极管亮灭。2.所需元器件F…

linux mysql数据库备份并删除前一分钟的数据

linux 中mysql数据库定时备份并删除前一分钟的所有数据 #!/bin/bash #mysqldump -uroot -ppassword01! imaginebase > /home/backup/imaginebase_KaTeX parse error: Expected EOF, got # at position 27: …%d_%H%M%S).sql #̲mysqldump -uroo…(date %Y%m%d_%H%M%S).sql.g…

打开 igv java_必备可视化Integrative Genomic Viewer(IGV)

你会用到的网站&#xff1a;写在前面&#xff1a;之前mac不小心升级了一下java&#xff0c;然后igv就不能用了&#xff0c;要写教程必须降级java首先&#xff0c;看官方说明&#xff0c;需要安装Java -8&#xff0c;9以上版本不支持。我的mac不知道什么时候更新到了java 10&…

机器学习项目笔记

项目清单: 1. 商业目标2. 划定问题               监督或非监督&#xff0c;还是强化学习。3. 选择什么算法             回归还是分类&#xff0c; 数据量小可使用单机内存的 批量计算&#xff0c; 数据量大使用分布式的MapReduce 线上计算。4. 评估模型…

sublime配置python环境变量_Sublime Python环境配置

文章主要说明了能让Python的编程者使用更方便的一些设置和调整。Sublime Text简介Sublime Text是一个很棒的编辑器&#xff0c;支持跨平台&#xff0c;有着强大的插件子系统。对于Python开发&#xff0c;有不少插件可以让你开发起来更流畅、更有乐趣。我现在仍然在不同的项目之…

linux mysql主从配置

1准备两台服务器 一台是192.168.118.128 一台是192.168.118.129 2主服务器配置 192.168.118.128 修改my.cnf文件 server-id1 log-binmysql-bin #启动MySQL二进制日志系统&#xff0c; binlog-do-dbourneeddb #需要同步的数据库 binlog-ignore-dbmysql #不同步mysql系统数据库&…

java web.xml 监听器_【JAVA 核心技术】java web 中的监听器

为什么要有监听器&#xff1f;监听器是用来处理一系列事件的java类&#xff0c;可被配置在java web项目中。既然如此&#xff0c;为什么不用代码直接调用监听器&#xff1f;这可能是因为J2EE规范规定的项目工程标准,用web.xml指定监听器,然后服务器中间件如weblogic可以以遵照标…

分布式和集群区别以及分布式事务

集群就是同一个代码部署了很多服务器是集群,分布式就是把项目拆成若干个工程,每个工程负责一部分内容,需要多个工程配合完成业务流程 使用的MQ数据一致性解决的分布式事务问题 转载于:https://www.cnblogs.com/fengnan/p/9482980.html

python变量生命周期_python 变量定义及变量生命周期

第一部分最近在写Python的时候发现一个好玩的现象&#xff0c;就是在if else重定义的变量&#xff0c;没有声明全局&#xff0c;在外部也可以使用&#xff0c;这里涉及到一个python变量生命周期的问题。python能够改变变量作用域的代码段是def、class、lamda.if/elif/else、try…

svn新建仓库

1昨天需要在服务器上新建一个仓库&#xff0c;解决方法是把已有的仓库拷贝出来&#xff0c;库删除在放进去 2然后今天想看看有没有命令的方法 find / -name project 首先查看一下项目的位置 3创建仓库 svnadmin create /mnt/raid1/huge/project/test 4cd test Ls 5vi authz…

java gb13000 ucs2_采用GB 13000的UCS-2进行存储的文件怎么转换

不是sql中的数据吧你那个是单个文件吗?假设文件头采用标准UCS2格式的两个字节&#xff0c;每个字段的数据是通过\t分隔的&#xff0c;每行文字是一条记录&#xff0c;如果有不同&#xff0c;需要对程序进行调整。FILE *f _wfopen(L"d:\\文件名.txt",L"rb"…

MySql数据库索引原理

写在前面&#xff1a;索引对查询的速度有着至关重要的影响&#xff0c;理解索引也是进行数据库性能调优的起点。考虑如下情况&#xff0c;假设数据库中一个表有10^6条记录&#xff0c;DBMS的页面大小为4K&#xff0c;并存储100条记录。如果没有索引&#xff0c;查询将对整个表进…

python3 unicode字符串_【已解决】Python3中如何声明字符串是unicode类型以避免log日志打印出错...

Python3中代码&#xff1a;CreateTableSqlTemplate """CREATE TABLE IF NOT EXISTS %s (id int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT ‘自增&#xff0c;主键’,cityDealerPrice int(11) unsigned NOT NULL DEFAULT ‘0’ COMMENT ‘经销商参考价’,…

linux awstats搭建

1安装lnmp模式 2安装awstats 2# tar xf awstats-6.5.tar.gz 解压下载到/root下的压缩包 mkdir /var/lib/awstats chmod 755 /usr/local/awstats #cp -R awstats-6.5/ /usr/local/awstats cd /usr/local/awstats/ 进入到解压目录下 ls docs README.TXT tools wwwroot cd tool…

java实现坐标图进行拖拉拽放_js实现限定区域范围拖拉拽效果

本文实例为大家分享了js实现限定区域范围拖拉拽的具体代码&#xff0c;供大家参考&#xff0c;具体内容如下需要在范围内拖拉拽&#xff0c;之前看来许多资料觉得都不是特别满足要求&#xff0c;今天自己写了一个&#xff0c;通过监听鼠标按下、鼠标抬起、鼠标移动事件来控制代…

上拉加载更多后台数据_微信小程序端操作云数据库

一、分清几个概念1、云开发&#xff0c;简言之就是可以直接用微信小程序开发者工具完成一个从前台到后台的小程序项目。2、小程序端&#xff0c;使用云开发的时候&#xff0c;miniprogram中写的代码可以叫做小程序端&#xff08;真实是我不知道可以不可以这么认为&#xff09;。…

关于springMVC传参问题

今天写项目&#xff0c;碰到一个以前灭有注意到的问题&#xff0c;一般情况下使用springMVC Controller注解之后&#xff0c;被此注解标记的方法的参数名只需要跟页面表单的标签的name的值相同即可拿到页面的值&#xff0c;但是如果标签加了disabled"disabled" 属性…

mysql + keepalived高可用

1上次说过了mysql的主从配置 tar zxf keepalived-1.2.7.tar.gz cd keepalived-1.2.7 yum install gcc gcc-c yum install kernel-devel -y 2报错 configure: error: Popt libraries is required yum install popt-devel 3继续执行 ./configure --with-kernel-dir/usr/src/kerne…