PE 430 【二项式定理】

题目大意:有一排N个白色硬币,每次随机两个数A、B,然后将[min(a,b),max(a,b)]的硬币颜色取反,求M次操作后白色硬币的期望个数,其中 N=1010,M=4000

这是一个很奇怪的做法….
可以考虑算每个硬币最后为白色的概率,即进行了偶数次的操作
对于硬币 i,每次选中它的概率为

p=2i(ni+1)1n2

那么最后为白色的概率就是
i=0m(mi)pi(1p)mi[iiseven]

这是二项式展开的形式
现在设 f 为展开式的奇数项,g 为偶数项,就有
{g+f=(p+1p)m=1gf=(p(1p))m=(2p1)m

于是可以得到
g=1+(2p1)m2

现在考虑 2p1 的范围,以及 m 非常大,发现其实中间许多项都能使得 (2p1)m=0 ,所以只要计算出前面不为 0 的部分就好了~

开始算成了黑色我会说…??

【答案】5000624921.38

#include<iostream>
#include<cmath>
#define D long double
#define LL long long
using namespace std;

int main()
{
    D ans = 0.0;
    LL n = (LL)1e10;
    for (int i = 1;i <= 100000000;i ++)
    {
         D p = (2.0 * i * (n - i + 1) - 1) / n / n;
         p = 2.0 * p - 1;
         p = pow(p,4000);
         ans += (1.0 + p) / 2.0;
    }
    ans *= 2.0;
    ans += 4900000000ll;
    printf("%.2f",(double)ans);

    return 0;
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值