QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#436580#8785. Fake Coin and Lying Scalesucup-team1198#WA 12ms4080kbC++201.4kb2024-06-09 01:57:042024-06-09 01:57:05

Judging History

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

  • [2024-06-09 01:57:05]
  • 评测
  • 测评结果:WA
  • 用时:12ms
  • 内存:4080kb
  • [2024-06-09 01:57:04]
  • 提交

answer

#include <map>
#include <set>
#include <array>
#include <cmath>
#include <deque>
#include <bitset>
#include <random>
#include <string>
#include <vector>
#include <cassert>
#include <complex>
#include <iomanip>
#include <iostream>
#include <algorithm>
#include <unordered_map>
#include <unordered_set>

using namespace std;


using ld = double;

const ld PI = atan2l(0, -1);

ld fact(int x) {
    if (x == 0) return 0;
    return log(2 * PI * x) / 2 + x * log(x) - x;
}

ld C(int n, int k) {
    return fact(n) - fact(k) - fact(n - k);
}

ld add(ld p, ld q) {
    if (p > q) swap(p, q);
    return q + log(1 + exp(p - q));
}

const int D = 100;

void solve() {
    int n, k;
    cin >> n >> k;
    ld cur = 0;
    int len = (n + D - 1) / D;
    k = min(k, n);
    for (int i = k + 1; i <= n; i += len) {
        int L = i, R = min(n + 1, i + len);
        ld res = C(n, L);
        if (R - L < 50) {
            res += L * log(2) + log((1ll << (R - L)) - 1);
        } else {
            res += R * log(2);
        }
        cur = add(cur, res);
    }
    ld ans = log(3 * k + 1) + cur;
    /// ans += n * log(3);
    cout << ans << "\n";
}

int main() {
  ios::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);

  cout << fixed << setprecision(20);

  int tst;
  cin >> tst;
  while (tst--) {
    solve();
  }

  
  return 0;
}

详细

Test #1:

score: 100
Accepted
time: 1ms
memory: 4072kb

input:

2
100 0
100 1

output:

109.86420456950420998510
111.25049893062410433231

result:

ok q=0 (2 test cases)

Test #2:

score: -100
Wrong Answer
time: 12ms
memory: 4080kb

input:

10000
32 6
45 98
67 57
35 70
29 3
22 81
59 12
48 16
63 69
99 36
60 36
32 47
73 91
81 30
7 7
71 57
38 60
35 19
92 40
3 17
21 71
54 62
95 67
60 50
10 20
19 80
64 73
10 21
70 97
84 3
26 22
38 47
37 38
31 91
11 37
73 17
75 98
8 74
73 60
87 10
94 48
35 73
18 14
88 25
61 54
39 59
100 90
70 98
73 21
92 11
...

output:

38.10980185282380006129
4.91265488573605235700
70.18192349477898517307
4.66343909411206691829
34.17321548983107248887
4.20469261939096572434
68.43416246131671698549
56.63155608365634918755
5.24702407216048616334
113.45697085344176002764
70.42869172502493313459
4.57471097850338281887
5.39362754635236...

result:

wrong answer WA (test case 3)