acwing 211 计算系数(二项式定理)

tech2025-09-08  44

题目地址

直接用二项式定理

C k n ⋅ a n ⋅ x n ⋅ b m ⋅ y m C_k^n \cdot a^n \cdot x^n \cdot b^m \cdot y^m Cknanxnbmym 则求 C k n ⋅ a n ⋅ b m C_k^n \cdot a^n \cdot b^m Cknanbm

因为 k < 10007 所以都会有逆元,

#define IOS ios::sync_with_stdio(false);cin.tie(0);cout.tie(0); #include<iostream> #include<algorithm> #include<cstring> #include<cmath> #include<queue> #include<iomanip> #include<cstdio> #define int long long #define sc scanf #define pf printf using namespace std; typedef pair<int,int> pii; typedef long long ll; typedef unsigned long long LL; const int INF = 0x3f3f3f3f; const double eps = 1e-8; const int mod = 10007; const int N = 10010; int fact[N],infact[N]; int n,m,k,a,b; int qmi(int a,int b){ int res = 1; while(b){ if(b&1) res = res*a%mod; a = a*a%mod; b >>= 1; } return res; } void init(){ fact[0] = infact[0] = 1; for(int i=1;i<=k;i++){ fact[i] = fact[i-1]*i%mod; infact[i] = infact[i-1]*qmi(i,mod-2)%mod; } } signed main(){ // IOS; #ifdef ddgo freopen("C:/Users/asus/Desktop/ddgoin.txt","r",stdin); #endif cin>>a>>b>>k>>n>>m; init(); int res = fact[k]*infact[n]%mod*infact[k-n]%mod*qmi(a,n)%mod*qmi(b,m)%mod; cout<<res<<endl; return 0; }
最新回复(0)