社区讨论

40分求教!P1298

题目总版参与者 2已保存回复 1

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
1 条
当前快照
1 份
快照标识符
@lu2jefog
此快照首次捕获于
2024/03/22 18:47
2 年前
此快照最后确认于
2024/03/22 20:25
2 年前
查看原帖
CPP
#include <bits/stdc++.h>

using namespace std;


struct ret{
    double a;
    long long b;
};

double whi(double a,double b,double x){
    double f = abs(x - a);
    double s = abs(x - b);
    if(f < s)
        return a;
    if(f > s)
        return b;
    return -1;
}

struct an{
    double ans1;
    double ans2;
    double ans;
    double con;
};


long long sswr(double a){
    double c = a;
    int b = a;
    c -= b;
    if(c < 0.5)
        return b;
    return b+1;
}

int main() {
    //cout << whi(3.14159,3.14035,3.141592653589) << endl;
    long long a,b;
    double c;
    cin >> a >> b >> c;
    //int minn = a / c + 1;
    // if(b > minn)
    //     b = minn;
    an ans;
    ans.ans = -100000000000;
    ans.con = 0;
    for(long long i = 1; i <= b; i++){
            double x = 1.00 / i;
            x = c / x;//分子
            long long fz = sswr(x);

            if(fz > a){
                fz--;
                if(fz>a){
                    fz--;
                    if(fz>a){
                        break;
                    }
                }
            }
            x = 1.00/i;
            x *= fz;

            an tmp;
            tmp.con = whi(ans.ans,x,c);
            if(tmp.con != -1 && tmp.con == x){
                ans.ans = tmp.con;
                ans.ans1 = i;
                ans.ans2 = fz;
                ans.con = 0;
            }
            else{
                ans.con = -1;
            }
        }
    if(ans.ans != -1){
        cout << ans.ans2 << '/' << ans.ans1;
    }
    else{
        cout << "TOO MANY";
    }
    return 0;
}

回复

1 条回复,欢迎继续交流。

正在加载回复...