首页 > 其他分享 >线性求逆元

线性求逆元

时间:2023-09-30 15:44:43浏览次数:28  
标签:lfloor frac rfloor 逆元 线性 mod equiv

线性求逆元

时间复杂度:\(O(n)\)

问题:求取\(1...n\)关于质数\(p\)的逆元。

应用举例:求取组合数\(C_n^m \ mod \ p\),其中\(1 \leq n,m\leq10^7,p = 998244353\)。

\[C_n^m \equiv \frac {n!} {(n-m)!m!} (mod \ p) \]

\[C_n^m\equiv n! * (n-m)!^{-1}*m!^{-1} (mod\ p) \]

假设我们求取\(n\)关于质数\(p\)的逆元,即求取\(n^{-1}\)。

我们设\(a = \lfloor\frac{p}{n}\rfloor,b = p\ mod\ n\)。那么就有

\[a*n + b \equiv 0(mod\ p)\tag{1} \]

对公式\((1)\)移项可得:

\[\begin{align*} a*n &\equiv -b(mod\ p)\\ -\frac{a}{b} &\equiv n^{-1} (mod\ p) \end{align*} \]

即:

\[\begin{align*} n^{-1} &\equiv -\frac{a}{b} (mod\ p)\\ &\equiv -\frac{\lfloor \frac{p}{n} \rfloor}{p\ mod\ n} (mod\ p)\\ &\equiv -\lfloor \frac{p}{n} \rfloor\cdot(p\ mod\ n)^{-1}(mod\ p)\\ &\equiv (p-\lfloor \frac{p}{n} \rfloor)\cdot(p\ mod\ n)^{-1}(mod\ p)\\ \end{align*} \]

所以:

\[n^{-1} \equiv (p-\lfloor \frac{p}{n} \rfloor)\cdot(p\ mod\ n)^{-1}(mod\ p) \]

无论\(p\)是多少,\(1\)的逆元就是\(1\).这是边界条件。

代码:

inv[1] = 1;
for(int i = 2;i<=n;i++)
{
    inv[i] = (ll)(p - p/i)*(inv[p%i]) % p;
}

标签:lfloor,frac,rfloor,逆元,线性,mod,equiv
From: https://www.cnblogs.com/value0/p/17737873.html

相关文章

  • 【数据结构】线性表的数组描述和链式描述
    1.线性表抽象类#pragmaoncetemplate<classT>classLinearList{public://线性表是否为空virtualboolempty()const=0;//线性表大小virtualintsize()const=0;//根据ID获取线性表元素virtualT&get(inttheIndex)const=0;......
  • 数学建模__线性规划Python实现
    我使用到的是python库中scipy。'''线性规划'''#目标函数的系数#minz=2x1+3x2-5x3c=np.array([-2,-3,5])#不等式限制条件的系数,转化为小于等于#2x1-5x2+x3<=10,x1+3x2+x3<=12Aup=np.array([[-2,5,-1],[-1,-3,-1]])#必须是二维#右侧系数bup=np.array([-1......
  • 数学建模__非线性规划Python实现
    使用到的是scipy库线性规划指的是目标模型均为线性,除此以外的都是非线性规划,使用scipy提供的方法对该类问题进行求解。fromscipy.optimizeimportminimizeimportnumpyasnp#定义目标函数deffun(args):a,b,c,d=argsv=lambdax:(a+x[0])/(b+x[1])-c*x[0]......
  • 【模板】线性筛素数
    【模板】线性筛素数点击查看代码#include<bits/stdc++.h>usingnamespacestd;#defineLLlonglongconstintN=1e8+10;intp[N],cnt,vis[N];intmain(){ ios::sync_with_stdio(0),cin.tie(0),cout.tie(0); intn,q; cin>>n>>q; for(inti=2;i......
  • 数据分享|用加性多元线性回归、随机森林、弹性网络模型预测鲍鱼年龄和可视化|附代码数
    原文链接:http://tecdat.cn/?p=24127最近我们被客户要求撰写关于预测鲍鱼年龄的研究报告,包括一些图形和统计输出。鲍鱼是一种贝类,在世界许多地方都被视为美味佳肴养殖者通常会切开贝壳并通过显微镜计算环数来估计鲍鱼的年龄。因此,判断鲍鱼的年龄很困难,主要是因为它们的大小不仅......
  • 贝叶斯线性回归和多元线性回归构建工资预测模型|附代码数据
    原文链接:http://tecdat.cn/?p=21641最近我们被客户要求撰写关于贝叶斯线性回归的研究报告,包括一些图形和统计输出。在劳动经济学领域,收入和工资的研究为从性别歧视到高等教育等问题提供了见解工资模型在本文中,我们将分析横断面工资数据,以期在实践中使用贝叶斯方法,如BIC和贝叶......
  • R语言非线性回归和广义线性模型:泊松回归、伽马回归、逻辑回归、Beta回归分析机动车事
    全文链接:https://tecdat.cn/?p=33781原文出处:拓端数据部落公众号我们使用广义线性模型(GeneralizedLinearModels,简称GLM)来研究客户的非正态数据,并探索非线性关系。GLM是一种灵活的统计模型,适用于各种数据类型和分布,包括二项分布、泊松分布和负二项分布等非正态分布。通过GLM,我......
  • R语言用线性混合效应(多水平/层次/嵌套)模型分析声调高低与礼貌态度的关系|附代码数据
    全文下载链接:http://tecdat.cn/?p=23681最近我们被客户要求撰写关于线性混合效应的研究报告,包括一些图形和统计输出。线性混合效应模型与我们已经知道的线性模型有什么不同 ( 点击文末“阅读原文”获取完整代码数据******** ) ?线性混合模型(有时被称为"多层次模型"或"层次......
  • HarmonyOS非线性容器特性及使用场景
     非线性容器实现能快速查找的数据结构,其底层通过hash或者红黑树实现,包括HashMap、HashSet、TreeMap、TreeSet、LightWeightMap、LightWeightSet、PlainArray七种。非线性容器中的key及value的类型均满足ECMA标准。HashMapHashMap可用来存储具有关联关系的key-value键值对集......
  • 3. 线性神经网络
    回归问题回归是一种是一种监督学习方式,用于预测输入变量和输出变量之间的关系,等价于函数拟合,选择一条函数曲线使其更好的拟合已知数据且更好的预测未知数据。当达到一定预测精度后,就可以用该拟合曲线来代表该自变量与因变量之间的关系,并且可以用他来处理更多的输入。回归可......