帕琪有7种属性的能量晶体,分别为a1,a2,a3,a4,a5,a6,a7(均为自然数),每次释放魔法时,会随机消耗一个现有的能量晶体,然后释放一个对应属性的魔法。
帕琪七重奏的触发条件是:连续释放的7个魔法中,如果魔法的属性各不相同,就能触发一次帕琪七重奏。
现在帕琪想知道,她释放出帕琪七重奏的期望次数是多少
链接🔗
[Luogu P3802]小魔女帕琪
题解
1-7次释放魔法满足的概率是
E(X)=7!∗na∗n−1b∗n−2c∗n−3d∗n−4e∗n−5f∗n−6g
然后我们考虑 2 - 8次达成的概率
要满足 2 - 8 次达成,那么第8次必定与第一个相同,
E(X)=7!∗na∗n−1b∗n−2c∗n−3d∗n−4e∗n−5f∗n−6g∗n−7a−1
因为第一个数 na 有 7 种选法,所以我们还要乘以 7
又因为
∑i=17N−7ai−1=1
所以原式子可以化成
E(X)=7!∗na∗n−1b∗n−2c∗n−3d∗n−4e∗n−5f∗n−6g
然后式子有 n−6 次机会
答案就是
E(X)=7!∗na∗n−1b∗n−2c∗n−3d∗n−4e∗n−5f∗g
代码
#include <cstdio>
using namespace std;
int a[10],sum;
int main()
{
// freopen("a.in","r",stdin);
// freopen("k.out","w",stdout);
for(int i=1;i<=7;i++) scanf("%d",&a[i]);
for(int i=1;i<=7;i++) sum+=a[i];
double ans = 2 * 3 * 4 * 5 * 6 * 7;
for(int i=1;i<=6;i++)
{
ans *= (double)a[i]/(double)(sum-i+1);
}
printf("%.3lf",ans*a[7]);
return 0;
}