P3802 小魔女帕琪 稍有難度的數學題
阿新 • • 發佈:2021-07-11
不過這點難度估計在數學奧賽面前不值一題。
我們來分析一下,根據期望的線性性,總的期望觸發次數就是每七個的觸發次數,也就是說:\(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\)
通過歸納不難證明,所有的期望次數都是上面那個東西。
所以我們可以得到答案為:
\[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; }