*补*““逆元求组合数”(费马小定理
组合数快速求法
#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;
}

浙公网安备 33010602011771号