結果
| 問題 |
No.58 イカサマなサイコロ
|
| コンテスト | |
| ユーザー |
treeone
|
| 提出日時 | 2016-05-06 11:47:23 |
| 言語 | C++11(廃止可能性あり) (gcc 13.3.0) |
| 結果 |
AC
|
| 実行時間 | 2 ms / 5,000 ms |
| コード長 | 855 bytes |
| コンパイル時間 | 2,240 ms |
| コンパイル使用メモリ | 158,344 KB |
| 実行使用メモリ | 5,248 KB |
| 最終ジャッジ日時 | 2024-10-05 10:06:32 |
| 合計ジャッジ時間 | 2,283 ms |
|
ジャッジサーバーID (参考情報) |
judge1 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 10 |
ソースコード
#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);
}
treeone