逆元,即对给定\(a,p\ (a \perp p)\),求\(x\)使得\(ax \equiv 1 \ (\bmod p)\)

逆元可以看做\(a\)在模\(p\)意义下的\(a^{-1}\)。因此,在模\(p\)意义下,可以用乘\(a\)的逆元的方式来代替除以\(a\)操作

求单个数的逆元

费马小定理求逆元

当\(p\)是质数且\(a\perp p\)时 $$a^{p-1}\equiv1\quad (\bmod p) $$

方程两边同时乘\(a^{-1}\),可以发现$$a^{-1}\equiv a ^{p-2}\quad(\bmod p)$$

可以直接快速幂求 传送门

欧拉定理求逆元

欧拉定理可以适用于满足\(a\perp p\)的情况 $$a^{\varphi(p)}\equiv 1\quad (\bmod p) $$

同理可得$$a^{-1}\equiv a^{\varphi(p)-1} \quad (\bmod p) $$

现在的问题变成了,如何求欧拉函数?

1.线性筛\(O(p)\)求

适用于多个模数的情况 传送门

如果是单一模数怎么办呢?有更高效的做法

2.\(O(\sqrt{p})\)做法

\[\varphi(p)=p\prod\limits_{i}(1-\frac1i)
\]

其中,\(i\)是\(p\)的所有质因子

#define LL long long
LL get_phi(LL n)
{
LL sum = n;
for (LL i = 1; i * i <= n; ++i)
if (n % i == 0)
{
sum -= sum / i;
while (n % i == 0)
n /= i;
}
if (n > 1)
sum -= sum / n;
return sum;
}

exgcd求逆元

exgcd可以求解方程组\(ax+by=c\)的解,而求\(a\)在模\(p\)下的逆元可以转化为求\(ax+py=1\)的解

求多个数的逆元

线性求1~n的逆元

题目传送门

令\(p=ki+r,k=\lfloor\frac pi \rfloor. r=p \bmod i\)

则有\(ki+r \equiv 0\quad (\bmod p)\),乘\(i^{-1},r^{-1}\)可得\(kr^{-1}+i^{-1}\equiv 0\quad (\bmod p)\)

所以\(i^{-1}=-r^{-1}\lfloor\frac pi \rfloor\)

显然可以递推求解

线性求n个数的逆元

题目传送门

先预处理出这n个数的前缀积\(sum_i\),然后求出这n个数积的逆元\(suminv_n\),那么\(suminv_{i-1}=suminv_i*a_i\),\(inv_i=suminv_{i}*sum_{i-1}\)。

