扩展欧几里得模板

 先推荐我看到的一篇博客:链接:个人理解---扩展欧几里德定理 - 西瓜不懂柠檬的酸 - 博客园  http://www.cnblogs.com/zhengguiping--9876/p/5308276.html

建议先看下面的,在看上面的博客。

我们的学长给的:

贝祖等式:

c=gcd(a,b)

dc的倍数时

ax+by=d恒有整数解

所有解中,有且仅有一个解(x,y)满足且-b<=x<=b,-a<=y<=a

 

 

扩展欧几里得算法:

在求c=gcd(a,b)时,同时求出贝祖等式:ax+by=c的一个整数解(所以扩欧有个参数)

原理演示:

18x+5y=1的解

18%5=3,18=5*3+3,3=18+5*(-3)

5%3=2,5=3*1+2,2=5+3*(-1)

3%2=1,3=2*1+1,1=3+2*(-1)

然后从下向上进行处理

1=3+2*(-1)

1=3+(5+3*(-1))*(-1) (代入第二个式子)

 =3*2+5*(-1)

1=(18+5*(-3))*2+5*(-1)(代入第一个式子)

 =18*2+5*(-7)

(2,-7)为一个解

建议自己选几个数据算一算

ll exgcd(ll a,ll b,ll& d,ll& x,ll& y)

{

       if(!b){d=a,x=1,y=0;}

       else

       {

              exgcd(b,a%b,d,y,x);

              y-=x*(a/b);

       }

}

猜你喜欢

转载自www.cnblogs.com/6262369sss/p/8981787.html