思路:先算出小于a的所有质数,再得出a、b、(a - b)的阶乘中包含的质数的次数,用get(a) - get(b) - get(a - b)即得出组合数中包含的各个质数的次数,然后利用大整数乘法,将这些质数(带次数)乘积算出来,即得结果
#include<iostream>
#include<algorithm>
#include<vector>
using namespace std;
const int N = 5010;
int prime[N], cnt;//记录质数和质数的个数
bool st[N];//记录一个数是不是质数
int sum[N];//记录一个质数在组合数中的次数
void get_prime(int n){
//欧拉筛
for(int i = 2; i <= n; i ++ ){
if(!st[i]