結果

問題 No.301 サイコロで確率問題 (1)
ユーザー HAHAHAHAHAHA
提出日時 2015-11-15 19:16:17
言語 C++11
(gcc 11.4.0)
結果
TLE  
実行時間 -
コード長 1,089 bytes
コンパイル時間 674 ms
コンパイル使用メモリ 73,996 KB
実行使用メモリ 17,208 KB
最終ジャッジ日時 2024-09-13 15:09:22
合計ジャッジ時間 5,079 ms
ジャッジサーバーID
(参考情報)
judge2 / judge4
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 TLE -
testcase_01 -- -
権限があれば一括ダウンロードができます

ソースコード

diff #

#include<iostream>
#include<cstdio>
#include<cstring>
#include<string>
#include<vector>
#include<queue>
#include<stack>
#include<set>
#include<map>
#include<utility>
#include<sstream>
#include<cctype>
#include<cmath>
#include<algorithm>
using namespace std;

#define ALL(x) (x).begin(),(x).end()
#define RALL(x) (x).rbegin(), (x).rend()
#define rev(i,n) for(int (i)=(n-1);(i)>=0;(i)--)
#define repp(i,n) for(int (i)=1;(i)<=(n);(i)++)
#define rep(i,n) for(int (i)=0;(i)<(n);(i)++)
#define rev(i,n) for(int (i)=(n-1);(i)>=0;(i)--)
#define clr(a) memset((a), 0 ,sizeof(a))


typedef pair<int,int> P;
typedef vector<pair<int,int> > pii;
typedef map<string,int> mi;


int N;
double dp[10010];

double F(double d){
	for(int i=1;i<=N;i++){
		dp[i]=0;
		for(int j=1;j<=6;j++){
			if(j>i) dp[i]+=d;
			else if(i>j) dp[i]+=dp[i-j];
		}
		dp[i]=dp[i]/6.0+1;
	}
	return dp[N];
}

int main(){
	int t;
	cin >> t;
	for(int k=0;k<t;k++){
		cin >> N;
		double L=0,R=1e10;
		for(int i=0;i<100;i++){
			double M=(L+R)/2.0;
			if(F(M)>=M) L=M;
			else R=M;
		}
		printf("%.12lf\n",(L+R)/2.0);
	}
	return 0;
}
0