题意:就是求组合数C的因子的个数!

先说一下自己THL的算法,先把组合数求出来,然后将这个大数分解,得到各个素数的个数,再利用公式!用最快的大数分解算法

分析一下时间复杂度!   n1/4但是分析一下,对于一个1018的大数而言,求一个还可以,但是数据组多了之后肯定会超时!

然后,看了博客!

知识点1,

  m根据素数的唯一分解。那么m的因子的个数也就是各个素数因子的指数加一再相乘!

  表达式: ans=(k1+1)*(k2+1)...*(kv+1)

  解析:其实,就是一个母函数,每一项选择这个素数的几次指数(要把0这种特殊情况考虑进去!所以要加1)________实在不懂请自觉类比二项式(a+b)k是不是每次选a或者选b。

知识点2,

这样就求出来了,各个素数所对应的素数的次数!

然后,把这三个数,素数唯一分解了,是不是一定是相同的素数(因为整除),则是指数相减!

ac代码

#include<cstdio>
#include<cstring>
#define ll long long
#define N 440
int prime[N];
bool vis[N];
int Prime()
{
int cnt = ;
for (int i = ; i <= N; ++i)
{
if (!vis[i])
{
prime[cnt++] = i;
}
for (int j = ; j < cnt&&i*prime[j] <= N; ++j)
{
vis[i*prime[j]] = ;
if (i%prime[j] == )break;
}
}
return cnt;
}
int num[];
int Fcnt;
void solve(int n,int y)
{
for (int i = ; i < Fcnt; ++i)
{
int c = , p = prime[i];
while (n / p )
{
c += n / p;
p *= prime[i];
}
num[i] = num[i] + y*c;
}
} int main()
{
Fcnt=Prime();
int n, m;
while (scanf("%d%d", &n, &m) != EOF){
memset(num, , sizeof(num));
solve(n, );
solve(m, -);
solve(n - m, -);
ll ans = ;
for (int i = ; i < Fcnt; ++i)
{
ans *= (num[i] + );
}
printf("%lld\n", ans);
}
}

A - Divisors POJ - 2992 (组合数C的因子数)数学—大数的更多相关文章

  1. Day7 - G - Divisors POJ - 2992

    Your task in this problem is to determine the number of divisors of Cnk. Just for fun -- or do you n ...

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

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

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

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

  4. POJ 2992 Divisors

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

  5. poj 2992 Divisors 整数分解

    设m=C(n,k)=n!/((n-k)!*k!) 问题:求m的因数的个数 将m分解质因数得到 p1有a1个 p2有a2个 .... 因为每一个质因数能够取0~ai个(所有取0就是1,所有取ai就是m) ...

  6. poj 2992

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

  7. poj 3252 组合数

        主要考察组合数知识,初始化的时候参考公式 首先先推个公式,就是长度为len的Round Numbers的个数.      长度为len,第一位肯定是1了.      那么后面剩下 len-1位 ...

  8. poj Code(组合数)

    Code Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 9918   Accepted: 4749 Description ...

  9. POJ 2992 求组合数的因子个数

    求C(n,k)的因子个数 C(n,k) = (n*(n-1)*...*(n-k+1))/(1*2*...*k) = p1^k1 * p2^k2 * ... * pt^kt 这里只要计算出分子中素数因子 ...

随机推荐

  1. 使用Asp.Net Core MVC 开发项目实践[第二篇:EF Core]

    在项目中使用EF Core还是比较容易的,在这里我们使用的版本是EF Core 2.2. 1.使用nuget获取EF Core包 这个示例项目使用的是SQLSERVER,所以还需要下载Microsof ...

  2. 数据库内连接GROUP BY查询外键表数据行的总数

    最近看了看SQL,刚好遇到这个问题. INNER JOIN [外键表] ON [主键表] 内链接,用 GROUP BY 分组外键数据,COUNT(*)计算该外键数据总行数,最后用 ORDER BY 排 ...

  3. 一款非常好用的万能本地离线激活工具,支持Office2016、Office2015、Win7、Win8/8.1/10、Win2008/2012/R2系统,全自动安装且无需联网状态即可全部激活,它由国外网友heldigard制作,小巧、简单,只需运行而不用去管它自动激活,能自动激活为180天无限循环,欢迎大家下载使用

    office2016激活工具(KMS)是一款非常好用的万能本地离线激活工具,支持Office2016.Office2015.Win7.Win8/8.1/10.Win2008/2012/R2系统,全自动 ...

  4. Redis入门 -- Redis安装与配置

    Redis入门 -- Redis安装与配置 Redis的安装 Redis的安装,我这里使用的是虚拟机. 为了让主机和虚拟机之间可以顺利通信,按照以下步骤进行: 1. 将网络连接模式改为桥接 2. re ...

  5. 【转】Dubbo和JDK的SPI究竟有何区别?

    前言 上一篇简单的介绍了spi的基本一些概念,但是其实Dubbo对jdk的spi进行了一些改进,具体改进了什么,来看看文档的描述 JDK 标准的 SPI 会一次性实例化扩展点所有实现,如果有扩展实现初 ...

  6. MySQL and Sql Server:Getting metadata using sql script (SQL-92 standard)

    MySQL: use sakila; -- show fields from table_name; -- show keys from table_name; SELECT `REFERENCED_ ...

  7. TUM数据集rgbd_benchmark工具的使用方法

    # 在学习视觉slam过程中,需要对数据集合进行预处理和对slam或者跟踪结果进行评价,TUM提供一组这样的工具,为了自己以后方便查找,于是把它记录下来 一.RGBD_Benchmark工具下载链接: ...

  8. Centos 6.8 系统升级默认的Python版本

    1.编译安装python2.7 # wget https://www.python.org/ftp/python/2.7.12/Python-2.7.12.tgz # Python-2.7.12.tg ...

  9. U8 应付款管理 单据类型 分析

    Ap_CloseBill   收付款单主表 Ap_CloseBills 收付款单子表 cVouchType 在收付款单主表中  ,用于区分单据为收款单还是付款单(48,49)  49:付款单 48:收 ...

  10. 程序员简单打造一个灵活智能的自动化运维系统C#实例程序

    你是一个程序员,被派去管理公司500台计算机.这些机器可能需要执行一些自动化任务,一台台手动操作会把你累死.重复性的工作还是交给电脑处理,怎么解决这个问题呢?一个自动化的运维系统是必须的.自己实现的好 ...