您的位置:首页 > 其它

扩展欧几里得

2011-04-10 10:58 267 查看
/*==================================================*/
| 求ax+by=z的整数解
| CALL:void ex_gcd(x,y,a,b);
| a、b为未知数。有解的前提是xy的最大公约数是z的约数。
/*==================================================*/
__int64 Z;
void ex_gcd(__int64 x,__int64 y,__int64 &a,__int64 &b){
__int64 t=x%y;
if(!t){
a=0;b=Z/y;
}else{
ex_gcd(y,t,a,b);t=a;a=b;b=t-b*(x/y);
}
}
/*==================================================*/
| 把a调整为不小于0的最小值
| CALL:void adjust_gcd(x,y,a,b);
/*==================================================*/
int ex_gcd_A(__int64 x,__int64 y){
__int64 a,b;
ex_gcd(x,y,a,b);
a=(a%y+y)%y;
return a;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  扩展