7

方程式a + bx = c + dyでは、すべての変数は整数です。abc、およびdが知られています。xとの積分解を見つけるにはどうすればよいyですか? b私の考えが正しければ、との最小公倍数で区切られた解は無数にありますが、d必要なのは 1 つの解だけで、残りは計算できます。次に例を示します。

a = 2
b = 3
c = 4
d = 5
a + bx: (2, 5,  8, 11, 14)
c + dy: (4, 9, 14, 19, 24)

a + bx intersects c + dy at 14, so:
x = 4
y = 2

現在、 (疑似コード)xの整数値が見つかるまで、整数値をループしています。y

function integral_solution(int a, int b, int c, int d) {
    // a + bx == c + dy
    // (a + bx - c) / d == y

    // Some parameters may have no integral solution,
    // for example if b == d and (a - c) % b != 0
    // If we don't have a solution before x == d, there is none.

    int x = 0;
    while (x < d)
    {
        if ((a + bx - c) % d == 0)
        {
            return [x, (a + bx - c) / d];
        }
        x++;
    }
    return false;
}

これを行うためのより良い方法があるように感じます。ループなしで x と y を見つける方法はありますか? それが重要であれば、私はC++を使用しています。

4

1 に答える 1