Link Search Menu Expand Document
あるまかんライブラリ

:heavy_check_mark: extgcd() (拡張ユークリッドの互除法)
(Math/Number-Theory/extgcd.hpp)

Verified with

Code

#pragma once

/**
 * @brief extgcd() (拡張ユークリッドの互除法)
 * ax + by = gcd(a, b) の整数解 (x, y) を引数に格納する
 */
template <class T>
T extgcd(T a, T b, T& x, T& y) {
    T g = a;
    if (b != 0) {
        g = extgcd(b, a % b, y, x);
        y -= (a / b) * x;
    } else {
        x = 1;
        y = 0;
    }
    return g;
}
#line 2 "Math/Number-Theory/extgcd.hpp"

/**
 * @brief extgcd() (拡張ユークリッドの互除法)
 * ax + by = gcd(a, b) の整数解 (x, y) を引数に格納する
 */
template <class T>
T extgcd(T a, T b, T& x, T& y) {
    T g = a;
    if (b != 0) {
        g = extgcd(b, a % b, y, x);
        y -= (a / b) * x;
    } else {
        x = 1;
        y = 0;
    }
    return g;
}
Back to top page