P3802 小魔女帕琪 稍有难度的数学题
作者:互联网
不过这点难度估计在数学奥赛面前不值一题。
我们来分析一下,根据期望的线性性,总的期望触发次数就是每七个的触发次数,也就是说:\(1\) 到 \(7\) ,\(2\) 到 \(8\) 的触发次数等等,不难发现,\(1\) 到 \(7\) 的期望次数为:
\[7!\times \frac{a_1}{N}\times \frac{a_2}{N-1}\times \frac{a_3}{N-2}\times \frac{a_4}{N-3}...\times \frac{a_7}{N-6} \]我们现在考虑一下 \(2\) 到 \(8\) 的期望次数是多少。不难发现,也是上面这个数。
我们即可考虑 \(3\) 到 \(9\) 的期望次数是多少,经过一通计算,发现也是这个数。
通过归纳不难证明,所有的期望次数都是上面那个东西。
所以我们可以得到答案为:
\[7!\times\frac{a_1}{N}\times \frac{a_2}{N-1}\times \frac{a_3}{N-2}\times \frac{a_4}{N-3}...\times \frac{a_6}{N-5}\times a_7 \]代码:
#include<iostream>
#include<cstdio>
#define dd double
#define ld long double
#define ll long long
#define uint unsigned int
#define ull unsigned long long
#define N number
#define M number
using namespace std;
const int INF=0x3f3f3f3f;
template<typename T> inline void read(T &x) {
x=0; int f=1;
char c=getchar();
for(;!isdigit(c);c=getchar()) if(c == '-') f=-f;
for(;isdigit(c);c=getchar()) x=x*10+c-'0';
x*=f;
}
dd a[8],all,ans=1;
int main(){
for(int i=1;i<=7;i++){
scanf("%lf",&a[i]);
all+=a[i];
}
for(int i=1;i<=6;i++){
ans*=a[i];ans/=(all-i+1);
}
ans*=a[7];ans*=5040;
printf("%0.3lf\n",ans);
return 0;
}
标签:frac,int,魔女,long,times,次数,帕琪,P3802,define 来源: https://www.cnblogs.com/TianMeng-hyl/p/14999594.html