extendgcd模板
2015-11-19 08:58
288 查看
看了数论第一章,终于搞懂了扩展欧几里德,其实就是普通欧几里德的逆推过程。
还有大神写的超简洁版本:
//顺便加两个公式
//a>1,m,n>0,gcd( am - 1 ,an - 1 ) = agcd(m,n) -1
//a>b,gcd(a,b) = 1, gcd(am-bm,an-bn) = agcd(m,n) - bgcd(m,n)
// ax+by = gcd(a,b) ->求解x,y 其中a,b不全为0,可以为负数 // 复杂度:O(log2a) void extendgcd(ll a,ll b,long long &x,long long &y) { if(a%b==0) { //到了终止条件 x=0; y=1; return ; } extendgcd(b,a%b,x,y); long long tmpx; tmpx=y; y=x-(a/b)*y; x=tmpx; }
还有大神写的超简洁版本:
//ax + by = gcd(a,b) //传入固定值a,b.放回 d=gcd(a,b), x , y void extendgcd(long long a,long long b,long long &d,long long &x,long long &y) { if(b==0){d=a;x=1;y=0;return;} extendgcd(b,a%b,d,y,x); y-=x*(a/b); }
//顺便加两个公式
//a>1,m,n>0,gcd( am - 1 ,an - 1 ) = agcd(m,n) -1
//a>b,gcd(a,b) = 1, gcd(am-bm,an-bn) = agcd(m,n) - bgcd(m,n)
相关文章推荐
- android——Fragment实现懒加载
- OC之继承、初始化、便利构造器
- HTML常用标签
- 工作周报067
- java对mongodb的基础操作(1)
- Linux终端打印的常用命令echo和printf
- 大小端模式
- JavaScript DOM编程艺术—javascript实现移动元素动画
- House Robber
- my_zshrc
- excel to DataSet
- 代理模式(Proxy Pattern)
- 浅谈 java中ArrayList、Vector、LinkedList的区别联系
- FLV文件格式解析
- Thread、AsycTask、IntentService的比较
- NSXMLParser解析XML数据
- HTTP403(禁止访问)---WampServer 127.0.0.1 禁止访问
- webview 调用js 4.2之前与之后的区别
- windows下apache+php+mysql 环境配置方法
- object references an unsaved transient instance