COJ 1163 乘法逆元的求解
乘法逆元就是求一个 a/b = c(mod m)在已知a%m , b%m 的条件下 求c的解
1 #include <cstdio> 2 #include <cstring> 3 4 using namespace std; 5 #define ll long long 6 const int N = 100005; 7 int val[N]; 8 9 ll ex_gcd(ll a , ll b , ll &x , ll &y) 10 { 11 if(b == 0){ 12 x=1 , y=0; 13 return a; 14 } 15 ll ans = ex_gcd(b,a%b,x,y); 16 ll t=x; 17 x=y,y=t-a/b*y; 18 return ans; 19 } 20 21 ll inv(ll a , ll b , ll mod) 22 { 23 ll x , y; 24 ll d = ex_gcd(b,mod,x,y); 25 return a*x%mod; 26 } 27 28 int main() 29 { 30 int n,m; 31 while(scanf("%d%d" , &n , &m ) == 2) 32 { 33 ll sum = 1; 34 for(int i=0 ; i<n ; i++){ 35 scanf("%d" , val+i); 36 sum = (sum*val[i])%m; 37 } 38 for(int i=0 ; i<n ; i++){ 39 ll ans = (inv(sum , (ll)val[i] , m)+m)%m; 40 if(i==0) printf("%lld" , ans); 41 else printf(" %lld" , ans); 42 } 43 printf("\n"); 44 } 45 return 0; 46 }
转载于:https://www.cnblogs.com/CSU3901130321/p/4266682.html
COJ 1163 乘法逆元的求解相关推荐
- java乘法逆元与除法取模,关于数论乘法逆元及相关知识点
在求解a/b%m时,可以转化为(a%(b*m))/b,转化过程如下 令k = (a/b)/m(向下取整), x = (a/b)%m; a/b = k*m + x (x < m); a = k*b ...
- Matlab实现求解乘法逆元实验
一.实验目的 熟悉求解乘法逆元的算法.在此基础上,选择一种算法,通过运用高级程序设计语言,设计并实现一个计算乘法逆元运算器. 二.实验原理 [定义]对于整数a,m,如果存在整数b,满足ab mod m ...
- Python在GF(2⁸)有限域上求解多项式的乘法逆元——基于扩展欧几里得算法
文章目录 一.前言 二.数学基础 1.GF(2⁸)有限域内的多项式 2.不可约多项式 3.多项式模运算 3.乘法逆元 三.算法步骤 1.扩展欧几里得算法 2.多项式除法 3.多项式乘法 四.代码实现 ...
- 乘法逆元的三种求解方法
目录 乘法逆元小结 逆元的定义 求解逆元的方法 1. 快速幂 测试代码 2.拓展欧几里得 测试代码 3.线性算法 例题 AC代码 乘法逆元小结 参考自:点击此处 乘法逆元,一般用于求(a / b)(m ...
- ACM竞赛、数论内容常用的定理(求解(a/b)%c,乘法逆元,费马小定理)
如果b与c互素,则(a/b)%c=a*b^((c)-1)%c其中是欧拉函数.或者(a/b)%c=a*b^(c-2)%c 如果b与c不互素,则(a/b)%c=(a%bc)/b 对于b与c互素和不互素都有 ...
- 洛谷——P3811 【模板】乘法逆元
P3811 [模板]乘法逆元 线性求逆元 逆元定义:若$a*x\equiv1 (\bmod {b})$,且$a$与$b$互质,那么我们就能定义: $x$为$a$的逆元,记为$a^{-1}$,所以我们也 ...
- 求乘法逆元的几种方法
(数学渣,下面的文字可能有误,欢迎指教) 乘法逆元的定义貌似是基于群给出的,比较简单地理解,可以说是倒数的概念的推广.记a的关于模p的逆元为a^-1,则a^-1满足aa^-1≡ 1(mod p) 加减 ...
- 数论练习1 ( 曹冲养猪 + [POJ 2891]Strange Way to Express Integers + 乘法逆元【带证明】)
虽然作业还没有做完,但是我还是放不下它,对此,我只想说: 今天你对作业爱理不理,明天它就让你补到飞起 DP先放放,我们要雨露均沾 练习上手:乘法逆元 题目 题解 代码实现 曹冲养猪?(互质的中国剩余定 ...
- 数学:乘法逆元-拓展GCD
乘法逆元应用在组合数学取模问题中,这里给出的实现不见得好用 给出拓展GCD算法: 扩展欧几里得算法是指对于两个数a,b 一定能找到x,y(均为整数,但不满足一定是正数) 满足x*a+y*b=gcd(a ...
最新文章
- C++ demo:文本搜索以及'指针的引用'的思考
- 拉格朗日插值法(Lagrange插值法)
- C#调用dll中的函数
- 美团命名服务的挑战与演进
- python项目实战_2个Python入门级的实战项目
- 有效需求分析的基本流程
- webdriver---API---(java版) 高级应用
- groovy 兼容 java_java – eclipse插件和maven依赖项中存在的’groovy-all’jar之间的兼容性问题...
- 目标检测——模型效率的优化
- 初识webservice 服务
- 【爱心2】JAVA表白代码——“LOVE“
- FastDFS实现原理及流程
- 丢花娟(约瑟夫环问题)
- KNN(K临近算法)的简单模拟实现
- 台式机通过网线共享笔记本电脑无线网络
- 今日头条(layout下xml布局)
- 抖音 Android 性能优化系列:Java 锁优化
- 滑模控制学习笔记(六)
- 持续集成:通过Jenkins API创建项目和节点
- CnOpenData中国行政区划shp数据