乘法逆元

题目链接

求逆元的三种方式:

1.扩欧

i*x≡1 (mod p)

可以化为:x*i+y*p=1

exgcd求x即可

inline void exgcd(int a,int b,int &x,int &y){
if(b==){
x=; y=;
return;
}
exgcd(b,a%b,x,y);
int t=x;
x=y;
y=t-(a/b)*y;
}

2.快速幂

费马小定理:a^(p-1) ≡ 1 (mod p)

a*a^(p-2)≡1(mod p)

x=a^(p-2) 即为逆元

inline int qpow(int x,int k){
int s=;
while(k){
if(k&) s=s*x%p;
k>>=;
x=x*x%p;
}
return s;
}

3.线性递推:

inv[i]=(M-M/i)*inv[M%i]%M;

证明:
设t=M/i,k=M mod i
t*i+k≡0(mod M)
t*i≡-k(mod M)
两边同时乘以k和i的逆元:t*inv[k]≡-inv[i](mod M)
inv[i]≡-t*inv[k](mod M)
将t和k用M和i表示:
inv[i]≡(-M/i)*inv[M mod i](mod M)
 
inv[]=;for(int i=;i<=n;i++)
inv[i]=(p-p/i)*inv[p%i]%p;

【洛谷P3811】[模板]乘法逆元的更多相关文章

  1. 洛谷P3373 [模板]线段树 2(区间增减.乘 区间求和)

    To 洛谷.3373 [模板]线段树2 题目描述 如题,已知一个数列,你需要进行下面两种操作: 1.将某区间每一个数加上x 2.将某区间每一个数乘上x 3.求出某区间每一个数的和 输入输出格式 输入格 ...

  2. [洛谷P3811]【模板】乘法逆元

    P3811 [模板]乘法逆元 题意 求1-n所有整数在模p意义下的逆元. 分析 逆元 如果x满足\(ax=1(\%p)\)(其中a p是给定的数)那么称\(x\)是在\(%p\)意义下\(a\)的逆元 ...

  3. 模板【洛谷P3811】 【模板】乘法逆元

    P3811 [模板]乘法逆元 给定n,p求1~n中所有整数在模p意义下的乘法逆元. T两个点的费马小定理求法: code: #include <iostream> #include < ...

  4. 洛谷 P3811 【模板】乘法逆元

    P3811 [模板]乘法逆元 题目背景 这是一道模板题 题目描述 给定n,p求1~n中所有整数在模p意义下的乘法逆元. 输入输出格式 输入格式: 一行n,p 输出格式: n行,第i行表示i在模p意义下 ...

  5. 洛谷——P3811 【模板】乘法逆元

    P3811 [模板]乘法逆元 线性求逆元 逆元定义:若$a*x\equiv1 (\bmod {b})$,且$a$与$b$互质,那么我们就能定义: $x$为$a$的逆元,记为$a^{-1}$,所以我们也 ...

  6. 洛谷—— P3811 【模板】乘法逆元

    https://www.luogu.org/problem/show?pid=3811 题目背景 这是一道模板题 题目描述 给定n,p求1~n中所有整数在模p意义下的乘法逆元. 输入输出格式 输入格式 ...

  7. 乘法逆元-洛谷-P3811

    题目背景 这是一道模板题 题目描述 给定n,p求1~n中所有整数在模p意义下的乘法逆元. 输入输出格式 输入格式: 一行n,p 输出格式: n行,第i行表示i在模p意义下的逆元. 输入输出样例 输入样 ...

  8. 洛谷.3803.[模板]多项式乘法(FFT)

    题目链接:洛谷.LOJ. FFT相关:快速傅里叶变换(FFT)详解.FFT总结.从多项式乘法到快速傅里叶变换. 5.4 又看了一遍,这个也不错. 2019.3.7 叕看了一遍,推荐这个. #inclu ...

  9. 洛谷.3803.[模板]多项式乘法(NTT)

    题目链接:洛谷.LOJ. 为什么和那些差那么多啊.. 在这里记一下原根 Definition 阶 若\(a,p\)互质,且\(p>1\),我们称使\(a^n\equiv 1\ (mod\ p)\ ...

随机推荐

  1. 安装Drupal

    我在虚拟机里面安装了Ubuntu Server 14.参考https://www.digitalocean.com/community/tutorials/how-to-install-drupal- ...

  2. 解决VMWARE 虚拟机安装64位系统“此主机支持 Intel VT-x,但 Intel VT-x 处于禁用状态

    VMWARE WORKSTATION 在安装64为操作系统报错,报错内容如图: 错误提示已经很清楚了,需要在BIOS 中打开intel VT-x g功能,开启此功能的前提是: 1.首先要确定的就是你的 ...

  3. C# 自定义属性Attribute

    自定义属性 /// <summary> /// 脱敏属性 /// </summary> public class SensitiveAttribute:Attribute { ...

  4. String方法使用示例

    import java.lang.String; public class StringMethodDemo1{ /** 熟悉String的常用方法. */ public static void ma ...

  5. ACM-线段树扫描线总结

    扫描线的基础概念可以看这几篇文章 http://blog.csdn.net/xingyeyongheng/article/details/8927732 http://www.cnblogs.com/ ...

  6. 数组和矩阵(2)——Reshape the Matrix

    In MATLAB, there is a very useful function called 'reshape', which can reshape a matrix into a new o ...

  7. python 爬虫初试

    python3.5  抓网易新闻的排行榜上的新闻,主要用自带的request模块和lxml import re from urllib import request from lxml import ...

  8. SQL使用bcp方式导入,导出数据2

    select * from A_Account   EXEC sp_configure 'allow_updates' GO EXEC sp_configure 'allow_updates',0; ...

  9. 关于Android那些事

    1.开发Activity步骤 第一步:写一个类继承Activity 第二步:重写oncreate方法 第三步:在主配置文件中注册activity <activity android:name=& ...

  10. Android SharedPreferences存储map的方法

    在网上查了一些资料后,精简改写后得出自己想用的形式,记录一下 public static void putHashMapData(Context context, String key, Map< ...