結果
問題 | No.76 回数の期待値で練習 |
ユーザー | LayCurse |
提出日時 | 2014-11-16 23:18:47 |
言語 | C++11 (gcc 11.4.0) |
結果 |
AC
|
実行時間 | 25 ms / 5,000 ms |
コード長 | 1,037 bytes |
コンパイル時間 | 1,235 ms |
コンパイル使用メモリ | 158,672 KB |
実行使用メモリ | 11,392 KB |
最終ジャッジ日時 | 2024-06-10 07:54:57 |
合計ジャッジ時間 | 1,520 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge3 |
(要ログイン)
テストケース
テストケース表示入力 | 結果 | 実行時間 実行使用メモリ |
---|---|---|
testcase_00 | AC | 24 ms
11,392 KB |
testcase_01 | AC | 25 ms
11,392 KB |
コンパイルメッセージ
main.cpp: In function ‘int main()’: main.cpp:46:8: warning: ignoring return value of ‘int scanf(const char*, ...)’ declared with attribute ‘warn_unused_result’ [-Wunused-result] 46 | scanf("%d",&T); | ~~~~~^~~~~~~~~ main.cpp:48:10: warning: ignoring return value of ‘int scanf(const char*, ...)’ declared with attribute ‘warn_unused_result’ [-Wunused-result] 48 | scanf("%d",&N); | ~~~~~^~~~~~~~~
ソースコード
#include<bits/stdc++.h> using namespace std; #define REP(i,a,b) for(i=a;i<b;i++) #define rep(i,n) REP(i,0,n) double p[6] = {1.0/12, 2.0/12, 3.0/12, 1.0/12, 3.0/12, 2.0/12}; double ans[5] = {1.0833333333333333, 1.2569444444444444, 1.5353009259259260, 1.6915991512345676, 2.0513639724794235}; double dp[1100000]; void calc(int mx){ int i, j; dp[0] = 0; REP(i,1,mx+1){ dp[i] = 1; rep(j,6) if(i-j-1 >= 0) dp[i] += dp[i-j-1] * p[j]; } } int main(){ int T, N; int i, j, k, loop; double a, b, c; rep(i,6) p[i] = 0; rep(k,5){ a = 0; b = 1; rep(i,k) b -= p[i]; rep(loop,80){ c = (a+b) / 2; p[k] = c; p[5] = 1; rep(i,5) p[5] -= p[i]; calc(k+2); if(dp[k+2] > ans[k]) b = c; else a = c; } p[k] = c; p[5] = 1; rep(i,5) p[5] -= p[i]; } // rep(i,6) printf("%d %.15f\n",i,p[i]); calc(1000001); scanf("%d",&T); while(T--){ scanf("%d",&N); printf("%.15f\n",dp[N]); } return 0; }