結果
| 問題 |
No.76 回数の期待値で練習
|
| コンテスト | |
| ユーザー |
ohuton_labo
|
| 提出日時 | 2014-12-12 01:05:07 |
| 言語 | C++11(廃止可能性あり) (gcc 13.3.0) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 1,388 bytes |
| コンパイル時間 | 806 ms |
| コンパイル使用メモリ | 64,996 KB |
| 実行使用メモリ | 6,944 KB |
| 最終ジャッジ日時 | 2024-06-11 20:55:18 |
| 合計ジャッジ時間 | 1,681 ms |
|
ジャッジサーバーID (参考情報) |
judge4 / judge1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | WA * 1 RE * 1 |
ソースコード
#include <iostream>
#include <stack>
#include <string>
#include <vector>
#include <queue>
#include <algorithm>
#include <stdlib.h>
using namespace std;
/*
cin.ignore();
getline(cin,dataStr);
data = new int[n];
stringToInteger(&dataStr,data,n);
*/
void stringToInteger(string *str,int *data,int n){
for(int i=0;i<n;i++){
int spaceN = str->find(' ',0);
data[i] = atoi(str->substr(0,spaceN).c_str());
str->erase(0,spaceN+1);
}
}
void dPrint(double *a,int n){
for(int i=0;i<n;i++){
cout<<a[i]<<endl;
}
cout<<endl;
}
//dp[i] i:iが出るまでに振る回数の期待値
double dp[100010];
int main(){
dp[1] = 1.0000000000000000;
dp[2] = 1.0833333333333333;
dp[3] = 1.2569444444444444;
dp[4] = 1.5353009259259260;
dp[5] = 1.6915991512345676;
dp[6] = 2.0513639724794235;
dPrint(dp,7);
double p[7];
p[1] = dp[2]-1;
for(int i=2;i<6;i++){
double r = dp[i+1]-1;
for(int j=1;j<i;j++){
r-=dp[j]*p[i-j];
}
p[i] = r;
}
p[1]=1.0/12.0;
p[2]=2.0/12.0;
p[3]=3.0/12.0;
p[4]=1.0/12.0;
p[5]=3.0/12.0;
p[6]=2.0/12.0;
for(int i=7;i<=100000;i++){
for(int j=i-6;j<i;j++){
//cout<<j<<" "<<dp[j]<<" "<<p[i-j]<<endl;
dp[i]+=dp[j]*p[i-j];
}
dp[i]+=1;
}
int t;
cin>>t;
for(int i=0;i<t;i++){
int num;
cin>>num;
cout<<dp[num]<<endl;
}
return 0;
}
ohuton_labo