模板-->扩展欧几里得

如果有相应的OJ题目,欢迎同学们提供相应的链接

相关链接

简单的测试

None

代码模板

/*
 * TIME COMPLEXITY:O(logN)
 * PARAMS:
 *      a
 *      b
 *      x
 *      y
 *
 * ax+by=gcd(a,b)
 * gcd(a,b)=gcd(b,a%b)
 * ax+by=gcd(a,b),bx'+a%by'=gcd(b,a%b)=bx'+(a-a/b*b)y'=ay'+b(x'-a/by')
 * x=y' y=x'-a/by'
 */
int extend_gcd(int a,int b,int &x,int &y){
    if(b==0){
        x=1,y=0;
        return a;
    }else{
        int r=extend_gcd(b,a%b,y,x);//skill. x=y' y=x'-a/by' ==> x=x' y=y'-a/bx'
        y-=a/b*x;
        return r;
    }
}
posted @ 2016-05-29 20:11  xiaocai888  阅读(106)  评论(0编辑  收藏  举报