NC210481. 筛子游戏
描述
输入描述
一行七个整数分别表示。
输出描述
输出大于时的期望步数。如果用表示你输出的答案,表示标准答案,如果就认为答案正确
示例1
输入:
4 2 3 3 2 2 1
输出:
1.3112582781
C++(clang++ 11.0.1) 解法, 执行用时: 3ms, 内存消耗: 436K, 提交时间: 2022-10-04 20:13:50
#include<bits/stdc++.h> using namespace std; int n,k1,k2,k3,a,b,c; double p0,p[100],s1[110009],s2[110009]; int main(){ cin>>n>>k1>>k2>>k3>>a>>b>>c; p0=1.0/k1/k2/k3; for(int i=1;i<=k1;i++)for(int j=1;j<=k2;j++)for(int k=1;k<=k3;k++)p[k+i+j]+=p0; p[a+b+c]-=p0; for(int i=n;i>=0;i--){ for(int j=3;j<=k1+k2+k3;j++)s1[i]+=s1[i+j]*p[j],s2[i]+=s2[i+j]*p[j]; s1[i]+=p0,s2[i]+=1; } printf("%.10lf",s2[0]/(1-s1[0])); }