基于递归模板求GCD的方法
  • 板块P2660 zzc 种田
  • 楼主Au_Gold
  • 当前回复3
  • 已保存回复3
  • 发布时间2024/10/9 18:47
  • 上次更新2024/10/9 20:51:01
查看原帖
基于递归模板求GCD的方法
1112952
Au_Gold楼主2024/10/9 18:47
ll gcd(ll a, ll b) // 递归求gcd的模板,改成循环也一样
{
    if (b == 0)
        return a;
    else
    {
        ans += (a / b) * b * 4; //只在这里对答案进行计算
        //(a/b) 为每次能分割出的相同的长度为b的正方形的数量,再乘上边长b和四条边
        return gcd(b, a % b);
    }
}

void solve()
{
    cin >> x >> y;
    if (x < y) // 令x>=y,这是我们要始终保持gcd(a,b)中a>=b
        swap(x, y);
    ll a = gcd(x, y);
    cout << ans << endl;
}
2024/10/9 18:47
加载中...