求C(n,k)的因子个数

C(n,k) = (n*(n-1)*...*(n-k+1))/(1*2*...*k) = p1^k1 * p2^k2 * ... * pt^kt

这里只要计算出分子中素数因子个数减去分母中的个数

然后每一种因子都有 (cnt+1)种取的可能,乘一下就出来了

但是不能逐个因子分解,试了两次都错了,后来初始的时候,先将这432个数提前预处理分解好保存到vector中

然后用的时候直接提取就行

不然会因为数据量太大超时的

 #include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <ctime>
#include <cstdlib>
#include <vector> using namespace std;
#define ll long long
#define N 500
#define pii pair<int,int>
int cnt[N+] , prime[N+] , tot;
bool check[N+];
vector<pii> v[N]; void init()
{
check[] = true;
for(int i= ; i<=N ; i++)
{
if(!check[i]) prime[tot++] = i;
for(int j=i+i ; j<=N ; j+=i) check[j]=true;
}
} void fenjie(int x)
{
int tmp = x;
for(int i= ; i<tot ; i++){
if(prime[i]>x) break;
int cnt = ;
while(x%prime[i]==){
x/=prime[i];
cnt++;
}
if(cnt) v[tmp].push_back(make_pair(prime[i] , cnt));
}
if(x>) v[tmp].push_back(make_pair(x , ));
} void solve(int n , int k)
{
memset(cnt , , sizeof(int)*(n+));
for(int i= , up=n , dn= ; i<=k ; i++ , up-- , dn++){
int l1 = v[up].size() , l2 = v[dn].size();
for(int i= ; i<l1 ; i++) cnt[v[up][i].first] += v[up][i].second;
for(int i= ; i<l2 ; i++) cnt[v[dn][i].first] -= v[dn][i].second;
}
ll ret = ;
for(int i= ; i<tot ; i++){
if(prime[i]>n) break;
ret *= (cnt[prime[i]]+);
}
printf("%I64d\n" , ret);
} int main() {
// freopen("a.in" , "r" , stdin);
// freopen("out.txt" , "w" , stdout);
init();
for(int i= ; i<= ; i++) {v[i].clear();fenjie(i);}
int n , k;
while(~scanf("%d%d" , &n , &k)){
solve(n , k);
}
}

POJ 2992 求组合数的因子个数的更多相关文章

  1. POJ 2992 Divisors (求因子个数)

    题意:给n和k,求组合C(n,k)的因子个数. 这道题,若一开始先预处理出C[i][j]的大小,再按普通方法枚举2~sqrt(C[i][j])来求解对应的因子个数,会TLE.所以得用别的方法. 在说方 ...

  2. N!分解质因子p的个数_快速求组合数C(n,m)

    int f(int n,int p) { ) ; return f(n/p,p) + n/p; } https://www.xuebuyuan.com/2867209.html 求组合数C(n,m)( ...

  3. poj 2992

    http://poj.org/problem?id=2992 大意:求(n,k)的因子个数 解题思路:(n,k) = n!/(k!(n-k)!)  任意一个数都可以用其质因子来表示  eg: 26 = ...

  4. A - Divisors POJ - 2992 (组合数C的因子数)数学—大数

    题意:就是求组合数C的因子的个数! 先说一下自己THL的算法,先把组合数求出来,然后将这个大数分解,得到各个素数的个数,再利用公式!用最快的大数分解算法 分析一下时间复杂度!   n1/4但是分析一下 ...

  5. POJ 3978 Primes(求范围素数个数)

    POJ 3978 Primes(求范围素数个数) id=3978">http://poj.org/problem? id=3978 题意: 给你一个区间范围A和B,要你求出[A,B]内 ...

  6. 求组合数 C++程序

    一 递归求组合数 设函数为void    comb(int m,int k)为找出从自然数1.2.... .m中任取k个数的所有组合. 分析:当组合的第一个数字选定时,其后的数字是从余下的m-1个数中 ...

  7. 计蒜客 18487.Divisions-大数的所有因子个数-Miller_Rabin+Pollard_rho-超快的(大数质因解+因子个数求解公式) (German Collegiate Programming Contest 2015 ACM-ICPC Asia Training League 暑假第一阶段第三场 F)

    这一场两个和大数有关的题目,都用到了米勒拉宾算法,有点东西,备忘一下. 题目传送门 F. Divisions 传送门 这个题是求一个数的所有因子个数,但是数据比较大,1e18,所以是大数的题目,正常的 ...

  8. 51nod1119(除法取模/费马小定理求组合数)

    题目链接:https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1119 题意:中文题诶- 思路:这题数据比较大直接暴力肯定是不 ...

  9. [2011山东ACM省赛] Binomial Coeffcients(求组合数)

    Binomial Coeffcients nid=24#time" style="padding-bottom:0px; margin:0px; padding-left:0px; ...

随机推荐

  1. -bash: jps: command not found

    linux安装了jdk之后,打jps命令发现找不到这个命令: -bash: jps: command not found 查看java版本java -version,正常. java version ...

  2. 【MRPT】【icp-slam-live】Vs2013+ cmake3.6.1 + mrpt1.4.0+opencv2.9.4+wxWidget3.0.2环境配置

    Win10下Vs2013 + cmake3.6.1 + mrpt1.4.0+opencv2.9.4+wxWidget3.1.0环境配置 所接触过的最令我崩溃的环境配置.之前没有考虑到vs2013 20 ...

  3. JavaScript设计模式与开发实践 - 策略模式

    引言 本文摘自<JavaScript设计模式与开发实践> 在现实中,很多时候也有多种途径到达同一个目的地.比如我们要去某个地方旅游,可以根据具体的实际情况来选择出行的线路. 如果没有时间但 ...

  4. retrifit

    Retrofit 特点 性能最好,处理最快 使用REST API时非常方便: 传输层默认就使用OkHttp: 支持NIO: 拥有出色的API文档和社区支持 速度上比volley更快: 如果你的应用程序 ...

  5. Unity5 新功能解析--物理渲染与standard shader

    Unity5 新功能解析--物理渲染与standard shader http://blog.csdn.net/leonwei/article/details/48395061 物理渲染是UNITY5 ...

  6. 核心Javascript学习

    1. 引言: 1.1. 网页三要素: l HTML(内容) l CSS(外观) l Javascript(行为) 1.2.  OOP的相关概念 1). 对象,方法和属性 l 对象就是指"事物 ...

  7. 3D动画

    先上一道菜 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF ...

  8. FireFox背景亮度修改

    安装stylish 输入:body{filter: brightness(80%);}

  9. jquery 获取属性的值

    jquery中用attr()方法来获取和设置元素属性,attr是attribute(属性)的缩写,在jQuery DOM操作中会经常用到attr(),attr()有4个表达式. 1.  attr( 属 ...

  10. poj-----(2528)Mayor's posters(线段树区间更新及区间统计+离散化)

    Mayor's posters Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 43507   Accepted: 12693 ...