逆元(个人模版)

逆元:

 1 int ex_gcd(int a,int b,int &x,int &y)
 2 {
 3     if(b==0)
 4     {
 5         x=1;
 6         y=0;
 7         return a;
 8     }
 9     int ans=ex_gcd(b,a%b,x,y);
10     int tmp=x;
11     x=y;
12     y=tmp-a/b*y;
13     return ans;
14 }
15 int mod_inverse(int a,int m)
16 {
17     int x,y;
18     ex_gcd(a,m,x,y);
19     return (x%m+m)%m;//如果直接求解出来的x是一个负数,那么显然我们要将其转化成正数。
20 }  
时间: 2025-01-01 22:56:01

逆元(个人模版)的相关文章

ACM数论-欧几里得与拓展欧几里得

ACM数论--欧几里得与拓展欧几里得 欧几里得算法: 欧几里德算法又称辗转相除法,用于计算两个整数a,b的最大公约数. 基本算法:设a=qb+r,其中a,b,q,r都是整数,则gcd(a,b)=gcd(b,r),即gcd(a,b)=gcd(b,a%b). int gcd(int a,int b) { return b ? gcd(b,a%b) : a; } 扩展欧几里德算法: 基本算法:对于不完全为 0 的非负整数 a,b,gcd(a,b)表示 a,b 的最大公约数,必然存在整数对 x,y ,使

扩展GCD 中国剩余定理(CRT) 乘法逆元模版

extend_gcd: 已知 a,b (a>=0,b>=0) 求一组解 (x,y) 使得 (x,y)满足 gcd(a,b) = ax+by 以下代码中d = gcd(a,b).顺便求出gcd 能够扩展成求等式 ax+by = c,但c必须是d的倍数才有解,即 (c%gcd(a,b))==0 注意求出的 x,y 可能为0或负数 =================================== 乘法逆元: a*b %n == 1 已知 a, n, 求b 就是乘法逆元 ============

Ural 1903 Unidentified Ships 组合数 + 乘法逆元

一开始题意没读懂,英语是硬伤,其实是这道题目真的有点饶人,后来补题,看懂了意思,从n个数中挑出t个,然后第k个必须要在,挑出的t个数要排序成不下降的顺序,然后 原本那个第k个数在这个跳出的t个数当中要在第x的位置 分析:直接找出比第k个数小的数的个数,还有比第k个数大的数的个数,当然啦还有可能存在与第k个数相等的数的个数,唉呀,一开始漏了相等的情况,没看题目案例,真是作死啊,后来全弄好了,那不就是在比它小的里面挑x-1个数字,当然也可以从相等的里面挑了补,然后在比它大的  里面挑t-x个数 当然

HDU - 5976 Detachment(逆元)

题意:将一个数x拆成a1+a2+a3+……,ai不等于aj,求最大的a1*a2*a3*……. 分析: 1.预处理前缀和前缀积,因为拆成1对乘积没有贡献,所以从2开始拆起. 2.找到一个id,使得2+3+4+……+id - 1(sum[id-1]) < x < 2+3+4+……+id(sum[id).(二分找即可) 则rest = x - sum[id - 1].将rest分配给2+3+4+id-1中的某个数. 3.在保证数字不重复的前提下,分配给的那个数越小越好,证明见4. 因此,应该分配给的

C++ 类模板三(类模版中的static关键字)

//类模版中的static关键字 #include<iostream> using namespace std; /* 类模板本质上是c++编译器根据类型参数创建了不同的类, c++编译器在利用类模板生成类的时候会为每个类生成一个static变量 那么对于类中的static关键字就非常好理解了 static关键字修饰的变量是属于类的 同一个类的对象共享类的static静态变量 类模板中的static修饰的变量数据类型必须是确定的 不可以是类型参数 因为静态变量在类对象之前初始化 这时候还没有通

逆元模板

// 扩展欧几里得做法: 1 #include<iostream> 2 #include<cstdio> 3 #include<algorithm> 4 #include<cstring> 5 #define ll long long 6 using namespace std; 7 8 ll ex_gcd(ll a,ll b,ll &x,ll &y)//扩展欧几里得(扩展gcd) 9 { 10 if (a==0&&b==0)

zabbix导入模版问题解决办法

当我们监控一些东西需要使用zabbix模版的时候,而模版没有怎么办?最简单的方法就是导入模版了 模版可以去https://www.zabbix.org/wiki/Zabbix_Templates/Official_Templates这里下载 而在导入的时候会报一些错误,下面给出导入vmware template报错的解决办法: 首先检查zabbix中是不是有模版对应的value map,没有的话导入的时候就报错啦. 手工创建value map: zabbix:在Administrator->ge

NAT配置模版

A 类:10.0.0.0-10.255.255.255 B 类:172.16.0.0-172.31.255.255 C 类:192.168.0.0-192.168.255.255 上述三个范围内的地址不会在因特网上被分配,因此可以不必向ISP 或注册中心申请而在公司或企业内部自由使用. NAT实现方式:静态转换.动态转换.端口多路复用 1.静态转换: 第一步,设置外部端口 interface serial 0/0 ip address 与ISP互联的地址 ip nat outside 第二步,设

主动给用户发消息-微信公众号模版消息

微信公众号模版消息最大的作用就是用户在平台上提交订单或发生其它行为时,平台可以给用户发送简要的交易信息,且公众平台主动给用户发送消息目前最多的就是1.模版消息:2.客服消息. 公众号配置 首先申请一个需要的模版消息   其次,发送模版消息必须要用户的openid,获取教程可参考之前的获取用户信息篇 后台代码 我的模版消息是用来提醒交易状态的,故以网站中以交易业务流程为例 万能调用 //微信通知 $id = get_order_id($out_trade_no);//获取订单的ID $uid =