Solution

inv[i]=(mo−mo / i)∗inv[mo % i] % mo

inv[i] = (mo-mo\ /\ i ) * inv[mo\ \%\ i]\ \%\ mo

证明

设 t=mo / it=mo\ /\ i ,k=mo % ik=mo\ \%\ i ,

则有:

t∗i+k≡0 (mod mo)

t*i+k≡0\ (mod\ mo)

有:

−t∗i≡k (mod mo)

-t*i≡k\ (mod\ mo)

两边同时除以 i∗ki*k 得到:

−t∗inv[k]≡inv[i] (mod mo)

-t * inv[k]≡inv[i]\ (mod\ mo)

即:

inv[i]≡−mo / i∗inv[mo % i] (mod mo)

inv[i]≡-mo\ /\ i*inv[mo\ \%\ i]\ (mod\ mo)

即:

inv[i]≡(mo−mo / i)∗inv[mo % i] % mo

inv[i]≡(mo-mo\ /\ i)*inv[mo\ \%\ i]\ \%\ mo

证毕。

  • 适用于模数 momo 是质数的情况,能够 O(N)O(N) 时间求出 1−N1-N 对模 momo 的逆元。

Code

inv[0]=inv[1]=1;
for (int i=2;i<=n;i++) inv[i]=(long long)(mo-mo/i)*inv[mo%i]%mo;

O(N) 求 1~N 逆元 模板及证明相关推荐

  1. 扩展欧几里德求逆元模板

    扩展欧几里德求逆元模板: #include<iostream> #define __int64 long long using namespace std; //举例 3x+4y=1 ax ...

  2. 线性求逆元模板_ZXBlog/ACM模板(C++).md at bb6f2522054d5370df79222461293721e8edede2 · cw1027/ZXBlog · GitHub...

    ACM模板(C++) 1.大数 加法,乘法模板 //题目链接 : http://poj.org/problem?id=2506 //题目大意 : 就是问你用2*1,1*2,2*2的砖拼成2*n的长方形 ...

  3. Wannafly挑战赛17 - 求值2 (逆元 + 杨辉三角公式)

    题目链接 题目描述 Ans = 0; For(int i = 1; i <= n; i++) For(int v = 0; v <= n; v++) Ans = (Ans + C(i, v ...

  4. (组合数求模=乘法逆元+快速幂) Problem Makes Problem

    题目: As I am fond of making easier problems, I discovered a problem. Actually, the problem is 'how ca ...

  5. BM求线性递推模板(杜教版)

    BM求线性递推模板(杜教版) BM求线性递推是最近了解到的一个黑科技 如果一个数列.其能够通过线性递推而来 例如使用矩阵快速幂优化的 DP 大概都可以丢进去 则使用 BM 即可得到任意 N 项的数列元 ...

  6. 辗转相除法求模的逆元

    最近研究RSA算法,发现在这个算法里,实现过程中的核心就是求出密钥D,求密钥的公式: E*D ≡ 1 mod r ,现在已知了E和r,求E即是一个求模的逆元问题. 注:≡是数论中表示同余的符号.公式中 ...

  7. 线性求逆元模板_ACM 数论基本模板

    ACM 数论基本模板 1.欧几里得 求最大公约数,最小公倍数 (1)递归的写法:int gcd(int a,int b) {return b?gcd(b,a%b):a;} (2)辗转相除法: int ...

  8. 拓展欧几里得模板/求逆元模板(java)

    拓展欧几里得模板 参考:哈尔滨理工大学ACM培训资料汇编/ACM-ICPC培训资料汇编* 基本原理 :设 a 和 b 不全为 0,则存在整数 x,y 使得 xa yb=gcd(a,b)=c 对于辗转相 ...

  9. 线性求逆元模板_算法学习笔记(9):逆元

    https://zhuanlan.zhihu.com/p/105467597在数论中,如果 ,我们就说 和 在模 意义下互为乘法逆元,记作 . 逆元有什么用呢?我们常常遇到一些题目要求结果对一个大质数 ...

最新文章

  1. 设置grep高亮显示匹配项
  2. 告别 CNN?一张图等于 16x16 个字,计算机视觉也用上 Transformer 了
  3. 实现无锁的栈与队列(1)
  4. 【错误记录】p7zip 交叉编译 Android 版本 NDK 报错 ( error: case value evaluates to -2 , which cannot be narrowed )
  5. 【电商日志项目之七】项目调优
  6. Dubbo 需求、架构、使用Demo
  7. 又是一年中秋节,好想举杯邀明月
  8. Linux 中/etc/profile、~/.bash_profile 环境变量配置以及区别
  9. Linux Shell脚本入门教程系列之(十三)Shell分支语句case … esac教程
  10. SQL Server 之 在与SQLServer建立连接时出现与网络相关的或特定于实例的错误
  11. 看完就懂webpack打包原理
  12. 二叉树层次遍历c语言_每日一道 LeetCode (23):二叉树的层次遍历 II
  13. java mm_Java网络编程-你是GG还是MM?
  14. python数据分析-如何在业余时学数据分析?
  15. datanode启动后闪退_网友吐槽12306 App:不同意获取个人信息就会“闪退”
  16. Leetcode 1235. 规划兼职工作(DAY 73) ---- 动态规划学习期(上午去上高数课了 课下老师说上次旷课不扣平时分嘻嘻)
  17. 64位系统装32位mysql有问题吗_32位系统部署到64位下常见问题及解决
  18. SSH Remote forwarding的示例
  19. 前端javascript总结笔记(一)--js的三座大山
  20. android 铃声播放器,Muziko - 想截取音乐片段当铃声?这款漂亮的播放器能帮你 - Android 应用 - 【最美应用】...

热门文章

  1. 编程方法学25:设计实用社交网络
  2. 正则化与L0、L1、L2范数略解
  3. 大数问题(一个特别大的数需要用数组或字符串来表示)
  4. Linux内存Mem和Swap那点事,Linux内存 mem 和 swap
  5. 在caffe上fine-tuning网络
  6. 【笔记】An explainable deep machine vision framework for plant stress phenotyping
  7. [NTU-Machine-learning-note]1 Introduction(4)
  8. ustc小道消息20220106
  9. 深入探讨!Batch 大小对训练的影响
  10. 吴恩达《优化深度神经网络》精炼笔记(1)-- 深度学习的实用层面