1 条题解

  • 0
    @ 2025-8-24 22:06:57

    自动搬运

    查看原文

    来自洛谷,原作者为

    avatar Protons
    消灭[数据删除]暴政,世界属于[数据删除]

    搬运于2025-08-24 22:06:57,当前版本为作者最后更新于2019-11-09 17:43:22,作者可能在搬运后再次修改,您可在原文处查看最新版

    自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多

    以下是正文


    题解思路:正难则反

    我们发现,因为该期望的概率数列是个不收敛数列,所以要想顺着题目的思路去推出期望几乎是不可能的,因此我们要另辟蹊径

    引理:

    求证

    假设对于一件事AA,我们每一次做AA时的成功率是PP,如果本次不成功就继续做,最终期望1p\dfrac{1}{p}次做成

    证明:

    对于这个问题,我们显然不能正向去想,我们可以利用一个叫做递归公式的东西:我们设期望kk次做成AA ,则有:

    k=1+p0+(1p)kk=1+p*0+(1-p)*k

    其中1表示第一次做AA,如果成功了就再做0次,期望次数为p0p*0;如果不成功就再做kk次,期望为(1p)k(1-p)*k

    通过移项,我们得到

    k=1pk=\dfrac {1}{p}

    引理证毕

    正文:

    我们先来思考一个问题:nn个球里取出1个球的概率是多少

    答案很简单,显然是1,由引理得,取出1个球成功的期望次数为k1=1p=11=1k_1=\dfrac{1}{p}=\dfrac{1}{1}=1

    nn个球中取出其他n1n-1个球中的一个球的概率呢?其实也很好算,就是n1n\dfrac{n-1}{n},那成功的期望次数就是k2=1p=n1nk_2=\dfrac{1}{p}=\dfrac{n-1}{n}

    以此类推……………………

    取遍这nn个球的总期望次数为:$k_{sum}=k_1+k_2+\text{…}+k_n=\dfrac{n}{n}+\dfrac{n}{n-1}+\text{…}+\dfrac{n}{1}=n*\sum\limits_{i=1}^{n-1}\dfrac{1}{n-i}$

    所以最终这个题就是求个逆元和乘nn就完事了

    附加证明:线性筛逆元

    我们知道,对于任意一个数pp,都有p=ab+cp=a*b+ca,b,ca,b,c为任意整数)

    则对于式子p0(mod p)p\equiv0\text{(mod p)}

    我们有ab+c0(mod p)a*b+c\equiv0\text{(mod p)}

    cc挪到右边:abc(mod p)a*b\equiv-c\text{(mod p)}

    两边同时乘cc的逆元c1c^{-1}abc11(mod p)a*b*c^{-1}\equiv-1\text{(mod p)}

    两边再同时乘bb的逆元b1b^{-1}ac1b1(mod p)a*c^{-1}\equiv-b^{-1}\text{(mod p)}

    即可化为b1ac1(mod p)b^{-1}\equiv-a*c^{-1}\text{(mod p)}

    同时,我们知道,在c++里,intint类的除法都是自动向下取整的。所以我们可以得到:对于数p=ab+cp=a*b+c,有a=pba=\dfrac{p}{b}c=p%bc=p\%b(我们要求的是bb的逆元,pp是模数)。我们设inv[i]inv[i]ii的逆元,则有递推式:

    inv[i]=(1ll(ppi)inv[p%i])%pinv[i]=(1ll*(p-\dfrac{p}{i})*inv[p\%i])\%p

    证毕

    以下是code:

    #include<cstdio>
    #include<iostream>
    using namespace std;
    typedef long long ll;
    const int p=20040313;
    ll inv[10000010],sum,n;
    int main()
    {
    	scanf("%lld",&n);
    	inv[1]=1;sum+=1;
    	for(int i=2;i<=n;i++)//简短有力
    	inv[i]=(1ll*(p-p/i)*inv[p%i])%p,sum=(sum+inv[i])%p;
    	printf("%lld",n*sum%p);
    	return 0;
    }
    
    • 1

    信息

    ID
    3910
    时间
    1000ms
    内存
    250MiB
    难度
    5
    标签
    (无)
    递交数
    0
    已通过
    0
    上传者