算法基础之线性同余方程
2023-12-22 18:49:17
线性同余方程
-
核心思想:
-
转化为扩展欧几里得 求得结果d 必须为 b的因数
-
#include<iostream> #include<algorithm> using namespace std; typedef long long LL; const int N = 100010; int exgcd(int a,int b,int &x,int &y) { if(!b) { x = 1 ,y = 0; return a; } else { int d = exgcd(b, a % b , y , x); y -= a/b * x; return d; } } int main() { int n; cin>>n; while(n--) { int a,b,m,x,y; scanf("%d %d %d", &a, &b, &m); //输入abm 其中am 为参数 int d = exgcd(a,m,x,y); if(b % d) puts("impossible"); //如果b不是d的倍数 那么无解 else cout<<(LL) x*b/d % m<<endl; //将x乘上系数 b/d 为了保证结果在int内要%m } }
-
文章来源:https://blog.csdn.net/Pisasama/article/details/135157952
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!