QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#766904#7962. 前缀和EZGGTL 0ms4120kbC++23898b2024-11-20 19:11:352024-11-20 19:11:41

Judging History

This is the latest submission verdict.

  • [2024-11-20 19:11:41]
  • Judged
  • Verdict: TL
  • Time: 0ms
  • Memory: 4120kb
  • [2024-11-20 19:11:35]
  • Submitted

answer

#include<bits/stdc++.h>

using namespace std;

float logC(int n, int k) {
    return lgamma(n + 1) - lgamma(k + 1) - lgamma(n - k + 1);
}

float negative_binomial_pmf(int k, int r, float p) {
    if (k < r) return 0.0;
    float log_pmf = logC(k - 1, r - 1) + r * log(p) + (k - r) * log(1 - p);
    return exp(log_pmf);
}

float negative_binomial_cdf(int k, int r, float p) {
    float cdf = 0.0;
    for (int i = r; i <= k; i++) {
        cdf += negative_binomial_pmf(i, r, p);
    }
    return cdf;
}

int main() {
    int n, l, r;
    float p;
    cin >> n >> p >> l >> r;
    float expected = 0.0;
    for (int i = 1; i <= n; i++) {
        float prob_l = negative_binomial_cdf(l - 1, i, p);
        float prob_r = negative_binomial_cdf(r, i, p);
        expected += prob_r - prob_l;
    }
    cout <<fixed<<setprecision(10)<< expected << endl;
    return 0;
}

详细

Test #1:

score: 100
Accepted
time: 0ms
memory: 4120kb

input:

3 0.5 1 2

output:

1.0000000000

result:

ok found '1.0000000', expected '1.0000000', error '0.0000000'

Test #2:

score: 0
Accepted
time: 0ms
memory: 4012kb

input:

1 0.529148 1 1

output:

0.5291479826

result:

ok found '0.5291480', expected '0.5291480', error '0.0000000'

Test #3:

score: -100
Time Limit Exceeded

input:

1000000000 0.592692 495948205 808386938

output:


result: