結果
| 問題 |
No.76 回数の期待値で練習
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2019-09-27 14:58:29 |
| 言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
| 結果 |
AC
|
| 実行時間 | 76 ms / 5,000 ms |
| コード長 | 1,038 bytes |
| コンパイル時間 | 539 ms |
| コンパイル使用メモリ | 70,424 KB |
| 実行使用メモリ | 70,084 KB |
| 最終ジャッジ日時 | 2024-09-24 06:55:02 |
| 合計ジャッジ時間 | 1,061 ms |
|
ジャッジサーバーID (参考情報) |
judge1 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 2 |
ソースコード
#include <iostream>
#include <iomanip>
using namespace std;
const double d[6] = {0.083333333333, 0.166666666667, 0.250000000000, 0.083333333333, 0.250000000000, 0.166666666667};
bool memo[1000001] = {};
double b[1000001] = {};
double dfs(int x){
if (x <= 0) return 0;
if (memo[x]) return b[x];
memo[x] = true;
b[x] = 1.0;
for (int j = 1; j <= 6; j++) b[x] += dfs(x-j)*d[j-1];
return b[x];
}
int main(){
/* 実験
double d[6] = {}, a[7] = {};
for(int i = 1; i <= 6; i++) cin >> a[i];
for(int i = 2; i <= 6; i++){
double tmp = a[i] - 1.0;
for(int j = 1; j+1 < i; j++){
tmp -= a[i-j]*d[j];
}
d[i-1] = tmp/a[1];
}
cout << fixed << setprecision(12);
for(int i = 1; i <= 5; i++){
cout << d[i] << endl;
}
cout << 1-d[1]-d[2]-d[3]-d[4]-d[5] << endl;
*/
int q;
cin >> q;
while (q-- > 0){
int n;
cin >> n;
cout << fixed << setprecision(15) << dfs(n) << endl;
}
return 0;
}