超时我能理解,但为啥wa了一个点?
查看原帖
超时我能理解,但为啥wa了一个点?
524191
Man_CCNU楼主2022/1/12 10:11
#include<iostream>

using namespace std;

const int N = 1e5 + 10;
int a[N], n, m, idx, res;

int gcd(int x, int y)
{
    return y == 0 ? x : gcd(y, x % y);
}
int getMib(int x, int y)
{
    int i = 1;
    while (i*y<=1e5) {
        if (i * y % x == 0) {
            return i * y;
        }
        i++;
    }

    return -1;
}
int main()
{
    cin >> n >> m;
    int i = 1;
    while (n*i <= m) {
        a[++idx] = n * i;
        i++;
    }
    for (int i = 1; i < idx; i++) {
        for (int j = i + 1; j <= idx; j++) {
            int x = a[i], y = a[j];
            int gcd_ = gcd(x, y);
            if (gcd_ != n) continue;
            int mi = getMib(x, y);
            if (mi == m) res++;
        }
    }
    res = res + res;
    cout << res << endl;

    return 0;
}
2022/1/12 10:11
加载中...