您的位置:首页 > 其它

gcd欧几里得,线性模方程

2014-06-19 12:09 148 查看
int gcd(int a,int b){
return b?gcd(b,a%b):a;
}
void exgcd(int a,int b,int &d,int &x,int &y){
if(!b){x=1;y=0;d=a;}
else{exgcd(b,a%b,d,y,x);y-=a/b*x;}
}
//r是(a/d)在模(n/d)意义下的逆
int linear_modular(int a,int b,int n){
int r,s,d;
exgcd(a,n,d,r,s);
if(b%d)return -1;
else return (r*(b/d)+n*abs(r))%(n/d);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: