ACM模版——求乘法逆元

简介: ACM模版——求乘法逆元

乘法逆元作用:乘法逆元最大的作用就是,在要除以一个数,再取模时,把除法变成乘法运算,然后再取模。因为除法,比如用 16/5 应该是3.2,但是计算机会算成 3 有误差,用double就更不用说了,数大了一定有误差,所以,有了逆元!

模版代码:

// 快速模幂(配合:费马小定理)
ll qpow(ll a,ll b)
{
    ll ans=1; a=a%mod;
    while(b)
    {
        if(b&1) ans=ans*a%mod;
        b>>=1;
        a=a*a%mod;
    }
    return ans;
}
// 扩展欧几里德
void extgcd(ll a,ll b,ll& d,ll& x,ll& y){
    if(!b){ d=a; x=1; y=0;}
    else{ extgcd(b,a%b,d,y,x); y-=x*(a/b); }
}
ll inverse(ll a,ll n){
    ll d,x,y;
    extgcd(a,n,d,x,y);
    return d==1?(x+n)%n:-1;
}
int main()
{
    // 费马小定理+快速幂(O(log2N))(mod 为素数 + mod较大时推荐):用 b^(M-2) 代替 1/b
    b=qpow(b,mod-2);
    // 扩展欧几里德(O(lnN))(GCD是否为1,1存在逆元,非1不存在逆元)
    b=inverse(b,mod);
    return 0;
}
目录
相关文章
|
7月前
|
机器学习/深度学习 存储 数据可视化
构建个人知识库:Notion vs Roam Research
【5月更文挑战第12天】Notion和Roam Research是两款知名的知识库工具。Notion以其丰富的文本编辑、灵活的笔记组织和强大的集成能力脱颖而出,适合需要多平台同步和精美排版的用户。Roam Research则以双向链接和块概念为核心,构建知识网络,便于发现信息间的关联,适合深度学习和探索性思考。选择取决于个人需求和偏好。
ACM刷题之路(十六)Acm程序设计竞赛自制模板(一)
ACM刷题之路(十六)Acm程序设计竞赛自制模板
|
算法
ACM刷题之路(十六)Acm程序设计竞赛自制模板(二)
ACM刷题之路(十六)Acm程序设计竞赛自制模板
|
Kubernetes 应用服务中间件 调度
开发 k8s 管理平台 - k8sailor 16. 创建 Deployment
开发 k8s 管理平台 - k8sailor 16. 创建 Deployment
185 0
开发 k8s 管理平台 - k8sailor 16. 创建 Deployment
|
Kubernetes JavaScript API
开发 k8s 管理平台 - k8sailor 11. 展示 deployment 详情页
开发 k8s 管理平台 - k8sailor 11. 展示 deployment 详情页
129 0
开发 k8s 管理平台 - k8sailor 11. 展示 deployment 详情页
|
数据格式
ACM模板——程序对拍
ACM模板——程序对拍
170 0
ACM模板——程序对拍
|
Linux Windows
ACM模板——测试时间复杂度
ACM模板——测试时间复杂度
166 0
ACM模板——测试时间复杂度
|
算法
ACM模版——欧几里德(GCD)算法
ACM模版——欧几里德(GCD)算法
113 1
|
算法
ACM模板——快速模幂算法
ACM模板——快速模幂算法
122 0