关于 lucas 定理
查看原帖
关于 lucas 定理
935656
Luner楼主2024/11/19 18:33

有没有具体的时间复杂度证明?

还有就是一般是什么情况下使用 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;
}
//int lucas(int a,int b){
//	if(a<MOD&&b<MOD) return C(a,b);
//	return C(a%MOD,b%MOD)*lucas(a/MOD,b/MOD)%MOD;
//}
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; 
}

大佬勿喷

2024/11/19 18:33
加载中...