首页 > 其他分享 >逆元

逆元

时间:2023-10-25 20:11:25浏览次数:22  
标签:pre NN ll times 逆元 invp

一、???

1. 线性求逆元

我们记原数为 \(x\),模数为 \(p\)

那我们有 \(a,b\in\mathbb{Z}(x>b)\)

\[p = ax + b \]

那么:

\[ax+b\equiv0\mod p \]

两边同乘 \(x^{-1}\times b^{-1}\):

\[a\times b^{-1}+k^{-1} \equiv 0\mod p \]

\[\Downarrow \]

\[k^{-1}\equiv-a\times b^{-1}\mod p \]

又因为:

\[a = \lfloor\frac p x\rfloor\\b = p\bmod x \]

那么:

\[k^{-1} \equiv -\lfloor\frac p x\rfloor\times (p\bmod x)^{-1} \mod p \]

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

2. 前缀积法求逆元

给定任意一些数 \(a_1,a_2,\cdots,a_n\),求 \({a_1}^{-1},{a_2}^{-1},\cdots,{a_n}^{-1}\)

你考虑,记 \(pre_i = \prod\limits_{i=1}^n a_i~,invp_i = \prod\limits_{i=1}^n ({a_i}^{-1}),inva_i = {a_i}^{-1}\)

对于 \(pre_i\) 显然是个前缀积即可:\(pre_i = pre_{i-1}\times a_i\)

对于 \(invp_i\),先求出 \(invp_n\) (跑一遍逆元),再 \(invp_i = invp_{i+1}\times a_{i+1}\)

对于 \(inva_i\),就是 \(inva_i~ = invp_{i} \times pre_{i-1}\) (\({\prod_{j=1}^i a_{j}^{-1}} \times \prod_{j=1}^{i-1} a_{j}\) )

typedef long long ll;
ll pre[NN],invp[NN],a[NN],inva[NN];
ll inv(ll x){...}//求逆元函数
void init(){
    pre[0] = 1; 
    for(int i = 1; i <= n; ++i) pre[i] = pre[i-1] * a[i] % MOD;
    invp[n] = inv(pre[n]);
    for(int i = n - 1; i >= 1; --i) invp[i] = invp[i+1] * a[i + 1] % MOD;
    for(int i = 1; i <= n; ++i) inva[i] = invp[i] * pre[i - 1];
}

标签:pre,NN,ll,times,逆元,invp
From: https://www.cnblogs.com/rickylin/p/17788026.html

相关文章

  • 乘法逆元
    乘法逆元前置知识二元线性丢番图方程形如\(ax+by=c\)的方程称为二元线性丢番图方程,其中\(a,b,c\in\Z\).在后文中如无特殊说明默认一个二元线性丢番图方程的系数均为整数.裴蜀定理对于一个二元线性丢番图方程\(ax+by=c\),记\(d=\gcd(a,b)\),其存在整数解的......
  • 线性求逆元
    题目描述给你一个数列\(a\),要求在\(O(n)\)的时间复杂度内求出\(a_i\)的逆元。具体思路令$$f_i=\prod_{j=1}^ia_j$$令$$s_i=\prod_{j=1}^i(a_j^{-1})=(\prod_{j=1}^ia_j)^{-1}$$那么我们可以用费马小定理或者exgcd求出\(s_n=f_n^{-1}\)。考虑\(s_i\)的递推式......
  • 乘法逆元
    推荐视频:模意义下的乘法逆元特点:除以一个数取模等于乘以这个数的逆元取模:a/n%mod==a*n^(mod-2)%mod(费马小定理)1.费马小定理前提:p为质数n的逆元等于n^(p-2)点击查看代码#include<bits/stdc++.h>usingnamespacestd;#defineLLlonglongconstintmod=998244353;int......
  • 乘法逆元
    (测试)乘法逆元定义数\(a\)模\(p\)意义下的乘法逆元(\(\texttt{ModularMultiplicativeInverse}\))被定义为线性同余方程\(ax\equiv1\pmodp\)的解。条件\(\gcd(a,p)=1\)是数\(a\)在模\(p\)意义下存在乘法逆元的充分必要条件。求法1.扩展欧几里得法既然乘法......
  • 线性求逆元
    线性求逆元时间复杂度:\(O(n)\)问题:求取\(1...n\)关于质数\(p\)的逆元。应用举例:求取组合数\(C_n^m\mod\p\),其中\(1\leqn,m\leq10^7,p=998244353\)。\[C_n^m\equiv\frac{n!}{(n-m)!m!}(mod\p)\]\[C_n^m\equivn!*(n-m)!^{-1}*m!^{-1}(mod\p)\]假设我们......
  • 数论——线性同余方程、乘法逆元 学习笔记
    数论——线性同余方程、乘法逆元众所周知:说明除非特殊说明,以下提到的exgcd函数均定义为://ax+by=gcd(a,b)llexgcd(lla,llb,ll&x,ll&y,lld=0){if(b==0)x=1,y=0,d=a;elsed=exgcd(b,a%b,y,x),y-=a/b*x;return......
  • 【模板】模意义下的乘法逆元
    由于老是搞混,故开此文。exgcd快速幂线性递推参考资料:当然是洛谷的题解啦!!!link.......
  • 求解逆元
    若两数a,b,gcd(a,b)=1,当存在一个s,使得as(modb)=1;则称s为a对b的逆元;如何求解s?importjava.util.ArrayList;importjava.util.Scanner;publicclassniyuan{privateinta,b;privatestaticintgcd(intx,inty){returny==0?x:gcd(y,......
  • 可持久化非确定状态AC自动分块维护线段平衡仙人掌优化最小费用最大流预处理混合图上莫
    P8946TheLostSymbol这种类型的dp的特点就是大部分转移形如\(f(i,j)\rightarrowf(i+1,j+1)\)之类的,并且当以上转移出现时原数组被清空,这就可以用一个deque来维护,然后对于全局赋值/全局加,需要对每个位置维护一个时间戳,并记录上一次赋值/加是什么时候,以便标记下传。(貌似......
  • 转载:线性求逆元推导
    转载自:线性求逆元推导-Katoumegumi-博客园(cnblogs.com)本篇介绍线性求逆元的推导过程对于一个质数\(P\),我们需要求出\(1-N\)在\(\modP\)意义下的逆元,如何使用线性的方法求其逆元呢?首先,我们设\(t=\lfloor\frac{P}{i}\rfloor,k=P\modi\);对于\(i\times......