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\)

思路

翻译一下这个\(fancy\)的题面:

求在一个由\(a1\)个\(1\),\(a2\)个\(2\),\(a3\)个\(3\),\(a4\)个\(4\),\(a5\)个\(5\),\(a6\)个\(6\),\(a7\)个\(7\)组成的一个数列中,出现\(1\sim 7\)的全排列的次数期望。

首先设\(sum=\Sigma^7_{i-1}a_i\)。数列的第一个数为\(1\)的概率为\(\frac{a_1}{sum}\),第二位数为\(2\)的概率为\(\frac{a_2}{sum}\)...那么前七个数为\(1,2,3,4,5,6,7\)的概率就是:

\[\frac{\Pi_{i=1}^{7}a_i}{\Pi_{j=0}^6(sum-j)}
\]

\(1\sim 7\)的全排列一共有\(7!\)种,所以前七个数为\(1\sim 7\)的全排列的概率就是:

\[\frac{7!\times \Pi_{i=1}^{7}a_i}{\Pi_{j=0}^6(sum-j)}
\]

不从第一位开始,其实从第\(i\)位开始的七个数为\(1\sim 7\)的全排列的概率都是上面那个式子。所以最后的总期望就是:

\[\frac{7!\times \Pi_{i=1}^{7}a_i}{\Pi_{j=0}^6(sum-j)}\times (sum-6)
\]

约分一下:

\[\frac{7!\times \Pi_{i=1}^{7}a_i}{\Pi_{j=0}^5(sum-j)}
\]

这就是答案。

AC代码

#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
typedef long double LD;
LD a1,a2,a3,a4,a5,a6,a7,sum,ans;
int main()
{
cin>>a1>>a2>>a3>>a4>>a5>>a6>>a7;
if(!a1||!a2||!a3||!a4||!a5||!a6||!a7) goto flag;
sum=a1+a2+a3+a4+a5+a6+a7;
ans=LD(5040)/sum*a1/(sum-LD(1))*a2/(sum-LD(2))*a3/(sum-LD(3))*a4/(sum-LD(4))*a5/(sum-LD(5))*a6/(sum-LD(6))*a7*(sum-6);
flag:
cout<<fixed<<setprecision(3)<<ans;
return 0;
}

Luogu P3802 小魔女帕琪(期望)的更多相关文章

  1. P3802 小魔女帕琪 期望

    P3802 小魔女帕琪 期望 题面 题意稍微不清楚,题中的a[i]指的是属性i的魔法有a[i]个. 题目大意:有7种魔法,每种数量a[i],每次随机放出一个魔法,问放完为止出现7次魔法都不相同的期望次 ...

  2. Luogu P3802 小魔女帕琪

    P3802 小魔女帕琪 题目背景 从前有一个聪明的小魔女帕琪,兴趣是狩猎吸血鬼. 帕琪能熟练使用七种属性(金.木.水.火.土.日.月)的魔法,除了能使用这么多种属性魔法外,她还能将两种以上属性组合,从 ...

  3. P3802 小魔女帕琪 概率与期望

    P3802 小魔女帕琪 题目背景 从前有一个聪明的小魔女帕琪,兴趣是狩猎吸血鬼. 帕琪能熟练使用七种属性(金.木.水.火.土.日.月)的魔法,除了能使用这么多种属性魔法外,她还能将两种以上属性组合,从 ...

  4. 洛谷 P3802 小魔女帕琪 解题报告

    P3802 小魔女帕琪 题目背景 从前有一个聪明的小魔女帕琪,兴趣是狩猎吸血鬼. 帕琪能熟练使用七种属性(金.木.水.火.土.日.月)的魔法,除了能使用这么多种属性魔法外,她还能将两种以上属性组合,从 ...

  5. 洛谷P3802 小魔女帕琪

    P3802 小魔女帕琪 题目背景 从前有一个聪明的小魔女帕琪,兴趣是狩猎吸血鬼. 帕琪能熟练使用七种属性(金.木.水.火.土.日.月)的魔法,除了能使用这么多种属性魔法外,她还能将两种以上属性组合,从 ...

  6. P3802 小魔女帕琪

    传送门 考虑前面7个魔法 如果前面七个魔法各不相同,那么就能完成一次帕琪七重奏 设 A=a1*a2*...*a7,S=a1+a2+...+a7,B=S*(S-1)*...*(S-6) 对于不同的施法顺 ...

  7. 洛谷 P3802 小魔女帕琪

    传送门 题目大意:7个东西,每个有ai个,只有选7次 把7个东西都选到了才行. 题解:7!排列数*每次选择的概率 代码: #include<iostream> #include<cs ...

  8. 洛谷P3802:小魔女帕琪

    题目背景 从前有一个聪明的小魔女帕琪,兴趣是狩猎吸血鬼. 帕琪能熟练使用七种属性(金.木.水.火.土.日.月)的魔法,除了能使用这么多种属性魔法外,她还能将两种以上属性组合,从而唱出强力的魔法.比如说 ...

  9. AC日记——小魔女帕琪 洛谷 P3802

    小魔女帕琪 思路: 概率公式计算: 代码: #include <bits/stdc++.h> using namespace std; ],sig; int main() { ;i< ...

