0pts RE 求助
查看原帖
0pts RE 求助
748450
Teto_etf楼主2023/10/4 12:52
#include <bits/stdc++.h>
#define int long long
using namespace std;

int t;
const int maxn = 1e5 + 10;
int n, m, mod;
int fa[maxn];

inline int qp(int a, int b) {
	int ans = 1, B = b;
	a %= mod;
	while (B) {
		if (B & 1) ans = a * ans % mod;
		a = a * a % mod;
		B >>= 1;
	}
	return ans % mod;
}

inline void getfa() {
	fa[0] = 1;
	for (int i = 1; i <= mod; i++) fa[i] = fa[i - 1] * i, fa[i] %= mod;
}

inline int read() {
	int s = 0;
	char c = getchar();
	while (isdigit(c)) s = s * 10 + c - '0', c = getchar();
	return s;
}

inline int C(int n, int m) { return (m > n) ? 0 : fa[n] * qp(fa[m], mod - 2) % mod * qp(fa[n - m], mod - 2) % mod; }

inline int lucas(int n, int m) { return (!m) ? 1 : C(n % mod, m % mod) * lucas(n / mod, m / mod) % mod; }  

signed main() {
	t = read();
	while (t--) {
    	n = read(), m = read(), mod = read(), getfa();
    	cout << lucas(n + m, n) % mod << endl;
	}

	return 0;
}
2023/10/4 12:52
加载中...