首页 > 编程知识 正文

裴蜀定理,思品课浅课深讲与深课浅讲

时间:2023-05-04 19:09:40 阅读:168763 作者:1878

我在这里证明不解释。 因为这篇文章的目的是为了方便地理解pgddzp定理。

可以在算法问题上使用了。 主要针对解决问题。

pgddzp定理(又称drdqz定理)

对于特殊性:方程ax by=1,只有当整数a和b互为质时,方程才具有整数解。

pgddzp定理的证明视频

pgddzp定理的证明文章

扩展蓝色朋友算法是为了用已知的a、b求解一组x、y,使它们满足pgddzp(DRDqz )等式。 axby=gcd ) a,b )=d

扩展lsdhm算法——exgcd

877. 扩展lsdhm算法

3359 www.AC wing.com/problem/content/description/879 /

# include cstdio # includeiostreamusingnamespacestd; intexgcd(inta,int b,int x,int y ) ) if (! b ) ) x=1,y=0; return a; (intd=EXgcd ) b、a%b、y、x ); y=y-a/b*x; 返回d; (intmain ) void ) ) { int t; cint; while(t-- ) { int a、b、x、y; cinab; exgcd(a,b,x,y ); coutx' 'yendl; } return 0; } # include bits/stdc.husingnamespacestd; intexgcd(inta,int b,int x,int y ) ) if (! b ) return x=1,y=0,a; intd=exgcd(b,a%b,y,x ); y=y-a/b*x; 返回d; (intmain ) void ) { int n; cinn; while(n-- ) { int a、b、x、y; cinab; exgcd(a,b,x,y ); coutx' 'yendl; } return 0; (878 .线性同余方程

3359 www.AC wing.com/problem/content/880 /

这不是pgddzp定理吗? 我知道1可以用扩展的lsdhm来求解。 和上面的一样。

但是这里是b。 先求axmy=gcd(a,m ),最后乘以倍数就可以了。

我们平时都要求这样的事情。

那么,这里也同样求出一个x,再乘以另一个数就是b即xxb/gcd(a,m )

注意的是:b必须是gcd(a,m )的倍数。 如果不是倍数,在求x的过程中会乘以小数。 那样的话x不是整数。

主题明确给出的x必须是整数。

结果取m模,为了防止InTax%m==(a*x%m ) ) m破裂,结果需要取m模

# include cstdio # include iostream # includealgorithmusingnamespacestd; typedef long long int LL; llexgcd(lla,LL b,LL x,LL y ) { if (! b ) ) x=1,y=0; return a; (intd=EXgcd ) b、a%b、y、x ); y=y-a/b*x; 返回d; (intmain ) void ) ) { int t; cint; wile(t-- ) lla,b,m; cinabm; LX,y,d; d=exgcd(a,m,x,y ); if(b%d ) cout'impossible'endl; else coutx*b/d%mendl; } return 0; } # include bits/stdc.husingnamespacestd; typedef long long int LL; llexgcd(lla,LL b,LL x,LL y ) { if (! b ) return x=1,y=0,a; intd=exgcd(b,a%b,y,x ); y=y-a/b*x; 返回d; (intmain ) void ) ) { int n; cinn; while(n-- ) lla,b,m,x,y,d; cinabm; d=exgcd(a,m,x,y ); if(b%d ) puts ) ) impossible ); else coutx*b/d%mendl; } return 0; }

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。