結果
| 問題 |
No.302 サイコロで確率問題 (2)
|
| コンテスト | |
| ユーザー |
maine_honzuki
|
| 提出日時 | 2021-05-14 17:48:12 |
| 言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
| 結果 |
RE
|
| 実行時間 | - |
| コード長 | 1,004 bytes |
| コンパイル時間 | 1,891 ms |
| コンパイル使用メモリ | 197,080 KB |
| 最終ジャッジ日時 | 2025-01-21 10:58:28 |
|
ジャッジサーバーID (参考情報) |
judge4 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 19 RE * 1 |
ソースコード
//https://ncode.syosetu.com/n4830bu/302/
#include <bits/stdc++.h>
using namespace std;
int main() {
long long N, L, R;
cin >> N >> L >> R;
if (N < 10000) {
vector<long double> dp(N * 6 + 10);
dp[0] = 1;
for (int _ = 0; _ < N; _++) {
vector<long double> dp_nxt(N * 6 + 10);
for (int i = 0; i < N * 6; i++) {
for (int j = 1; j <= 6; j++) {
dp_nxt[i + j] += dp[i] / 6;
}
}
swap(dp_nxt, dp);
}
long double ans = 0;
for (int i = L; i <= min(N * 6, R); i++) {
ans += dp[i];
}
cout << fixed << setprecision(10) << ans << endl;
} else {
auto maine = [&](long double x) {
long double mu = 3.5 * N, sigma = sqrt(35.0 / 12 * N);
return (1.0l + erf((x - mu) / sqrt(2) / sigma)) / 2.0l;
};
cout << fixed << setprecision(10) << maine(R + 0.5) - maine(L - 0.5) << endl;
}
}
maine_honzuki