跳转至

小魔女帕琪

题目链接

题目链接

题解

如果我们能知道每七个连续的晶体释放魔法的概率,将所有的可能性加起来便是结果,令\(a_1,a_2...a_7为每种属性的晶体数量,\)以前七个为例,如果能施放魔法,概率必为\(7!\times C_n^{a1}\times C_{n-1}^{a2}...\times C_{n - 6}^{a7}\),7!是因为释放一次魔法时每种属性的晶体位置不确定,接下来我们可以感性的理解一下,对于抽签,在每次不知道前者结果时概率时一样的,本题也可以这么理解,之后每七个能释放魔法的概率均相同,由于长度为7的串一共有\(n-6\)个,最后答案乘上即可

代码

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#include<bits/stdc++.h>
using namespace std;
const int N = 10;
double f[N], g[N];
int a[N];
double res = 1;
int main() {
    int n = 0;
    for(int i = 1; i <= 7; i ++ ) {
        cin >> a[i];
        n += a[i];
    }

    int fac7 = 1 * 2 * 3 * 4 * 5 * 6 * 7;
    bool flag = true;
    for(int i = 1; i <= 7; i ++ ) {
        if(n - i + 1 == 0) {
            flag = false;
            break;
        }
        res *= a[i] * 1.0 / (n - i + 1);
    }
    if(!flag) cout << "0.000" << endl;
    else {
        res = res * fac7 * (n - 6);
        printf("%.3lf", res);
    }
    return 0;
}