• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
村雨sup
自己选的路,跪着也要走完 XD
博客园    首页    新随笔    联系   管理    订阅  订阅
gcd 与 扩gcd 总结

gcd 定理的证明:

模板:

ll gcd(ll a,ll b)
{
    if(b == 0) return a;
    else return gcd(b,a%b);
}

 

 扩gcd证明:

模板:

ll extgcd(ll a,ll b,ll &x,ll &y)
{
    ll d = a;
    if(b == 0)
    {
        x = 1;
        y = 0;
    } 
    else
    {
        d = extgcd(b,a%b,y,x);
        y -= (a/b)*x;
    }
    return d;
}

 

解题规律:

首先化为 ax+by = c 的形式,一般采用增加常量的方式,然后把a,b,x,y 代入extgcd 模板,返回的是d = gcd(a,b)

得到的x 是 ax+by = gcd(a,b)=d 的一个解,这时候两边同时乘以c/d就能得到解x’ = x * c/d

posted on 2018-02-03 22:01  村雨sup  阅读(101)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3