设m=C(n,k)=n!/((n-k)!*k!) 问题:求m的因数的个数

将m分解质因数得到

p1有a1个

p2有a2个

....

因为每一个质因数能够取0~ai个(所有取0就是1,所有取ai就是m)最后的答案就是(a1+1)*(a2+1)*....*

注意不能直接将m分解,由于太大,所以要先分解n,n-k,k,依据他们再来加减。

#include <iostream>
#include <cstdio>
#include <cmath>
#include<cstring>
#include<cstdlib>
#include<vector>
using namespace std;
//C(n,k)=n!/((n-k)!*k!)
struct node
{
int x,num;
node(int a,int b){x=a;num=b;}
};
vector<node> pri[444];
void init()
{
for(int i=1;i<=435;i++)
{
int tn=i;
for(int j=2;j*j<=tn;j++)
{
int cnt=0;
if(tn%j==0)
{
while(tn%j==0) {tn/=j;cnt++;}
pri[i].push_back(node(j,cnt));
}
}
if(tn>1) pri[i].push_back(node(tn,1));
}
}
int pnum[444];
long long cal(int n,int k)
{
int tk=n-k;
memset(pnum,0,sizeof(pnum));
for(int i=n;i>=1;i--) for(int j=0;j<pri[i].size();j++) pnum[pri[i][j].x]+=pri[i][j].num;
for(int i=tk;i>=1;i--) for(int j=0;j<pri[i].size();j++) pnum[pri[i][j].x]-=pri[i][j].num;
for(int i=k;i>=1;i--) for(int j=0;j<pri[i].size();j++) pnum[pri[i][j].x]-=pri[i][j].num;
long long ans=1;
for(int i=1;i<=n;i++)
{
if(pnum[i]) ans*=(pnum[i]+1);
}
return ans;
}
int main()
{
init();
int n,k;
while(~scanf("%d%d",&n,&k))
{
printf("%lld\n",cal(n,k));
}
return 0;
}

poj 2992 Divisors 整数分解的更多相关文章

  1. poj 2992 Divisors (素数打表+阶乘因子求解)

    Divisors Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 9617   Accepted: 2821 Descript ...

  2. POJ 2992 Divisors

    每个数都可以分解成素数的乘积: 写成指数形式:n=p1^e1*p2^e2*...*pn^en:(p都是素数) 那么n的因数的数量m=(e1+1)*(e2+1)*...*(en+1): 所以用筛选法筛出 ...

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

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

  4. POJ 2429 GCD & LCM Inverse (Pollard rho整数分解+dfs枚举)

    题意:给出a和b的gcd和lcm,让你求a和b.按升序输出a和b.若有多组满足条件的a和b,那么输出a+b最小的.思路:lcm=a*b/gcd   lcm/gcd=a/gcd*b/gcd 可知a/gc ...

  5. POJ 1811 Prime Test (Pollard rho 大整数分解)

    题意:给出一个N,若N为素数,输出Prime.若为合数,输出最小的素因子.思路:Pollard rho大整数分解,模板题 #include <iostream> #include < ...

  6. POJ 1811 Prime Test( Pollard-rho整数分解经典题 )

    链接:传送门 题意:输入 n ,判断 n 是否为素数,如果是合数输出 n 的最素因子 思路:Pollard-rho经典题 /************************************** ...

  7. POJ1811_Prime Test【Miller Rabin素数测试】【Pollar Rho整数分解】

    Prime Test Time Limit: 6000MS Memory Limit: 65536K Total Submissions: 29193 Accepted: 7392 Case Time ...

  8. POJ2429_GCD &amp; LCM Inverse【Miller Rabin素数測试】【Pollar Rho整数分解】

    GCD & LCM Inverse Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 9756Accepted: 1819 ...

  9. 整数(质因子)分解(Pollard rho大整数分解)

    整数分解,又称质因子分解.在数学中,整数分解问题是指:给出一个正整数,将其写成几个素数的乘积的形式. (每个合数都可以写成几个质数相乘的形式,这几个质数就都叫做这个合数的质因数.) .试除法(适用于范 ...

随机推荐

  1. Boost下载安装编译配置使用指南(含Windows和Linux

    理论上,本文适用于boost的各个版本,尤其是最新版本1.45.0:适用于各种C++编译器,如VC6.0(部分库不支持),VS2003,VS2005,VS2008,gcc,C++ Builder等.先 ...

  2. boost计算随机数和计算crc32简单示例 - jwybobo2007的专栏 - 博客频道 - CSDN.NET

    boost计算随机数和计算crc32简单示例 - jwybobo2007的专栏 - 博客频道 - CSDN.NET     boost::crc_32_type crc32;       crc32. ...

  3. 跟Google学习Android开发-起始篇-与其它应用程序交互(2)

    6.2从活动获取结果 启动另一个活动不必是单向的.您也可以启动另一个活动,并接收一个结果回来.为了接收一个结果,调用startActivityForResult()(而不是startActivity( ...

  4. 用XCA(X Certificate and key management)可视化程序管理SSL 证书(3)--创建自己定义的凭证管理中心(Certificate Authority)

    在第"用XCA(X Certificate and key management)可视化程序管理SSL 证书(2)---创建证书请求"章节中,我们介绍了怎样用XCA创建SSL证书请 ...

  5. 万方数据知识平台 TFHpple +Xpath解析

    试了一下.基本上适合全部的检索结果. - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loadi ...

  6. Linux红黑树(二)——访问节点

    核心对红黑树使用两点说明 1.头文件 <Documentation/rbtree.txt> Linux's rbtree implementation lives in the file ...

  7. Qt中使用定时器(可使用QObject::timerEvent定时执行,QTimer::singleShot可只触发一次)

    在Qt中使用定时器有两种方法,一种是使用QObiect类的定时器:一种是使用QTimer类.定时器的精确性依赖于操作系统和硬件,大多数平台支持20ms的精确度 1.QObject类的定时器 QObje ...

  8. 14.2.5.4 Physical Structure of an InnoDB Index InnoDB Index 的物理结构

    14.2.5.4 Physical Structure of an InnoDB Index InnoDB Index 的物理结构 所有的InnoDB indexes 是B-trees ,index ...

  9. 【Demo 0003】Java基础-数组

    本章学习要点:       1.  了解数组的基本概念:       2.  掌握数组使用方法:  一.数组的基本概念     1.  数组定义:              同一数据类型数据的集合,在 ...

  10. jQuery 自学笔记—8 常见操作

    jQuery 拥有可操作 HTML 元素和属性的强大方法. jQuery DOM 操作 jQuery 中非常重要的部分,就是操作 DOM 的能力. jQuery 提供一系列与 DOM 相关的方法,这使 ...