50分求助
查看原帖
50分求助
798979
UIYZi楼主2023/2/26 20:37

24568全wa,我看有人说gcd会TLE, 但我这里没有.已经想不到哪里还有坑了

#include <bits/stdc++.h>
#define int long long
using namespace std;
signed main()
{
    int n, m;
    long double xy;
    cin >> n >> m >> xy;

    long double _min = 1;
    int df = 0, ix = xy, iy = 1;
    for( int i = 1; i <= m; i ++ )
    {
        long double ni = xy * (double)i;
        int ini = ni;
        long double tmp = ni - ini;
        if( tmp > 0.5 )
        {
            tmp = 1 - tmp;
            ini ++;
        }

        if( ini > n ) break;

        tmp /= (double)i;
        if( tmp < _min )
        {
            _min = tmp;
            if( __gcd( ini, i ) > 1 || (ini*2 <= n && i * 2 <= m) ) df = 1;
            else df = 0;
            ix = ini;
            iy = i;
        }
    }
    if( df ) cout << "TOO MANY";
    else cout << ix << '/' << iy;


    return 0;
}

2023/2/26 20:37
加载中...