P3802 小魔女帕琪

传送门

考虑前面7个魔法

如果前面七个魔法各不相同,那么就能完成一次帕琪七重奏

设 A=a1*a2*...*a7,S=a1+a2+...+a7,B=S*(S-1)*...*(S-6)

对于不同的施法顺序,前面七个魔法各不相同的概率总是:A/B

不同的顺序如: a1,a3,a2,a4,a5,a6,a7 和 a1,a2,a3,a4,a5,a6,a7 是不同的施法顺序

它们的概率分别为:(a1 / S) * (a3 / (S-1)) * (a2 / (S-2)) * (a4 / (S-3)) * (a5 / (S-4)) * (a6 / (S-5)) * (a7 / (S-6))

          : (a1 / S) * (a2 / (S-1)) * (a3 / (S-2)) * ... * (a7 / (S-6))

稍微整理一下就是(a1*a2*...*a7)/(S*(S-1)*...*(S-6))  =    A/B

所以就算施法顺序不同,但是概率总是一样的

不同的施法顺序总共有 7! 种

所以对于前面七个魔法的所有顺序,触发一次帕琪七重奏的概率就是 7! * (A/B)

考虑第 2~8 个魔法

如果第 1 个魔法为 a1 ,第 2~8 个魔法能再次触发帕琪七重奏总概率为

((a1-1)*a2*a3...*a7)/((S-1)*(S-2)*...*(S-7))

化简得 (A/a1*(a1-1))/(B/S*(S-7))

如果第一个魔法为 a2

那么第 2~8 个魔法能再次触发帕琪七重奏总概率同样可化简得

(A/a2*(a2-1))/(B/S*(S-7))

...

...

...

一直到 (a7-1)/(S-7),总概率同样化简得 (A/a7*(a7-1))/(B/S*(S-7))

那么把7种情况的概率加起来:(A/a1*(a1-1)+A/a2*(a2-1)+...+A/a7*(a7-1))/(B/S*(S-7))

把A和B提取出来并化简得(最好自己在纸上写一下):

(A/B)*((a1-1+a1-1+...+a7-1)*S/(a1*a2*...*a7)/(S-7))  =  (A/B)*((S-7)*S/S/(S-7)) = (A/B)*1      !!

 

所以第 2~8 个魔法能触发帕琪七重奏的概率就是 7! * A/B(因为第 2~8 个魔法也有 7! 种组合)

 

同理第 3~9 个魔法能触发帕琪七重奏的概率也一样(可以用同样的方法,自己在纸上写一下,就不一一列举了)

 

所以总期望就是 7! * A/B * (S-6)      (乘上S-6 是因为期望要从第 1~7 个魔法算到第 (S-6)~S 个魔法,一共算了 S-6 次)

所以代码量为 0

 

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
using namespace std;
double a[8],s,ans=1;
int main()
{
    for(int i=1;i<=7;i++) cin>>a[i],s+=a[i];
    for(int i=1;i<7;i++)
        ans=ans*a[i]/(s+1-i)*double(i);
    printf("%.3lf",ans*a[7]*7.0);
    return 0;
}

 

转载于:https://www.cnblogs.com/LLTYYC/p/9590448.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SQLAlchemy 是一个 SQL 工具包和对象关系映射(ORM)库,用于 Python 编程语言。它提供了一个高级的 SQL 工具和对象关系映射工具,允许开发者以 Python 类和对象的形式操作数据库,而无需编写大量的 SQL 语句。SQLAlchemy 建立在 DBAPI 之上,支持多种数据库后端,如 SQLite, MySQL, PostgreSQL 等。 SQLAlchemy 的核心功能: 对象关系映射(ORM): SQLAlchemy 允许开发者使用 Python 类来表示数据库表,使用类的实例表示表中的行。 开发者可以定义类之间的关系(如一对多、多对多),SQLAlchemy 会自动处理这些关系在数据库中的映射。 通过 ORM,开发者可以像操作 Python 对象一样操作数据库,这大大简化了数据库操作的复杂性。 表达式语言: SQLAlchemy 提供了一个丰富的 SQL 表达式语言,允许开发者以 Python 表达式的方式编写复杂的 SQL 查询。 表达式语言提供了对 SQL 语句的灵活控制,同时保持了代码的可读性和可维护性。 数据库引擎和连接池: SQLAlchemy 支持多种数据库后端,并且为每种后端提供了对应的数据库引擎。 它还提供了连接池管理功能,以优化数据库连接的创建、使用和释放。 会话管理: SQLAlchemy 使用会话(Session)来管理对象的持久化状态。 会话提供了一个工作单元(unit of work)和身份映射(identity map)的概念,使得对象的状态管理和查询更加高效。 事件系统: SQLAlchemy 提供了一个事件系统,允许开发者在 ORM 的各个生命周期阶段插入自定义的钩子函数。 这使得开发者可以在对象加载、修改、删除等操作时执行额外的逻辑。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值