题意:就是求组合数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. JWT 从入门到精通

    什么是JWT Json web token (JWT), 是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准((RFC 7519).该token被设计为紧凑且安全的,特别适用于分布式站点 ...

  2. [JLOI 2016]成绩比较

    Description 题库链接( \(\text{bzoj}\) 不知道为什么过不了啊... \(\text{luogu loj}\) 都能过...就给 \(\text{luogu}\) 的链接了. ...

  3. 对于Ext.data.Store 介紹 与总结,以及对以前代码的重构与优化

    对于Ext.data.Store 一直不是很了解,不知道他到底是干嘛的有哪些用处,在实际开发中也由于不了解也走了不少弯路, store是一个为Ext器件提供record对象的存储容器,行为和属性都很象 ...

  4. appendChild简单表格的增删改查

    ---恢复内容开始--- <!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml"><hea ...

  5. Python3 系列之 环境配置篇

    以下所有操作是基于 Windows10 和 Python3.6 来进行的,其它平台和 python 版本请自行百度. 高效使用 Visual Studio Code 系列 环境安装 1.Python ...

  6. Python全栈学习_day002知识点

    今日大纲: . while循环 . 格式化输出 . 运算符 . 编码初识 1. while循环 - while 无限循环: while True: # 死循环 print('大悲咒') print(' ...

  7. Harbor 搭建

    环境:centos7.4 docker-ce 18.06.0-ce docker-compose version 1.18.0 harbor 版本: 1.5.2 harbor 安装参考 https:/ ...

  8. 【代码笔记】Web-HTML-简介

    一,效果图. 二,代码. <!DOCTYPE html> <html> <head> <meta charset="utf-8"> ...

  9. MVC与单元测试实践之健身网站(完)-备案与部署

    主页-http://www.zhixin9001.cn/Home/Introduce GitHub- https://github.com/zhixin9001/Fitness 这是关于Fit网站的最 ...

  10. 将 Windows 虚拟机从非托管磁盘转换为托管磁盘

    如果有使用非托管磁盘的现有 Windows 虚拟机 (VM),可通过 Azure 托管磁盘服务将 VM 转换为使用托管磁盘. 此过程会同时转换 OS 磁盘和任何附加的数据磁盘. 本文介绍如何使用 Az ...