有没有具体的时间复杂度证明?
还有就是一般是什么情况下使用 lucas 定理?
以下代码为什么会 WA 。
#include<bits/stdc++.h>
using namespace std;
#define int long long
const int N = 110;
int MOD;
int qpow(int a,int b){
int res = 1;
while(b) {
if(b & 1) res = res * a % MOD;
a = a * a % MOD;
b >>= 1;
}
return res;
}
int C(int a,int b){
if(b > a) return 0;
int res = 1;
for(int i = 1, j = a; i <= b; i ++, j --) {
res = res * j % MOD;
res = res * qpow(i, MOD - 2) % MOD;
}
return res;
}
void solve(){
int n,m;
cin >> n >> m >> MOD;
cout << C(n + m, n) % MOD <<'\n';
}
signed main() {
int T;
cin >> T;
while(T --) {
solve();
}
return 0;
}
大佬勿喷