AcWing 888 求组合数(IV)题解
发布时间
阅读量:
阅读量

首先计算所有小于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]){
st[i] = true;
prime[c
全部评论 (0)
还没有任何评论哟~