随机推荐

  1. NX二次开发-设置尺寸的附加尺寸UF_DRF_set_appended_text

    #include <uf.h> #include <uf_drf.h> #include <uf_obj.h> #include <uf_part.h> ...

  2. python爬虫教程之美丽汤(一)

    python 爬虫之美丽汤 BeautifulSoup 作者: jwang106 1. 使用requests获取网页的html源码 import requests from bs4 import Be ...

  3. 7.RabbitMQ RFC同步调用

    RabbitMQ RFC同步调用是使用了两个异步调用完成的,生产者调用消费者的同时,自己也作为消费者等待某一队列的返回消息,消费者接受到生产者的消息同时,也作为消息发送者发送一消息给生产者.参考下图: ...

  4. tensorflow 模型加载(没有checkpoint文件或者说只加载其中一个模型)

    1.如果有checkpoint文件的话,加载模型很简单: 第一步:都是加载图: with tf.Session() as sess: saver=tf.train.import_meta_graph( ...

  5. Java多线程中提到的原子性和可见性、有序性

    1.原子性(Atomicity)   原子性是指在一个操作中就是cpu不可以在中途暂停然后再调度,既不被中断操作,要不执行完成,要不就不执行. 如果一个操作时原子性的,那么多线程并发的情况下,就不会出 ...

  6. USACO 2003 Fall Orange Popular Cows /// tarjan缩点 oj22833

    题目大意: n头牛,m个崇拜关系,并且崇拜具有传递性 如果a崇拜b,b崇拜c,则a崇拜c 求最后有几头牛被所有牛崇拜 强连通分量内任意两点都能互达 所以只要强联通分量内有一点是 那么其它点也都会是 按 ...

  7. 什么是哈希Hash(散列函数)

    Hash(散列函数) Hash,一般翻译做散列.杂凑,或音译为哈希,是把任意长度的输入(又叫做预映射pre-image)通过散列算法变换成固定长度的输出,该输出就是散列值.这种转换是一种压缩映射,也就 ...

  8. Linux内存 mem 和 swap

    摘抄并用于自查 Linux mem/swap/buffers/cached区别 free命令相对于top,提供了更简洁的查看系统内存使用情况: # free -m mem:表示物理内存统计 buff/ ...

  9. 深度探索C++对象模型之第一章:关于对象之对象的差异

    一.三种程序设计范式: C++程序设计模型支持三种程序设计范式(programming paradiams). 程序模型(procedural model) char boy[] = "cc ...

  10. js添加节点

    <!DOCTYPE html><html><body><script>var message=document.createTextNode(" ...