洛谷P3802 小魔女帕琪
题目背景
从前有一个聪明的小魔女帕琪,兴趣是狩猎吸血鬼。
帕琪能熟练使用七种属性(金、木、水、火、土、日、月)的魔法,除了能使用这么多种属性魔法外,她还能将两种以上属性组合,从而唱出强力的魔法。比如说为了加强攻击力而将火和木组合,为了掩盖弱点而将火和土组合等等,变化非常丰富。
题目描述
现在帕琪与强大的夜之女王,吸血鬼蕾咪相遇了,夜之女王蕾咪具有非常强大的生命力,普通的魔法难以造成效果,只有终极魔法:帕琪七重奏才能对蕾咪造成伤害。帕琪七重奏的触发条件是:连续释放的7个魔法中,如果魔法的属性各不相同,就能触发一次帕琪七重奏。
现在帕琪有7种属性的能量晶体,分别为a1,a2,a3,a4,a5,a6,a7(均为自然数),每次释放魔法时,会随机消耗一个现有的能量晶体,然后释放一个对应属性的魔法。
现在帕琪想知道,她释放出帕琪七重奏的期望次数是多少,可是她并不会算,于是找到了学OI的你
输入输出格式
输入格式:
一行7个数字,a1,a2,a3,a4,a5,a6,a7
输出格式:
一个四舍五入保留3位的浮点数
输入输出样例
说明
样例说明:
显然一定会触发一次帕琪七重奏
数据范围:
对于30%的测试点,a1+a2+a3+a4+a5+a6+a7<=10
对于100%的测试点,a1+a2+a3+a4+a5+a6+a7<=10^9
by-szc
/* 题意解释: 有七种很厉害的东西 然后a1-7表示很厉害的东西每种有多少个 然后问你连着放七次种类各不相同的期望次数 sigma=a1+a2+a3+a4+a5+a6+a7 答案是:7!*(a1/sigma)*(a2/(sigma-1))*(a3/(sigma-2))*...*(a7) 7!是指所有不同顺序的重数,最后一个(sigma-6)消去的原因是连续释放的7个魔法的起始位置有sigma-6种,需要再乘以个sigma-6 */ #include<iostream> #include<cstdio> using namespace std; double a1,a2,a3,a4,a5,a6,a7; int main(){ scanf("%lf%lf%lf%lf%lf%lf%lf",&a1,&a2,&a3,&a4,&a5,&a6,&a7); double sum=a1+a2+a3+a4+a5+a6+a7; printf("%.3lf",5040*a1/sum*a2/(sum-1)*a3/(sum-2)*a4/(sum-3)*a5/(sum-4)*a6/(sum-5)*a7); }