乘法逆元专题
时间:2021-08-28
本文章向大家介绍乘法逆元专题,主要包括乘法逆元专题使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
正常求逆元
由费马小定理
\[a^p\equiv a\pmod{p} \quad p\in prime
\]
得:
\[a^{p-2}\equiv \dfrac{1}{a}\pmod{p}
\]
之后称 \(a\) 关于模 \(p\) 的乘法逆元为 \(inv(a)\)
求 \(inv(a)\) 的时间复杂度为 \(O(\log p)\) (快速幂)
线性求 \(inv(i) \ (1\leqslant i\leqslant n)\)
即要 \(O(1)\) 在已知 \(inv(j) \ (1\leqslant j\leqslant i-1)\) 的前提下求 \(inv(i)\)
推导:
将 \(p\) 拆开
\[p=\left\lfloor\dfrac{p}{i}\right\rfloor\times i+p\%i
\]
得
\[\left\lfloor\dfrac{p}{i}\right\rfloor\times i+p\%i\equiv 0\pmod{p}
\]
两边同乘 \(inv(i)\times inv(p\%i)\),得
\[\left\lfloor\dfrac{p}{i}\right\rfloor\times inv(p\%i)+inv(i)\equiv 0\pmod{p}
\]
即
\[inv(i)\equiv -\left\lfloor\dfrac{p}{i}\right\rfloor\times inv(p\%i)\pmod{p}
\]
其中 \(inv(p\%i)\) 我们已知,就能线性求 \(inv(i) \ (1\leqslant i\leqslant n)\) 啦~
线性求 \(inv(i!) \ (1\leqslant i\leqslant n)\)
先求出 \(inv(n!)\),之后
\[inv(i!)=inv((i+1)!)\times (i+1) \ (1\leqslant i\leqslant n-1)
\]
就结束了~
当然这个也可以配合 \(i! \ (0\leqslant i\leqslant n-1)\) 导出 \(inv(i) \ (1\leqslant i\leqslant n)\) 的取值,也就是
\[inv(i)=inv(i!)\times (i-1)! \ (1\leqslant i\leqslant n)
\]
原文地址:https://www.cnblogs.com/zhangshaojia/p/15200499.html
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Android Studio 3.6 调试 smali的全过程
- Android 10 适配攻略小结
- Android P实现静默安装的方法示例(官方Demo)
- Android studio实现滑动开关
- Android实现TCP客户端支持读写操作
- Android通过命令连接wifi的方法(解决usb不能用问题)
- android studio使用SQLiteOpenHelper()建立数据库的方法
- Android自定义View绘制彩色圆弧
- android canvas使用line画半圆
- 说说Android的UI刷新机制的实现
- Android仿直播类app赠送礼物功能
- android自定义imageview实现圆角图片
- 基于android实现五子棋开发
- Android Fragment的静态注册和动态注册创建步骤
- Android从Fragment跳转到其他Activity的简单实例