乘法逆元以及在取模意义下的各种骚操作

阅读: 评论:0

乘法逆元以及在取模意义下的各种骚操作

乘法逆元以及在取模意义下的各种骚操作

众所周知,(a+b)%p=(a%p+b%p)%p
(a * b)%p=(a%p * b%p)%p,在a,b均为整数的情况下成立
但是,(a / b)%p!=(a%p / b%p)%p
但是a,b有可能很大导致不能直接用int或long long来表示,那么我们就要用到一个东西叫乘法逆元:
逆元的定义可能很多人看不太懂,但是乘法逆元的定义还是很简单的:
(a * b)%p==1,那么b就是a在模p意义下的乘法逆元
这个东西有什么用呢,这么解释吧,就是a-1对p取模的值就是b
至于为什么······[a * (a-1)]%p=1%p=1,a * b%p=1,你看这个是不是简单明了?
回归原式,(a/b)%p=(a*b-1)%p,这不就转换成乘法了吗,那么我们就需要求出a%p和b-1%p,前一个直接取模,后一个计算b的乘法逆元即可
计算乘法逆元有三种方法:
1、费马小定理法
费马小定理:an-1%n=1,a,n互质。那么a * an-2%n=1
所以,a在模n意义下的逆元就是an-2,用快速幂计算比较快,但是这个方法仅适用于p是质数的情况下
代码:

#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<iostream>
#include<algorithm>
#define ll long long
using namespace std;
int a,b;
int c;
inline ll quickmi(ll x)
{x%=b;ll ans=1;while(c){if(c&1)ans=ans*x%b;x=x*x%b;c>>=1;}c=b-2;return ans%b;
}
inline void write(ll x)

本文发布于:2024-01-28 08:08:46,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/17064005336007.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:乘法   意义   操作
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23