对期望仍然理解的不深入啊 #include<iostream> #include<iomanip> #include<string.h> using namespace std; #define MAXN 505 double f[MAXN][2]; int main() { int n,k1,k2,k3,a,b,c; int t; cin>>t; while(t--){ cin>>n>>k1>>k2>>k3>>a>>b>>c; double p0=1.0/((k1*k2*k3)*1.0); f[n][0]=p0; f[n][1]=1; int i; int j,k,l; for(i=n-1;i>=0;i--){ f[i][0]=p0; f[i][1]=1; for(j=1;j<=k1;j++) for(k=1;k<=k2;k++) for(l=1;l<=k3;l++) if(!(j==a&&k==b&&l==c)){ int s=j+k+l; if(i+s<=n){ f[i][0]+=f[i+s][0]*p0; f[i][1]+=f[i+s][1]*p0; } } } cout<<setprecision(15)<<(f[0][1])/(1.0-f[0][0])<<endl; } }