http://acm.hdu.edu.cn/showproblem.php?pid=2669
分析:
扩展欧几里得求乘法逆元水题
AC代码:
#include <iostream>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <vector>
#include <stack>
#include <queue>
#include <map>
#include <set>
#include<list>
#include <bitset>
#include <climits>
#include <algorithm>
#define gcd(a,b) __gcd(a,b)
#define FIN freopen("input.txt","r",stdin)
#define FOUT freopen("output.txt","w",stdout)
typedef long long LL;
const LL mod=1e9+7;
const int INF=0x3f3f3f3f;
const double PI=acos(-1.0);
using namespace std;
LL GCD(LL a,LL b,LL &x,LL &y){
if (b==0){
x=1;
y=0;
return a;
}
LL ans=GCD(b,a%b,y,x);
y-=(a/b)*x;
return ans;
}
int main (){
LL a,b;
LL x,y;
while (scanf ("%lld%lld",&a,&b)!=EOF){
if (GCD(a,b,x,y)==1){
x=(x%b+b)%b;
y=(1-a*x)/b;
printf ("%lld %lld\n",x,y);
}
else {
printf ("sorry\n");
}
}
return 0;
}
本文介绍了一道关于扩展欧几里得算法求解乘法逆元的编程题,并给出了详细的代码实现。通过该算法可以高效地解决整数线性方程组问题。
4452

被折叠的 条评论
为什么被折叠?



