简记乘法逆元(费马小定理+扩展Euclid)
乘法逆元
什么是乘法逆元?
若整数 \(b,m\) 互质,并且\(b|a\) ,则存在一个整数\(x\) ,使得 \(\frac{a}{b}\equiv ax\mod m\) 。
称\(x\) 是\(b\) 模\(m\) 的乘法逆元,记作\(b^{-1} \mod m\) 。
- 而\(a/b\equiv a*b^{-1}\equiv a/b*b*b^{-1} \mod m\)
- 其实就是\(b*b^{-1} \equiv 1\mod m\)
其实就是模意义下除法变乘法。
怎么求乘法逆元?(费马小定理)
- 费马小定理:如果p是一个质数,而整数a不是p的倍数,则有\(a^{p-1}≡1\mod p\)
- 也就是说\(a*a^{p-2}≡1\mod p\)
- 也就是说\(p\) 是素数的时候,其乘法逆元是\(a^{p-2}\)
int qpow(int a, int b, int p){
int ans=1;
while(b){
if(b&1)ans=ans*a%p;
b>>=1;
a=a*a%p;
}
return ans;
}
int inv(int a, int p){
return qpow(a,p-2,p);
}
- 那\(p\) 不是素数呢?——扩展欧几里得算法
扩展Euclid求逆元
- 求解\(ax\equiv1\mod m\)
- 即\(ax-my=1\)
- 这个\(x\) 就是\(a \mod m\) 的逆元
- 用扩欧求\(x\) 的话,这个\(y\) 的正负对\(x\) 无影响。
//ax+by=gcd(a,b)
int exgcd(int a,int b,int &x,int &y){
if(b==0){
x=1;
y=0;
return a;
}
int d=exgcd(b,a%b,x,y);
int z=x;
x=y;
y=z-a/b*y;
return d;
}
//inv(a)
int inv(int a,int p){
int x,y;
int d=exgcd(a,p,x,y);
return d==1?(x%p+p)%p:-1;
}
简记乘法逆元(费马小定理+扩展Euclid)的更多相关文章
- BZOJ_[HNOI2008]_Cards_(置换+Burnside引理+乘法逆元+费马小定理+快速幂)
描述 http://www.lydsy.com/JudgeOnline/problem.php?id=1004 共n个卡片,染成r,b,g三种颜色,每种颜色的个数有规定.给出一些置换,可以由置换得到的 ...
- hdu1576-A/B-(同余定理+乘法逆元+费马小定理+快速幂)
A/B Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submiss ...
- CodeForces 300C Beautiful Numbers(乘法逆元/费马小定理+组合数公式+高速幂)
C. Beautiful Numbers time limit per test 2 seconds memory limit per test 256 megabytes input standar ...
- 51nod A 魔法部落(逆元费马小定理)
A 魔法部落 小Biu所在的部落是一个魔法部落,部落中一共有n+1个人,小Biu是魔法部落中最菜的,所以他的魔力值为1,魔法部落中n个人的魔法值都不相同,第一个人的魔法值是小Biu的3倍,第二个人的魔 ...
- HDU 1098 Ignatius's puzzle 费马小定理+扩展欧几里德算法
题目大意: 给定k,找到一个满足的a使任意的x都满足 f(x)=5*x^13+13*x^5+k*a*x 被65整除 推证: f(x) = (5*x^12 + 13 * x^4 + ak) * x 因为 ...
- HDU 3923 Invoker(polya定理+乘法逆元(扩展欧几里德+费马小定理))
Invoker Time Limit : 2000/1000ms (Java/Other) Memory Limit : 122768/62768K (Java/Other) Total Subm ...
- 【BZOJ】3398: [Usaco2009 Feb]Bullcow 牡牛和牝牛(排列组合+乘法逆元+欧拉定理/费马小定理)
http://www.lydsy.com/JudgeOnline/problem.php?id=3398 以下牡牛为a,牝牛为b. 学完排列计数后试着来写这题,“至少”一词可以给我们提示,我们可以枚举 ...
- hihocoder #1698 假期计划 (排列组合+费马小定理+乘法逆元)
Description 小Ho未来有一个为期N天的假期,他计划在假期中看A部电影,刷B道编程题.为了劳逸结合,他决定先拿出若干天看电影,再拿出若干天刷题,最后再留若干天看电影.(若干代指大于0) 每 ...
- poj 1845 【数论:逆元,二分(乘法),拓展欧几里得,费马小定理】
POJ 1845 题意不说了,网上一大堆.此题做了一天,必须要整理一下了. 刚开始用费马小定理做,WA.(poj敢说我代码WA???)(以下代码其实都不严谨,按照数据要求A是可以等于0的,那么结果自然 ...
随机推荐
- SQL Server抛出异常信息 RAISERROR
用于数据库抛出具体异常信息给程序,示例:BEGIN TRY /* RAISERROR ('Error raised in TRY block.', -- Message text. ...
- 下拉框选择 <from:select>
- 阿里云 ecs win2016 FileZilla Server
Windows Server 2016 下使用 FileZilla Server 安装搭建 FTP 服务 一.安装 Filezilla Server 下载最新版本的 Filezilla Server ...
- iframe内嵌页面——跨域通讯
<template> <div class="act-form"> <iframe :src="src" ref=" ...
- Proxy ARP
翻译自:https://ccieblog.co.uk/arp/proxy-arp Proxy ARP在一些路由器上是默认开启的.其思想是使两个不同子网上的主机,在没有配置默认网关的情况下,实现彼此通信 ...
- jajx 传参 需要 判断的 条件
1.有没有权限. 2.数据类型 对不对 例如 id ,page 传过来时是str 类型, view中处理时需要转换成 int类型. 如果 不能转 就会报错.. 3.查询数据.数据不存在也要报错... ...
- rsync 应用总结
rysnc server端 1.vim /etcrsyncd.conf (用户rsync,目录,模块,非系统虚拟用户及密码文件) 2.创建共享目录 /data/www/{www,bbs,blog} 3 ...
- Vue 循环 [Vue warn]: Avoid using non-primitive value as key
页面中不添加 :key 索引的时候,会不停的提示虚线,但不影响使用 后来加了一个索引,加成了:key= "content" 从后台取出来的contents是一个list,里面有多 ...
- 用js刷剑指offer(二叉树的镜像)
题目描述 操作给定的二叉树,将其变换为源二叉树的镜像. 输入描述: 二叉树的镜像定义:源二叉树 8 / \ 6 10 / \ / \ 5 7 9 11 镜像二叉树 8 / \ 10 6 / \ / \ ...
- YOLO---多个版本的简单认识
YOLO---多个版本的简单认识 YOLOv3 有好几个经典版本了:一.YOLOv3 (Darknet)官网 @ https://github.com/pjreddie/darknet二.YOLOv3 ...