-3

3 つの long int 変数 a、b、c を入力できるコードを作成しようとしています。コードは ax+by = c となるようにすべての整数 (x,y) を検出する必要がありますが、入力値は 2*10^9 まで可能です。これを効率的に行う方法がわかりません。私のアルゴリズムは O(n^2) です。これは、このような大きな入力には非常に適していません。どうすればもっとうまくできますか?これが私のコードです-

typedef long int lint;

struct point
{
lint x, y;
};

int main()
{
lint a, b, c;
vector <point> points;
cin >> c >> a >> b;
for(lint x = 0; x < c; x++)
    for(lint y = 0; y < c; y++)
    {
        point candidate;
        if(a*x + b*y == c)
        {
            candidate.x = x;
            candidate.y = y;
            points.push_back(candidate);
            break;
        }
    }
}
4

1 に答える 1