QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#501149#5152. Circular Caramel CookieInk_baiWA 0ms3872kbC++202.2kb2024-08-02 14:51:272024-08-02 14:51:28

Judging History

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

  • [2024-08-02 14:51:28]
  • 评测
  • 测评结果:WA
  • 用时:0ms
  • 内存:3872kb
  • [2024-08-02 14:51:27]
  • 提交

answer

// #include <bits/stdc++.h>
// #define G2 1.41421356237
// #define int long long
// using namespace std;

// signed main() {
//     int n;
//     cin >> n;
//     if(n % 4 == 0) n += 1;
//     long double l = 1, r = n;
//     if(l <= G2) l = G2;
//     // cout << l << ' ' << r << endl;
//     while (l + 1e-9 < r) {
//         long double m = (l + r) / 2;
//         // cout << l << ' ' << r << ' ' << m << endl;
//         int sum = 0, t = 1;
//         if(m > 100) t = m - 10;
//         for(int i = t + 1; i <= m; i++) {
//             for(int j = 1; j <= m; j++) {
//                 if(i*i + j*j <= m*m) {
//                     sum++;
//                     // cout << i << ' ' << j << endl;
//                 }
//             }
//         }
//         for(int i = t + 1; i <= m; i++) {
//             for(int j = 1; j <= t; j++) {
//                 if(i*i + j*j <= m*m) {
//                     sum++;
//                 }
//             }
//         }
//         sum += t * t;
//         // cout << sum << endl;
//         if(sum * 4 >= n) {
//             r = m;
//         } else {
//             l = m;
//         }
//     }
//     cout << fixed << setprecision(10) << l << endl;
//     return 0;
// }

#pragma GCC optimize("Ofast")
#include <bits/stdc++.h>
#define G2 1.41421356237
#define int long long
using namespace std;

signed main() {
    ios::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
    int n;
    cin >> n;
    if(n % 4 == 0) n += 1;
    long double l = 1, r = n;
    if(l <= G2) l = G2;
    
    while (r - l < 1e-7) {
        long double m = (l + r) / 2;
        int sum = 0;
        int m_int = (int)m;
        int tt = 1;
        if(n >= 10000) tt = m_int/G2;
        else tt = m_int;
        
        for (int i = 1; i <= tt; ++i) {
            int max_j = sqrt(m * m - i * i);
            sum += max_j;
        }
        
        if(n >= 10000) sum = 2 * sum - tt * tt;
        
        sum *= 4;
        
        if(sum >= n) {
            r = m;
        } else {
            l = m;
        }
    }
    
    cout << fixed << setprecision(10) << l << endl;
    return 0;
}


Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 0
Wrong Answer
time: 0ms
memory: 3872kb

input:

11

output:

1.4142135624

result:

wrong answer 1st numbers differ - expected: '2.2360680', found: '1.4142136', error = '0.3675445'