洛谷題單指南-數學基礎問題-P1029 [NOIP2001 普及組] 最大公約數和最小公倍數問題

江城伍月發表於2024-04-11

原題連結:https://www.luogu.com.cn/problem/P1029

題意解讀:已知x,y,求有多少對p、q,使得p、q的最大公約數為x,最小公倍數為y。

解題思路:

列舉法即可。

列舉的物件:列舉p,且p必須是x的倍數,還有p <= y

q的計算:q = x * y / p,

q要存在,必須x * y % p == 0,且gcd(p, q) == x

100分程式碼:

#include <bits/stdc++.h>
using namespace std;

long long x, y, ans;

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

int main()
{
    cin >> x >> y;
    for(int p = x; p <= y; p += x)
    {
        if(x * y % p == 0 && gcd(p, x * y / p) == x)
        {
            ans++;
        }
    }
    cout << ans;
    return 0;
}

相關文章