結果
| 問題 |
No.76 回数の期待値で練習
|
| コンテスト | |
| ユーザー |
chocorusk
|
| 提出日時 | 2019-07-10 19:11:15 |
| 言語 | C++11(廃止可能性あり) (gcc 13.3.0) |
| 結果 |
AC
|
| 実行時間 | 21 ms / 5,000 ms |
| コード長 | 1,114 bytes |
| コンパイル時間 | 1,527 ms |
| コンパイル使用メモリ | 96,852 KB |
| 実行使用メモリ | 11,392 KB |
| 最終ジャッジ日時 | 2024-10-15 20:10:00 |
| 合計ジャッジ時間 | 1,634 ms |
|
ジャッジサーバーID (参考情報) |
judge5 / judge1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 2 |
ソースコード
#include <cstdio>
#include <cstring>
#include <iostream>
#include <string>
#include <cmath>
#include <bitset>
#include <vector>
#include <map>
#include <set>
#include <queue>
#include <deque>
#include <algorithm>
#include <complex>
#include <unordered_map>
#include <unordered_set>
#include <random>
#include <cassert>
#include <fstream>
#define popcount __builtin_popcount
using namespace std;
typedef long long int ll;
typedef pair<int, int> P;
double e[1000010]={0,
1.0000000000000000,
1.0833333333333333,
1.2569444444444444,
1.5353009259259260,
1.6915991512345676,
2.0513639724794235};
double p[6];
void init(){
for(int i=0; i<5; i++){
p[i]=e[i+2]-1;
for(int j=2; j<i+2; j++){
p[i]-=p[i+1-j]*e[j];
}
}
p[5]=1;
for(int i=0; i<5; i++) p[5]-=p[i];
}
void solve(){
init();
for(int i=7; i<=1000000; i++){
e[i]=1;
for(int j=0; j<6; j++){
e[i]+=p[j]*e[i-1-j];
}
}
}
int main()
{
int t; cin>>t;
solve();
for(int i=0; i<t; i++){
int n; cin>>n;
printf("%.6lf\n", e[n]);
}
return 0;
}
chocorusk