记录编号 164121 评测结果 AAAAAAAAAAAAAAAAAAAA
题目名称 BD 最终得分 100
用户昵称 Gravatarcstdio 是否通过 通过
代码语言 C++ 运行时间 5.229 s
提交时间 2015-05-28 15:21:26 内存使用 0.32 MiB
显示代码纯文本
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<cmath>
using namespace std;
int N,M,P,K;
inline double calc_cross(int a,int i){//在1~a内随机选两个数,跨越i的概率
	return (2*i*(a-i+1)-1.0)/(a*a);
}
inline double calc_p(int i,int j,int k){
	return calc_cross(N,i)*calc_cross(M,j)*calc_cross(P,k);
}
inline double calc_E(double p){//每次选中它的概率为p
	//这个公式是用二项式定理推的
	return (1-pow(1-2*p,K+0.0))/2;
}
inline double calc(int i,int j,int k){
	return calc_E(calc_p(i,j,k));
}
void work(void){
	scanf("%d%d%d%d",&N,&M,&P,&K);
	double ans=0;
	for(int i=1;i<=N;i++){
		for(int j=1;j<=M;j++){
			for(int k=1;k<=P;k++){
				ans+=calc(i,j,k);
			}
		}
	}
	printf("%.6lf\n",ans);
}
int main(){
	freopen("BD.in","r",stdin);
	freopen("BD.out","w",stdout);
	int T;
	scanf("%d",&T);
	while(T--) work();
	return 0;
}