数论 - 最小乘法逆元

我只能说这个数论定理对我一脸懵比,哦不对,是我对这个数论定理一脸懵比,暂时

只准备记住模板就好了,求最小逆元的时候可以用一下,如果mod为素数而且不要求

最小的话还是用费马小定理吧,对了还是要说一下,这个模板中exgcd(扩展欧几里德)

的返回值是gcd(最大公约数),其中x才是要求的逆元,而且一求出来时并不是最小

而且还有可能是负数,有点分类讨论了,不过我找模板的时候把分类讨论那里用一个更

优的方案代替了(也是找的),用的时候注意点,不说了,我还是准备懵比去吧= =

#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cstring>
#include<string>
#include<cmath>
#include<vector>
#include<queue>
#include<cctype>
using namespace std;

#define Int __int64
#define INF 0x3f3f3f3f

int exgcd(int a, int b, int &x, int &y) {
  if (b == 0) {
    x = 1;
    y = 0;
    return a;
  }
  int gcd = exgcd(b, a%b, x, y);
  int t = y;
  y = x - a/b*y;
  x = t;
  return gcd;
}
int main()
{
  //freopen("input.txt", "r", stdin);
  int n, m, x, y;
  while (scanf("%d%d", &n, &m) != EOF) {
    int gcd = exgcd(n, m, x, y);
    int q = m / gcd;
    x = ((x % q) + q)%q;
    printf("%d\n", x);
  }
  return 0;
}

时间: 2024-10-11 13:17:39

数论 - 最小乘法逆元的相关文章

『数论』乘法逆元

在求解除法取模问题\((a \div b) \mod m\)时,我们可以转化为\([a \mod (b \times m)]\div b\) 但是如果\(b\)很大,则会出现爆精度问题,所以我们避免使用除法直接计算. 可以使用逆元将除法转换为乘法:假设\(b\)存在乘法逆元,即与\(m\)互质(充要条件). 设\(c\)是\(b\)的逆元,即\(b \times c≡1(\mod m)\) 那么有\(a\div b=(a\div b)\times 1=(a\div b)\times b\time

数论入门2——gcd,lcm,exGCD,欧拉定理,乘法逆元,(ex)CRT,(ex)BSGS,(ex)Lucas,原根,Miller-Rabin,Pollard-Rho

数论入门2 另一种类型的数论... GCD,LCM 定义\(gcd(a,b)\)为a和b的最大公约数,\(lcm(a,b)\)为a和b的最小公倍数,则有: 将a和b分解质因数为\(a=p1^{a1}p2^{a2}p3^{a3}...pn^{an},b=p1^{b1}p2^{b2}p3^{b3}...pn^{bn}\),那么\(gcd(a,b)=\prod_{i=1}^{n}pi^{min(ai,bi)},lcm(a,b)=\prod_{i=1}^{n}pi^{max(ai,bi)}\)(0和任何

数论学习之乘法逆元

用法:用于除法取模 思路:扩欧 要求:b.p互质 设k为b的乘法逆元: 则在求解除法取模问题时: 有(a/b)%p =>(a*k)%p 当b很大时,用除法会出现精度问题..so 乘法逆元: 如果b*k ≡ 1 (mod p) 则称k是b关于p的乘法逆元 我们可以通过求 b 关于 p 的乘法逆元 k,将 a 乘上 k 再模 p,即 (a * k) mod p.其结果与(a / b) mod p等价. 证: 因为 b * k ≡ 1 (mod p) 则有 b * k = p* x+1 得到 k =

数论--乘法逆元

乘法逆元 定义: 满足a*k≡1 (mod p)的k值就是a关于p的乘法逆元. 为什么要有乘法逆元呢?当我们要求(a/b) mod p的值,且a很大,无法直接求得a/b的值时,我们就要用到乘法逆元. 我们可以通过求b关于p的乘法逆元k,将a乘上k再模p,即(a*k) mod p.其结果与(a/b) mod p等价. 证:(其实很简单...) 根据b*k≡1 (mod p)有b*k=p*x+1. k=(p*x+1)/b. 把k代入(a*k) mod p,得: (a*(p*x+1)/b) mod p

SWJTU2017-6月月赛 G-A Easy Counting Problem[数论][乘法逆元]

传送门:http://www.swjtuoj.cn/problem/2397/ 题解:产生交点的条件为4个点构成四边形对角线产生交点,最大解当产生的交点位置完全不相同时存在.答案为$C_{\text{n}}^4$ 计算组合数时需要使用乘法逆元 代码: 1 #define _CRT_SECURE_NO_DEPRECATE 2 #pragma comment(linker, "/STACK:102400000,102400000") 3 #include<iostream> 4

「数论基础」 乘法逆元

定义:若$ab ≡ 1\ (mod\ p)$,则称$b$是$mod\ p$意义下$a$的乘法逆元 可以将逆元记作$inv$,则$a * inv ≡ 1\ (mod\ p)$ 其实定义反过来也是成立的,即$a$是$mod\ p$意义下$b$的乘法逆元 乘法逆元的意义: 模运算中的除法是不符合四则运算法则的,然而加减乘都符合.所以数学家们利用乘法逆元来完成除法的需求. 完成除法的工作——经典应用:求解$a / b \% p\  (b | a)$ 方法: 设$a / b \% p = r$ 则$a /

清华集训 2014--奇数国(线段树&amp;欧拉函数&amp;乘法逆元&amp;状态压缩)

昨天想了一晚...早上AC了... 这么长时间没打线段树,这回居然一次过了... 感觉数论方面应该已经没有太大问题了... 之后要开始搞动态规划之类的东西了... 题意 在一片美丽的大陆上有100000个国家,记为1到100000.这里经济发达,有数不尽的账房,并且每个国家有一个银行.某大公司的领袖在这100000个银行开户时都存了3大洋,他惜财如命,因此会不时地派小弟GFS清点一些银行的存款或者让GFS改变某个银行的存款.该村子在财产上的求和运算等同于我们的乘法运算,也就是说领袖开户时的存款总

乘法逆元...Orz

最近打的几场比赛,都出现了有关逆元的题目,今天就整理了一下... 求乘法逆元的几种方法:http://www.cnblogs.com/james47/p/3871782.html 博文转载链接:http://blog.csdn.net/acdreamers/article/details/8220787 今天我们来探讨逆元在ACM-ICPC竞赛中的应用,逆元是一个很重要的概念,必须学会使用它. 对于正整数和,如果有,那么把这个同余方程中的最小正整数解叫做模的逆元. 逆元一般用扩展欧几里得算法来求

CodeForces 300C Beautiful Numbers(乘法逆元/费马小定理+组合数公式+快速幂)

C. Beautiful Numbers time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standard output Vitaly is a very weird man. He's got two favorite digits a and b. Vitaly calls a positive integer good, if the decimal