結果
問題 | No.301 サイコロで確率問題 (1) |
ユーザー |
![]() |
提出日時 | 2015-12-27 01:18:52 |
言語 | C++11(廃止可能性あり) (gcc 13.3.0) |
結果 |
AC
|
実行時間 | 174 ms / 1,000 ms |
コード長 | 758 bytes |
コンパイル時間 | 1,345 ms |
コンパイル使用メモリ | 162,184 KB |
実行使用メモリ | 5,376 KB |
最終ジャッジ日時 | 2024-09-19 07:18:27 |
合計ジャッジ時間 | 2,229 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 2 |
ソースコード
#include <bits/stdc++.h>using namespace std;using ld = long double;long long n;// e0を仮定してにぶたんbool le(const ld e0){vector<ld> e(n+1);for(int i = n-1; i >= 0; i--){for(int j = i+1; j <= i+6; j++){if(j > n){e[i] += (e0+1) / 6;} else {e[i] += (e[j]+1) / 6;}}}return e0 < e[0];}ld solve(){if(n > 200) return n + 5./3;ld lo = 0;ld hi = 1e20;for(int _ = 0; _ < 200; ++_){ld mid = (lo + hi) / 2;if(le(mid)) lo = mid;else hi = mid;}return lo;}int main(){int t;cin >> t;while(t--){cin >> n;printf("%.20lf\n", (double)solve());}}