zcmu 1549 組合數(盧卡斯定理)

2021-10-16 03:22:51 字數 571 閱讀 9632

給你n,m,p,要你求組合數c(n, m)%p

範圍:(1 <= m <= n <= 10^9, m <= 10^4, 0< p <100 , p是素數)

n和m範圍很大,直接求c會t,但是這裡模數p很小,那麼可以從p下手。

c(n, m) = n! * (n - m)! % p * m! % p

應用一下 盧卡斯定理:對於非負整數m,n和質數p

當nusing namespace std;

#define ll long long

const int maxn = 105;

ll fac[maxn], inv[maxn], p;

// fac[i]表示i的階乘對p取模

// inv[i]表示i的階乘的逆元對p取模

void init(ll n)

ll c(ll n, ll m)

ll lucas(ll n, ll m)

ll _pow(ll a, ll b)

return ans;

}int main()

return 0;

}

數論 組合數 盧卡斯定理

使用遞推式cab ca 1b c a 1b 1 c a b c b c cab c a 1b ca 1b 1 求解階乘 1e9 7 t 1 05 t 10 5 t 1051 b a 2000 1 leq b leq a leq 2000 1 b a 2000 include using namesp...

組合數取模(盧卡斯定理)

組合數取模 盧卡斯定理 模板 const int n 1e5 5 const int mod 10007 ll fac n 用於求取階乘取模 ll n void init ll quick pow ll a,ll b return ans ll c ll n,ll m ll lucas ll n,l...

hdu 5698瞬間移動(組合數取模 盧卡斯定理)

資料範圍 2 n,m 100000,mod 1000000007。思路 打表可以發現這個方法數是乙個楊輝三角。根據楊輝三角的性質,可以知道楊輝三角裡面第n行,第m列的數值為c n 1,m 1 所以我們只要將題目所給的行列轉化一下,然後計算組合數即可。由於n,m給的範圍比較大。不能直接計算,這是就用到...