这道题的概率可以单独考虑每个格子对期望的贡献值。因为其实每个格子是否被选都可以认为是独立的,单独一个格子贡献的期望为1*(该格子K次被选的概率),所以答案其实就是每个格子K次被选中的概率之和。
#include <iostream> #include <cstdio> #include <cstring> #include <algorithm> #define LL long long using namespace std; int main(){ LL n,m; int k; int T,icase=0; scanf("%d",&T); while(T--){ scanf("%lld%lld%d",&n,&m,&k); double output=0; for(LL i=1;i<=n;i++){ for(LL j=1;j<=m;j++){ LL ans=(i-1)*(i-1)*m*m; ans+=(n-i)*(n-i)*m*m; ans+=n*n*(j-1)*(j-1); ans+=n*n*(m-j)*(m-j); ans-=(i-1)*(i-1)*(j-1)*(j-1); ans-=(n-i)*(n-i)*(j-1)*(j-1); ans-=(i-1)*(i-1)*(m-j)*(m-j); ans-=(n-i)*(n-i)*(m-j)*(m-j); double p=ans*1.0/(n*n*m*m); double tmp=1.0; for(int c=1;c<=k;c++) tmp*=p; output+=(1.0-tmp); } } printf("Case #%d: %.0f\n",++icase,(output)); } return 0; }
时间: 2024-12-22 07:29:51