萌新求助开O2RE关O2AC的废物代码
查看原帖
萌新求助开O2RE关O2AC的废物代码
298549
SIXIANG32楼主2024/7/17 17:33

如题,不知道哪里写寄了,求各位巨佬帮帮忙/kel

#include <bits/stdc++.h>
#define int long long
using namespace std;
const int N = 1e6;
int fac[N + 10], ifac[N + 10];
int qpow(int n, int m, int Mod) {
	int res = 1;
	while(m) {
		if(m & 1) res = res * n % Mod;
		n = n * n % Mod, m >>= 1;
	}
	return res;
}
void prep(int n, int m, int Mod) {
	fac[0] = 1;
	for(int p = 1; p <= n + m; p++)
		fac[p] = fac[p - 1] * p % Mod;
	ifac[Mod] = qpow(fac[Mod], Mod - 2, Mod);
	// for(int p = Mod - 1; p >= 1; p--)
	// 	ifac[p] = ifac[p + 1] * (p + 1);
	for(int p = 0; p <= n + m; p++)
		ifac[p] = qpow(fac[p], Mod - 2, Mod); 
}
int lc(int n, int m, int p) {
	return fac[n] * ifac[m] % p * ifac[n - m] % p;
}
int C(int n, int m, int p) {
	if(!m) return 1;
	else return C(n / p, m / p, p) * lc(n % p, m % p, p) % p;
}
signed main() {
	int T;
	cin >> T;
	while(T--) {
		int n, m, p;
		cin >> n >> m >> p;
		prep(n, m, p);
		n = n + m;
		cout << C(n, m, p) << endl;
	}
}
2024/7/17 17:33
加载中...