QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#583973#9381. 502 Bad GatewayRikkualTL 0ms0kbC++143.2kb2024-09-23 00:55:512024-09-23 00:55:52

Judging History

你现在查看的是最新测评结果

  • [2024-09-24 14:55:37]
  • hack成功,自动添加数据
  • (/hack/886)
  • [2024-09-23 00:55:52]
  • 评测
  • 测评结果:TL
  • 用时:0ms
  • 内存:0kb
  • [2024-09-23 00:55:51]
  • 提交

answer

#include <bits/stdc++.h>
// #pragma GCC optimize(2)
#ifndef ONLINE_JUDGE
    #define Debug
#endif
#define multiple_test 1
#define int int64_t
const int MAXN = 1e6, N = MAXN + 10;
const int MOD = 1e9 + 7;
const int INF = 0x3f3f3f3f3f3f3f3fll;
using namespace std;

struct Frac {
    int num, den;
    Frac(int _num = 0, int _den = 1): num(_num), den(_den) {
        if(den < 0) {
            num = -num; den = -den;
        }
    }
    void gcd() {
        int g = __gcd(num, den);
        num /= g; den /= g;
    }
    operator double() const {
        return 1.0 * num / den;
    }
    Frac &operator+=(const Frac &rhs) {
        num = num * rhs.den + rhs.num * den;
        den *= rhs.den;
        return *this;
    }
    Frac &operator-=(const Frac &rhs) {
        num = num * rhs.den - rhs.num * den;
        den *= rhs.den;
        return *this;
    }
    Frac &operator*=(const Frac &rhs) {
        num *= rhs.num;
        den *= rhs.den;
        return *this;
    }
    Frac &operator/=(const Frac &rhs) {
        num *= rhs.den;
        den *= rhs.num;
        if(den < 0) {
            num = -num; den = -den;
        }
        return *this;
    }
    friend Frac operator+(Frac lhs, const Frac &rhs) {
        return lhs += rhs;
    }
    friend Frac operator-(Frac lhs, const Frac &rhs) {
        return lhs -= rhs;
    }
    friend Frac operator*(Frac lhs, const Frac &rhs) {
        return lhs *= rhs;
    }
    friend Frac operator/(Frac lhs, const Frac &rhs) {
        return lhs /= rhs;
    }
    friend Frac operator-(const Frac &a) {
        return Frac(-a.num, a.den);
    }
    friend bool operator==(const Frac &lhs, const Frac &rhs) {
        return lhs.num * rhs.den == rhs.num * lhs.den;
    }
    friend bool operator!=(const Frac &lhs, const Frac &rhs) {
        return lhs.num * rhs.den != rhs.num * lhs.den;
    }
    friend bool operator<(const Frac &lhs, const Frac &rhs) {
        return lhs.num * rhs.den < rhs.num * lhs.den;
    }
    friend bool operator>(const Frac &lhs, const Frac &rhs) {
        return lhs.num * rhs.den > rhs.num * lhs.den;
    }
    friend bool operator<=(const Frac &lhs, const Frac &rhs) {
        return lhs.num * rhs.den <= rhs.num * lhs.den;
    }
    friend bool operator>=(const Frac &lhs, const Frac &rhs) {
        return lhs.num * rhs.den >= rhs.num * lhs.den;
    }
    friend ostream &operator<<(ostream &os, Frac x) {
        x.gcd();
        os << x.num << " " << x.den;
    }
};

inline void solve() {
    int n; cin >> n;
    
    auto calc = [&](int x) {
        Frac res(x * x - x + 2 * n, 2 * x);
        return res;
    };

    double x = sqrt(2 * n);
    Frac res = min(calc(int(x)), calc(ceil(x)));
    cout << res << "\n";
}

signed main() {
#ifndef ONLINE_JUDGE
    // freopen("in.txt", "r", stdin);
    // freopen("out.txt", "w", stdout);
    clock_t start_time = clock();
#else
    ios::sync_with_stdio(false);
    cin.tie(nullptr); cout.tie(nullptr);
#endif 
    int t = 1; if(multiple_test) cin >> t;
    while(t--) {
        solve();
    }
#ifndef ONLINE_JUDGE
    cout << "Used " << clock() - start_time << " ms" << endl;
#endif
    return 0;
}

详细

Test #1:

score: 0
Time Limit Exceeded

input:

3
1
2
3

output:

1 11 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 0...

result: