P1298!80pts求助!
  • 板块题目总版
  • 楼主damuzhi
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/3/22 22:37
  • 上次更新2024/3/23 09:32:34
查看原帖
P1298!80pts求助!
1127424
damuzhi楼主2024/3/22 22:37

3,5WA

#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 aa = 1;
    double bb = 3;
    //cout << aa/bb << endl << endl;
    double c;
    cin >> a >> b >> c;
    if(c == sswr(c)){
        cout << "TOO MANY";
        return 0;
    }
    //int minn = a / c + 1;
    // if(b > minn)
    //     b = minn;
    an ans;
    ans.ans = -100000000000;
    ans.con = 0;
    for(double i = 1; i <= b; i++){
            double x = 1.0000000 / i;
            x = c / x;//分子
            int fz = sswr(x);

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

            an tmp;
            tmp.con = whi(ans.ans,x,c);
            // if(i <= 50){
            //     cout << tmp.con << endl;
            // }
            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 << setprecision(30)<<ans.ans2 << '/' << ans.ans1;
    }
    else{
        cout << "TOO MANY";
    }
    return 0;
}
2024/3/22 22:37
加载中...