P3802 小魔女帕琪

题目背景

从前有一个聪明的小魔女帕琪,兴趣是狩猎吸血鬼。

帕琪能熟练使用七种属性(金、木、水、火、土、日、月)的魔法,除了能使用这么多种属性魔法外,她还能将两种以上属性组合,从而唱出强力的魔法。比如说为了加强攻击力而将火和木组合,为了掩盖弱点而将火和土组合等等,变化非常丰富。

题目描述

现在帕琪与强大的夜之女王,吸血鬼蕾咪相遇了,夜之女王蕾咪具有非常强大的生命力,普通的魔法难以造成效果,只有终极魔法:帕琪七重奏才能对蕾咪造成伤害。帕琪七重奏的触发条件是:连续释放的7个魔法中,如果魔法的属性各不相同,就能触发一次帕琪七重奏。

现在帕琪有7种属性的能量晶体,分别为a1,a2,a3,a4,a5,a6,a7(均为自然数),每次释放魔法时,会随机消耗一个现有的能量晶体,然后释放一个对应属性的魔法。

现在帕琪想知道,她释放出帕琪七重奏的期望次数是多少,可是她并不会算,于是找到了学OI的你

输入输出格式

输入格式:

一行7个数字,a1,a2,a3,a4,a5,a6,a7


输出格式:

一个四舍五入保留3位的浮点数

输入输出样例

输入样例#1:

1 1 1 1 1 1 1

  

输出样例#1:

1.000

  

说明

样例说明:

显然一定会触发一次帕琪七重奏

数据范围:

对于30%的测试点,a1+a2+a3+a4+a5+a6+a7<=10

对于100%的测试点,a1+a2+a3+a4+a5+a6+a7<=10^9

by-szc


题目就是这样的

题目中已经明确说了问的是期望次数,所以这是一道期望啦

既然帕琪所拥有的水晶的数量n我们可以求出,就是七个数相加

显然帕琪一共会释放n次魔法

而每次释放魔法后在之后的六次中只有魔法的种类全都不一样才会触发帕琪的大

所以我们的任务就变成了求每一次释放膜法同时触发大招的期望的和

而每一次的期望就是7的阶乘再乘以每一种水晶的数量除以所有水晶的数量减去当前的位置的编号

$$
\large{n = \sum_{i=1}^{7}a_i\\Ans = \sum_{i=0}^{6}\frac{a_{i+1}}{n-i}}
$$

#include <iostream>
#include <cstdio>
#include <cstring> using namespace std; double n, a[12], ans, js; int main() {
for(int i=1; i<=7; i++) {
scanf("%lf", &a[i]);
n += a[i];
}
js = 1*2*3*4*5*6*7;
ans = js * a[1]/(n-0) * a[2]/(n-1) * a[3]/(n-2) * a[4]/(n-3) * a[5]/(n-4) * a[6]/(n-5) * a[7];
printf("%.3lf", ans);
}

  

 

05-18 03:08