noip复习——逆元的更多相关文章

  1. NOIP复习篇

    NOIP复习篇---枚举 --------------------------------------------------------------------------------------- ...

  2. NOIP复习之1 数学数论

    noip一轮复习真的要开始啦!!! 大概顺序是这样的 1.数学 2.搜索贪心 3.数据结构 4.图论 5.dp 6.其他 数学 1.数论 数论被称为数学皇冠上的明珠,他的重要性主要在于它是其他学习的祖 ...

  3. [Noip复习知识点][个人向]Zackzh

    只是列列一些要复习的,努力复习吧,有种noip退役的赶脚. 一.模拟 (这你也不会?退役吧) 二.DP 1.基础dp 2.区间dp 3.状压dp 4.树形dp 6.概率(期望)dp 7.环形dp 8. ...

  4. 冲刺NOIP复习,算法知识点总结

    前言        离NOIP还有一个星期,匆忙的把整理的算法补充完善,看着当时的整理觉得那时还年少.第二页贴了几张从贴吧里找来的图片,看着就很热血的.当年来学这个竞赛就是为了兴趣,感受计算机之美的. ...

  5. NOIP复习赛20161117

    题目链接:http://files.cnblogs.com/files/candy99/%E9%A2%98%E7%9B%AE1117.pdf A n个等比数列求和公式(都感觉数列忘光了) %1e9+7 ...

  6. 【NOIP复习】最短路总结

    [模板] /*堆优化Dijkstra*/ void dijkstra() { priority_queue<pair<ll,int>,vector<pair<ll,int ...

  7. noip复习模板

    我只会这么多 tarjan:codevs 1332 void tarjan(int u) { dfn[u]=low[u]=Time++; s.push(u); for(int i=head[u];~i ...

  8. [NOIP复习]第三章:动态规划

    一.背包问题 最基础的一类动规问题.相似之处在于给n个物品或无穷多物品或不同种类的物品,每种物品仅仅有一个或若干个,给一个背包装入这些物品,要求在不超出背包容量的范围内,使得获得的价值或占用体积尽可能 ...

  9. noip复习之拓扑排序

    之前很多很多紫书上的东西我都忘了…… 抄题解的后果…… 做了一下裸题 https://vjudge.net/problem/UVA-10305 拓扑排序还可以来判环 #include<bits/ ...

随机推荐

  1. 学习mysql,你必须要了解的 “ 索引 ” 基本知识

    1.select * 对效率的影响在我们平时的代码编写或面试题中,很多人都会疑惑:select * 到底合理吗? 如果说不合理,为什么?如果说合理,原因又是什么? 1).阿里规范 在阿里java规范中 ...

  2. python多线程之Threading

    什么是线程? 线程是操作系统内核调度的基本单位,一个进程中包含一个或多个线程,同一个进程内的多个线程资源共享,线程相比进程是“轻”量级的任务,内核进行调度时效率更高. 多线程有什么优势? 多线程可以实 ...

  3. 最小割树(Gomory-Hu Tree)

    当我们遇到这样的问题: 给定一个 \(n\) 个点 \(m\) 条边的无向连通图,多次询问两点之间的最小割 我们通常要用到最小割树. 博客 建树 分治.记录当前点集,然后随便找俩点当 \(s\) 和 ...

  4. MVC + EFCore 项目实战 - 数仓管理系统7 - 数据源管理中--新增数据源

    上篇我们完成了数据源列表展示功能(还未测试). 本篇我们来新增数据源,并查看列表展示功能.   接上篇: 二.数据源管理功能开发 2.新增数据源 我们用模态对话框来完成数据源的新增,效果如下图: 我们 ...

  5. Java基础之常用知识点博客汇总

    正则: 正则表达式 :https://www.cnblogs.com/lzq198754/p/5780340.html 正则表达式大全:https://blog.csdn.net/zpz2411232 ...

  6. 记502 dp专练

    趁着503的清早 我还算清醒把昨天老师讲的内容总结一下,昨天有点迷了 至使我A的几道题都迷迷糊糊的.(可能是我太菜了) 这道题显然是 数字三角形的变形 好没有经过认真思考然后直接暴力了 这是很不应该的 ...

  7. 二维线段树->树套树

    现在上真正的二维线段树 毕竟 刚刚那个是卡常 过题我们现在做一个更高级的做法二维线段树. 大体上维护一颗x轴线段树 然后在每个节点的下方再吊一颗维护y轴的线段树那么此时我们整个平面就被我们玩好了. 这 ...

  8. three.js 自制骨骼动画(一)

    上一篇郭先生解析了一下官方的骨骼动画案例,这篇郭先生就要做一个稍微复杂一点的骨骼动画了,就拿一个小人下手吧.在线案例请点击博客原文.话不多说先上大图 骨骼动画在GUI上面都有体现.制作骨骼动画的步骤在 ...

  9. java内存知识点扩展_笔记

    一.java的虚拟机分为三大区域: 执行引擎, java运行内存, 类加载器 1.1.Java运行内存分为线程共享区域和线程私有区: 我们大多数初学者用的都是sun公司最早设计的Java HotSpo ...

  10. 动态生成HTML元素-模拟在线考试功能

    前言 我们在项目开发过程中,经常会遇到页面html元素无法提前预设,而是通过某一些条件动态生成的情况,这里我们需要考虑如下几个因素: 1.需要动态创建的元素类型,比如TextBox, Radio, C ...