QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#766890 | #7962. 前缀和 | EZGG | TL | 1ms | 4128kb | C++23 | 909b | 2024-11-20 19:08:06 | 2024-11-20 19:08:07 |
Judging History
answer
#include<bits/stdc++.h>
using namespace std;
double logC(int n, int k) {
return lgamma(n + 1) - lgamma(k + 1) - lgamma(n - k + 1);
}
double negative_binomial_pmf(int k, int r, double p) {
if (k < r) return 0.0;
double log_pmf = logC(k - 1, r - 1) + r * log(p) + (k - r) * log(1 - p);
return exp(log_pmf);
}
double negative_binomial_cdf(int k, int r, double p) {
double 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;
double p;
cin >> n >> p >> l >> r;
double expected = 0.0;
for (int i = 1; i <= n; i++) {
double prob_l = negative_binomial_cdf(l - 1, i, p);
double 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: 1ms
memory: 4128kb
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: 4088kb
input:
1 0.529148 1 1
output:
0.5291480000
result:
ok found '0.5291480', expected '0.5291480', error '0.0000000'
Test #3:
score: -100
Time Limit Exceeded
input:
1000000000 0.592692 495948205 808386938