詳細な計算係数NOIP2011

羅バレー(オリジナルのタイトルを参照してくださいhttps://www.luogu.org/problem/show?pid=1313
少し簡単なポイントを見てみたいことはいくつかの問題の組み合わせですNOIP2016、小型飛行機〜(http://blog.csdn.net / a1351937368 / Articleこの記事は、/詳細/ 76907902だった
私はこの質問を使用する必要性についてお話しましょう:組み合わせの数(パスカルの三角形)、パワー
注文が入っている間に、K ^)+斧でタイトルが言う(:感情の問題を解決するのを最初の60分emmmm後に私が作ったB、膜10007を開くために覚えが長いlong int型爆薬を有していてもよい
二項定理によれば、X ^ M * y ^(キロメートルの係数(X + Y)^ kは ) Cであります(k、m)は
、私たちが変更を見てみましょう:(AX +によって)^ X ^ M * y ^(キロのK ) 係数C(K、M)*の ^ M * B ^(キロ)
、この質問この質問は、(実際には、不要)総時間は0msであるプラスポイントカードの形而上学と定数の最適化- ACは良い友達になることができ
ます。コード

#include<iostream>
#include<cstring>
#include<algorithm>
#include<cstdio>

const int maxn=1500;
int c[maxn][maxn];

inline int read(){
    int num;
    char ch;
    while((ch=getchar())<'0' || ch>'9');
    num=ch-'0';
    while((ch=getchar())>='0' && ch<='9'){
        num=num*10+ch-'0';
    }
    return num;
}
inline void out(int x){
    if(x>=10){
        out(x/10);
    }
    putchar(x%10+'0');
}
inline int time(int p,int q){
    if(q==0){
        return 1;
    }
    long long ans=1;
    for(register int i=1;i<=q;++i){
        ans*=p,ans%=10007;
    }
    return ans;
}

int main(){
    int b=read(),a=read(),k=read(),n=read(),m=read();
    long long ans;
    c[0][0]=1;
    for(register int i=1;i<=k;++i){
        c[i][0]=c[i][i]=1;
    }
    for(register int i=1;i<=k;++i){
        for(register int j=1;j<i;++j){
            c[i][j]=(c[i-1][j]+c[i-1][j-1])%10007;
        }
    }
    ans=c[k][m]*(time(a,m)*time(b,n)%10007)%10007;
    out(ans);
    return 0;
}
公開された41元の記事 ウォン称賛58 ビュー60000 +

おすすめ

転載: blog.csdn.net/a1351937368/article/details/78184971