【codevs1200】 NOIP2012—同余方程
2016-09-14 22:20
211 查看
codevs.cn/problem/1200/ (题目链接)
题意:求关于 x 的同余方程 ax ≡ 1 (mod b)的最小正整数解。
Solution
这道题其实就是求a mod b的逆元x。所谓逆元其实很简单,记a的关于模p的逆
元为a^-1,则a^-1满足aa^-1≡ 1(mod p),用扩展欧几里德即可。
关于扩展欧几里德,有博客写了证明:blog.csdn.net/lincifer/article/details/49391175
代码:
题意:求关于 x 的同余方程 ax ≡ 1 (mod b)的最小正整数解。
Solution
这道题其实就是求a mod b的逆元x。所谓逆元其实很简单,记a的关于模p的逆
元为a^-1,则a^-1满足aa^-1≡ 1(mod p),用扩展欧几里德即可。
关于扩展欧几里德,有博客写了证明:blog.csdn.net/lincifer/article/details/49391175
代码:
// codevs1200 #include<algorithm> #include<iostream> #include<cstdlib> #include<cstring> #include<cstdio> #include<cmath> #define LL long long #define inf 2147483640 #define Pi 3.1415926535898 #define free(a) freopen(a".in","r",stdin),freopen(a".out","w",stdout); using namespace std; void exgcd(LL a,LL b,LL &x,LL &y) { if (b==0) {x=1;y=0;return;} exgcd(b,a%b,x,y); LL t=x;x=y;y=t-a/b*y; } int main() { LL x,y,a,b; scanf("%lld%lld",&a,&b); exgcd(a,b,x,y); printf("%lld",(x+b)%b); return 0; }
相关文章推荐
- 【codevs1200】 NOIP2012—同余方程
- Codevs 1200 同余方程 2012年NOIP全国联赛提高组
- 同余方程(codevs 1200)
- 同余方程 (codevs1200)
- 【倍增】【set】[NOIP2012] codevs1199 开车旅行
- CODE[VS] 1198【NOIP2012】 国王游戏(贪心
- 【扩展欧几里得】Codevs 1200: [noip2012]同余方程
- codevs 1198 NOIP 2012 国王的游戏 高精度 解题报告
- 【codevs1217】【noip2012提高day2T2】借教室——线段树做法
- [NOIP2012][CODEVS1218]疫情控制(二分+倍增+贪心)
- codevs 1200 同余方程 逆元
- codevs1200 NOIP2012D2T1 同余方程
- 【codevs 1200】【NOIP 2012】同余方程 拓展欧几里德求乘法逆元模板题
- 【扩展欧几里得】Codevs 1200: [noip2012]同余方程
- 扩展gcd codevs 1200 同余方程
- 【NOIP2012】codevs1217 借教室
- codevs1218: [NOIP2012]疫情控制
- 同余方程 (codevs1200)
- [NOIP2012提高组] CODEVS 1200 同余方程(扩展欧几里德算法)
- 【贪心+高精度】NOIP2012D1T2国王游戏Codevs1198