結果

問題 No.58 イカサマなサイコロ
ユーザー treeonetreeone
提出日時 2016-05-06 11:47:23
言語 C++11
(gcc 11.4.0)
結果
AC  
実行時間 2 ms / 5,000 ms
コード長 855 bytes
コンパイル時間 1,552 ms
コンパイル使用メモリ 158,348 KB
実行使用メモリ 5,376 KB
最終ジャッジ日時 2024-04-15 13:30:14
合計ジャッジ時間 2,087 ms
ジャッジサーバーID
(参考情報)
judge4 / judge3
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 1 ms
5,248 KB
testcase_01 AC 2 ms
5,376 KB
testcase_02 AC 2 ms
5,376 KB
testcase_03 AC 2 ms
5,376 KB
testcase_04 AC 2 ms
5,376 KB
testcase_05 AC 2 ms
5,376 KB
testcase_06 AC 2 ms
5,376 KB
testcase_07 AC 2 ms
5,376 KB
testcase_08 AC 2 ms
5,376 KB
testcase_09 AC 2 ms
5,376 KB
権限があれば一括ダウンロードができます

ソースコード

diff #

#include <bits/stdc++.h>
#define rep(i,a,n) for(int i=a;i<n;i++)
#define repb(i,a,b) for(int i=a;i>=b;i--)
#define all(a) a.begin(),a.end()
#define o(a) cout<<a<<endl
#define int long long
#define fi first
#define se second
using namespace std;
typedef vector<int> vi;
typedef vector<vi> vvi;
typedef pair<int,int> pii;

double dp1[100],dp2[100];

signed main(){
	int n,k;
	cin>>n>>k;
	memset(dp1,0.0,sizeof(dp1));
	memset(dp2,0.0,sizeof(dp2));
	dp1[0]=1;
	dp2[0]=1;
	rep(i,0,n){
		repb(j,60,0){
			rep(l,1,7){
				dp2[j+l]+=dp2[j]/6.0;
			}
			dp2[j]=0;
		}
	}
	rep(i,k,n){
		repb(j,60,0){
			rep(l,1,7){
				dp1[j+l]+=dp1[j]/6.0;
			}
			dp1[j]=0;
		}
	}
	rep(i,0,k){
		repb(j,60,0){
			rep(l,4,7){
				dp1[j+l]+=dp1[j]/3.0;
			}
			dp1[j]=0;
		}
	}
	double ans=0.0;
	rep(i,1,100){
		rep(j,1,i){
			ans+=dp1[i]*dp2[j];
		}
	}
	printf("%.10lf\n", ans);
}
0