【BZOJ】2982 combination Lucas

題目傳送門

這題嘛,就是一道Lucas的裸題……暴力水博客.png

直接上Lucas就好啦。

附上AC代碼:

#include <cstdio>
using namespace std;

const int mod=10007;
int jc[mod],inv[mod],t,n,m;

inline int lucas(int a,int b){
    if (a>b) return 0;
    if (b<=mod) return jc[b]*inv[a]%mod*inv[b-a]%mod;
    return lucas(a/mod,b/mod)*lucas(a%mod,b%mod)%mod;
}

int main(void){
    jc[0]=jc[1]=inv[0]=inv[1]=1;
    for (int i=2; i<mod; ++i) jc[i]=jc[i-1]*i%mod,inv[i]=(mod-mod/i)*inv[mod%i]%mod;
    for (int i=2; i<mod; ++i) inv[i]=inv[i-1]*inv[i]%mod;
    for (scanf("%d",&t); t; --t) scanf("%d%d",&n,&m),printf("%d\n",lucas(m,n));
    return 0;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章