*补*““逆元求组合数”(费马小定理

组合数快速求法

#include <bits/stdc++.h>
#define ll long long
#define MAXN 1010
using namespace std;
namespace SHuxinn{
	ll pri[MAXN];
	ll ni[MAXN];
	ll ans1 , ans2;
	ll pow(ll a , ll b){
		ll ans = 1 , base = a ;//base为底数
		while(b){
			if(b&1){
				ans = (base * ans) % mod;
			}
			base = (base * base) % mod;
			b /= 2;
		} 
		return ans;
	}
	void Z(){//oi笑传之打打表 
		pri[0] = 1;
		ni[0] = 1;
		for (int i = 1 ; i < MAXN ; i ++){
			pri[i] = pri[i - 1] * i % mod;
			ni[i] = pow(pri[i] , mod - 2);
		} 
	}
	void Sx5(){
		Z();
		int n , m ;
		cin >> n >> m;
		ans1 = ((pri[n - 1] * ni[m - 1] % mod) * ni[n - m]) % mod;
    	ans2 = ((pri[n + m - 1] * ni[m - 1] % mod) * ni[n]) % mod;
    	printf("%lld %lld" , ans1 , ans2);
	}
} 
int main(){
	SHuxinn::Sx5();
	return 0;
}
posted @ 2025-10-01 15:21  shuxin5  阅读(12)  评论(0)    收藏  举报