题解
2026-01-23 21:27:06
发布于:浙江
2阅读
0回复
0点赞
#include <iostream>
#include <iomanip>
using namespace std;
typedef long double ld; // 用long double提高精度,避免大数相乘溢出/精度损失
int main() {
// 存储7种属性的晶体数量
long long a[7];
ld product = 1.0; // 7个a[i]的乘积
long long m = 0; // 晶体总数
for (int i = 0; i < 7; ++i) {
cin >> a[i];
m += a[i];
product *= (ld)a[i];
}
// 情况1:晶体总数不足7个,无法触发七重奏
if (m < 7) {
cout << "0.000" << endl;
return 0;
}
// 情况2:计算期望
const ld fact7 = 5040.0; // 7! = 5040
ld denominator = 1.0; // 分母:m*(m-1)*(m-2)*(m-3)*(m-4)*(m-5)
for (int i = 0; i < 6; ++i) {
denominator *= (ld)(m - i);
}
ld ans = (fact7 * product) / denominator;
// 输出结果,保留三位小数,四舍五入
cout << fixed << setprecision(3) << ans << endl;
return 0;
}
这里空空如也





有帮助,赞一个