問題:チョコレート(生成機能)

タイトル

ポータル

思考

どのくらいの各テイクは、最終的には固定値に到達する必要があり、上記の生成機能を考えることが容易です

色については

この色は奇数を選択した場合

\(F(X)= \ sum_ {i = 0} ^ {\ inftyのX} ^ {2 * I + 1} \)

それが偶数である場合

\(G(x)= \ sum_ {i = 0} ^ {\ inftyのX} ^ {2I} \)

しかし、問題は、あなたが自分をロールアップならばということです

オーダーの問題があるため

答えは、項目の係数ではありません。

私たちは、実際にする必要がありますロールアップする必要があります

それが奇数である場合

\(F(x)は= \ sum_ {I = 0} ^ {\ inftyの} \ FRAC {X ^ {2I + 1}}、{(2I + 1)!} \)

それが偶数である場合

\(G(x)は= \ sum_ {I = 0} ^ {\ inftyの} \ FRAC {X ^ {2I}} {(2I)!} \)

ロールアップした後\(^ X N \)係数は答えがあります

その後、我々はどのように考える\(F \)\(G \)閉じた形に変換しました

私たちはまず、最も単純な形を検討します

\(A(X)= \ sum_ {i = 0} ^ {\ inftyの} \ FRAC {X ^ I} {I!} \)

ことではありません(X-E ^ \)\

理由を説明

私たちは、セット(B(X)= E \ ^ X \)

\(B \)テイラー展開

\(B(x)は= \ sum_ {I = 0} ^ {\ inftyの}(\ FRAC {B ^ { '(I个)}(X_0)} {I]} *(X-X_0)^ I)\ )

私たちは取る(X_0 = 0 \)\

\(B(x)は= \ sum_ {I = 0} ^ {\ inftyの}(\ FRAC {B ^ { '(I个)}(0)} {I]} *(X-X_0)^ i)は\ )

電子の性質上

\(B '= B \)

そう

\(B(X)= \ sum_ {i = 0} ^ {\ inftyの} \ FRAC {X ^ I} {I]} = A(X)\)

私たちは、この事を持って、私たちが構築する方法を考えてみましょう

奇数は、実際には、何も存在しない場合、\は(X 2I ^ {} \)

ある\(F(X)= \ FRAC {E ^ XE ^ { - X}} {2} \)

ため(G(x)\)\同じように構成されています

\(G(x)= \ FRAC {E ^ X + E ^ { - X}} {2} \)

所望である(F ^ M(X)\ * G ^ {CM}(X)\) \(X ^ N \)係数

二項定理の使用を検討し、積極的に展開します

\(\開始{整列} F ^ M(X)* G ^ {CM}(X)&=(\ FRAC {E ^ XE ^ { - X}} {2})^ M *(\ FRAC {E ^ X + E ^ { - X}} {2})^ {CM} \\&= \ FRAC {\ sum_ {k = 0} ^ {M}( - 1)^ {K} C_ {M} ^ {K } E ^ {(MK)X} E ^ { - KX}} {2 ^ M} * \ FRAC {\ sum_ {k = 0} ^ {CM} C_ {CM} ^ {K} E ^ {(CMK) X} E ^ { - KX}} {2 ^ {CM}} \端{整列} \)

分母は直接素早く計算力、我々その後、分子をさらに簡素化するために使用することができます

それはあります

\(\ sum_ {i = 0} ^ {M} \ sum_ {J = 0} ^ {CM}( - 1)^ iC_m ^ IC_ {CM} ^ JE ^ {(C-2I、2J)X} \)

私たちは、その後、電子の生成機能の形で書かれました

\(\ sum_ {i = 0} ^ {M} \ sum_ {J = 0} ^ {CM}( - 1)^ iC_m ^ IC_ {CM} ^ J \ sum_ {k = 0} ^ {\ inftyの} \ FRAC {(C-2I、2J)^ K}、{K!} \)

私たちのために有用な形で電子ので、単に機能用語係数nを生成します

そう

\(\ sum_ {N = 0} ^ {\ inftyの} \ FRAC {\ sum_ {i = 0} ^ {M} \ sum_ {J = 0} ^ {CM}( - 1)^ iC_m ^ IC_ {CM} ^ {J}(C-2I、2J)^ n}は{N!} X ^ N \)

そのための\(N-!\)自体は、その発生したマスター・電子機能の形式に変換される(\!N-)\無視できます

しかし、我々は確率で、最終的に割るために頼む\(^ N- C \)

あなたが選ぶ必要がありますので、しかし、我々は時間そのものの生成機能を定義するもので、奇数番号を選択し、それらのキャンディーを考慮しませんでした\(^ C_Cメートルを\)

したがって、最終的な答えは(\ FRAC {C_C ^ M \ ^ iC_m ^ 1) - } {2 ^ C-C ^ N} \ sum_ {i = 0} ^ {M} \ sum_ {J = 0} ^ {CM}( IC_ {CM} ^ J(C -2i-2J)^ N \)

この式の分析は、我々は得ることができます(\メートル\ルC)\

そのため、全体的な時間の複雑さがある(O(C ^ 2 * \ \)LOGN)

コード

#include<iostream>
#include<cstdio>
using namespace std;
double ans;
long long c,m,n;
double qkpow(long long a,long long b)
{
    if(b==0)
        return 1;
    if(b==1)
        return a;
    double t=qkpow(a,b/2);
    t=t*t;
    if(b%2==1)
        t=t*a;
    return t;
}
double C(long long n,long long m)
{
    double ret=1;
    for(int i=n;i>=n-m+1;i--)
    {
        ret=ret*i/(n-i+1);
    }
    return ret;
}
int main()
{
    while(cin>>c)
    {
        if(!c)
            break;
        ans=0;
        cin>>n>>m;
        if(m>c||m>n||(n-m)%2==1)
        {
            printf("0.000\n");
            continue;
        }
        for(int i=0;i<=m;i++)
        {
            for(int j=0;j<=c-m;j++)
            {
                ans+=qkpow(-1,i)*C(m,i)*C(c-m,j)*qkpow(c-2*i-2*j,n);
            }
        }
        ans=ans*C(c,m)/qkpow(2,c)/qkpow(c,n);
        printf("%.3lf\n",ans);
    }
    return 0;
}

おすすめ

転載: www.cnblogs.com/loney-s/p/12104371.html