求助,80分,为啥两个点死活过不去
查看原帖
求助,80分,为啥两个点死活过不去
510070
keqing_yysd楼主2023/10/7 21:27

各位大佬,为什么我是80分啊,我所有情况都考虑到了吧。

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

long double a, b, l, mn = 0x3f3f3f3f, ansa, ansb;
int gcd(int x, int y){
    if (x == 0)
        return y;
    if (y == 0)
        return x;
    return gcd(max(x, y) % min(x, y), min(x, y));
}
int main() {
    cin >> a >> b >> l;
    long double f = 1.0 * a / b;
    for (long double i = 1; i <= l; i++) {
        for (long double j = 1; j <= l; j++) {
            if (abs(f - 1.0 * i / j) < mn && gcd(int(i), int(j)) == 1)
                ansa = i, ansb = j, mn = abs(f - 1.0 * i/ j);
        }
    }
    cout << (int)ansa << ' ' << (int)ansb << endl;
    return 0;
}
2023/10/7 21:27
加载中...