【洛谷 3802】小魔女帕琪

题目背景

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

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

题目描述

现在帕琪与强大的夜之女王,吸血鬼蕾咪相遇了,夜之女王蕾咪具有非常强大的生命力,普通的魔法难以造成效果,只有终极魔法:帕琪七重奏才能对蕾咪造成伤害。帕琪七重奏的触发条件是:连续释放的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

 

题解:又是一道恶心的期望。。

#include<cstdio>
#include<iostream>
#include<cmath>
#include<cstdlib>
#include<cstring>
#include<algorithm>
typedef long long ll;
using namespace std;
double a[10],sum,ans=1;
int main(){
    freopen("3802.in","r",stdin);
    freopen("3802.out","w",stdout);
    for(int i=1;i<=7;i++){
        scanf("%lf",&a[i]);
        sum+=a[i];
    }
    if (sum<7) { printf("0.000"); return 0; }
    for(int i=1;i<=7;i++)
        ans=ans*a[i]/(sum-i+1);
    printf("%.3lf\n",ans*5040*(sum-6));
    return 0;
}

 

posted @ 2019-11-08 22:49  #Cookies#  阅读(136)  评论(0编辑  收藏  举报