百事世界杯之旅

百事世界杯之旅

设当前已经拥有 \(k\) 个瓶盖,\(p=k/n\)
则还需 \(t\) 次才能得到一个新瓶盖的概率为 \((1-p)^{t-1}p\)

$\therefore E=1+\sum\limits_{k=1}^{n-1} \sum\limits{+\infty}_{t=1}(1-\frac{k}{n})(\frac{k}{n})\times t $

\(=1+\sum\limits_{k=1}^{n-1}(1-\frac{k}{n})\sum^{+\infty}_{t=1}(\frac{k}{n})^{t-1}\times t\)


\(S_m=\sum\limits_{t=1}^m(\frac{k}{n})^{t-1}\times t\)

\(\therefore S_m=1+2(\frac{k}{n})+3(\frac{k}{n})^2+4(\frac{k}{n})^3+5(\frac{k}{n})^4+...+m(\frac{k}{n})^{m-1}\)

$\therefore (\frac{k}{n})S_m=(\frac{k}{n})+2(\frac{k}{n})2+3(\frac{k}{n})3+4(\frac{k}{n})4+...+(m-1)(\frac{k}{n})+m(\frac{k}{n})^m $

$ \therefore (1-\frac{k}{n})S_m=[1+\frac{k}{n}+(\frac{k}{n})2+(\frac{k}{n})3+...+(\frac{k}{n}){m-1}]-m(\frac{k}{n})m $

\(=\frac{1-(\frac{k}{n})^m}{1-\frac{k}{n}}-m(\frac{k}{n})^m\)

\(=\frac{n}{n-k}-(\frac{n}{n-k}+m)(\frac{k}{n})^m\)

\(\therefore S_m=(\frac{n}{n-k})^2-\frac{n}{n-k}\times \frac{m+\frac{n}{n-k}}{(\frac{n}{k})^m}\)

\(\lim\limits_{m\rightarrow+\infty}S_m=(\frac{n}{n-k})^2-\frac{n}{n-k}\times \frac{1}{(\frac{n}{k})^m\times ln(\frac{n}{k})}=(\frac{n}{n-k})^2\)

\(\therefore \sum\limits_{k=1}^{+\infty}(\frac{k}{n})^{t-1}\times t = (\frac{n}{n-k})^2\)

\(E=1+\sum\limits_{k=1}^{n-1}(\frac{n-k}{n}\times \frac{n}{n-k}\times \frac{n}{n-k})\)

\(=1+\sum\limits_{k=1}^{n-1}\frac{n}{n-k}\)

\(=\sum\limits_{k=0}^{n-1}\frac{n}{n-k}\)

\(=n\times \sum\limits_{k=0}^{n-1}\frac{1}{n-k}\)

因此,

\(E=n\sum\limits_{k=0}^{n-1}\frac{1}{n-k}\)

吐槽:201908012032在学高数先修课时发现博客园的 Markdown 支持分数了!真欢其!赶紧把推理过程从洛谷移过来。

#include <cstdio>
#include <iostream>
using namespace std;

typedef long long ll;

ll gcd(ll a,ll b)
{
    return !b?a:gcd(b,a % b);
}

struct Frac
{
    ll a,b,z;
    Frac(ll A=0,ll B=1):a(A),b(B){}
    Frac operator + (const Frac& x)
    const{
        ll C=b*x.b,D=a*x.b+x.a*b;
        ll g=gcd(max(C,D),min(C,D));
        return Frac(D/g,C/g);
    }
};
inline int Len(ll x)
{
    if(x==0)return 0;
    int l=0;
    while(x)
    {
        l++;
        x/=10;
    }
    return l;
}
int main()
{
    ll n;
    cin>>n;
    Frac E(0,1);
    for(int i=1;i<=n;i++)E=E+Frac(n,(ll)i);
    if(E.b==1LL)cout << E.a;
    else
    {
        ll C=E.a/E.b,A=E.a%E.b,B=E.b;
        int l1=Len(C),l2=Len(B);
        for(int i=1;i<=l1;i++)cout << " ";
        cout << A << endl;
        if(C != 0)cout << C;
        for(int i=1;i<=l2;i++)cout << '-';
        cout << endl;
        for(int i=1;i<=l1;i++)cout << " ";
        cout << B;
        //当 C=0 时的情况。 
    }
    return 0;
}
posted @ 2018-09-21 20:24  昤昽  阅读(138)  评论(0)    收藏  举报