扩展欧几里德求逆元 hdoj 1576
来源:互联网 发布:淘宝劲舞团g币怎么刷的 编辑:程序博客网 时间:2024/06/03 18:59
扩展欧几里德求逆元 hdoj 1576
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1576
题目思路:自学了扩展欧几里德后,遇到题目就有点感觉,mod除数没办法做就求其逆元来求解,在2016年百度之星资格赛的第一题,也有类似的思想。
若没有接触过扩展欧几里德,可以点击:
http://blog.csdn.net/qq_33199236/article/details/51429013
ac代码:
#include <stdio.h>#include <math.h>#include <string.h>#include <algorithm>#include <iostream>#include <vector>using namespace std;#define INF 0x3f3f3f3f#define N 10000#define PI 3.1415927#define mod 9973int exgcd(int a,int b,int& x,int& y){ if(b == 0) { x = 1; y = 0; return a; } int d = exgcd(b, a%b ,x ,y); int temp = x; x = y; y = temp - a/b*y; return d;}int inv[N];int main(){//---------------------------------------- inv[0]=0,inv[1]=1; for(int i=2;i<=mod+10;i++) { inv[i]=inv[mod%i]*(mod-mod/i)%mod; }//---------------------------------------- int t; scanf("%d",&t); while(t--) { int a,b; scanf("%d%d",&a,&b); int x,y; exgcd(b,mod,x,y); while(x < 0) x += mod; int ans; ans = a * x % mod; printf("%d\n",ans); } return 0;}
上面有部分是可以快速求乘法逆元的模版。
inv[i] 就为 i 的逆元
inv[0]=0,inv[1]=1; for(int i=2;i<=mod+10;i++) { inv[i]=inv[mod%i]*(mod-mod/i)%mod; }
1 0
- 扩展欧几里德求逆元 hdoj 1576
- 扩展欧几里德求逆元,快速幂 hdoj 1211
- 扩展欧几里德应用 hdoj 1222
- HDOJ-----1576拓展欧几里德
- HDOJ 2669 Romantic (扩展欧几里德)
- 扩展欧几里德求不定方程 hdoj 2669
- 扩展欧几里德求逆元模版
- 扩展欧几里德求逆元
- 扩展欧几里德求逆元模板
- 扩展欧几里德求逆元
- 扩展欧几里德,求逆元模板
- 欧几里德和扩展欧几里德
- 欧几里德, 与 扩展欧几里德
- 欧几里德|扩展欧几里德
- 欧几里德&&扩展欧几里德详解
- 欧几里德&&扩展欧几里德
- 扩展欧几里德
- 扩展欧几里德
- Android学习记录(十六) recyclerview 滑动慢的问题。
- 【LeetCode-191】 Number of 1 Bits(C++)
- 大数定律
- 快速幂算法
- (不易)POJ-2392 sort预处理+多重部分和
- 扩展欧几里德求逆元 hdoj 1576
- Struts2中 Result类型配置详解一+++++struts.xml配置详解二
- (OK) Spend Leap Day with TACO + VS Code (visual studio code) - Cordova
- 【Android学习笔记】Android中View的事件分发机制
- C语言编译原理简介
- 听说访问量过1w要发帖....
- 感知机学习算法初步1
- Android录音播放、停止
- C++的继承