Divisors
http://poj.org/problem?id=2992
Time Limit: 1000MS
Memory Limit: 65536K

Description

Your task in this problem is to determine the number of divisors of Cnk. Just for fun -- or do you need any special reason for such a useful computation?

Input

The input consists of several instances. Each instance consists of a single line containing two integers n and k (0 ≤ k ≤ n ≤ 431), separated by a single space.

Output

For each instance, output a line containing exactly one integer -- the number of distinct divisors of Cnk. For the input instances, this number does not exceed 263 - 1.

Sample Input

5 1
6 3
10 4

Sample Output

2
6
16

题目大意:求c(n,m)的因子个数

思路:假设将一个数表示成它的质因数分解,如A=a^p1*b^p2*c^p3*...*n^pn.

那么它的约数个数就是:ans=(p1+1)*(p2+1)*(p3+1)*...*(pn+1).

而C(n,k)=n!/[(k!*(n-k)!],c[n][k]代表n的阶乘时能够分解出几个k。

那么只需要求出他们的阶乘对于每一个素数的个数就可以了。

公式:ai=c[n][prime[i]]-c[k][prime[i]]-c[(n-k)][prime[i]]。ans=a1*a2.*...*ak (k代表当prime[k]小于n的时候)。

#include <stdio.h>
using namespace std;
const int maxn = 432;
bool vis[maxn];
int num[maxn][maxn];
int main()
{int n,k,i,j,t;//判断素数 for(i=2;i<22;i++){if(!vis[i]){for(j=i*i;j<maxn;j+=i)vis[j]=true;}        }   //质因数计数公式       for(i=2;i<maxn;i++){for(j=0;j<=i;j++)num[i][j]=num[i-1][j];t=i;for(j=2;j<maxn&&t>1;j++){if(!vis[j]){while(t%j==0){num[i][j]++;t/=j;}}              }           }while(~scanf("%d%d",&n,&k)){__int64 ans=1;if(k&&n-k)//k==0||(n-k)==0时,Cnk为1 {for(i=2;i<=n;i++){if(!vis[i])ans*=num[n][i]-num[k][i]-num[n-k][i]+1;}              }           printf("%I64d\n",ans);}return 0;
}

质因数计数公式 POJ 2992 Divisors相关推荐

  1. 素数计数公式全面拉丁化改写-小有改进-Meissel公式-梅塞尔-Lehmer公式-莱梅=勒梅尔-筛法三种形式-孟庆余公式(转载)...

    何冬州的百度空间Blog   本文的另一版本:  http://hi.baidu.com/wsktuuytyh/blog/item/396a934ac679680208f7ef2c.html    信 ...

  2. COUNT计算机公式,EXCEL的计数公式/excle 公式 count

    excel中的count函数怎么用 COUNT 请参阅 返回包含数字以及包含参表数字的单元格的个数用函数 COUNT 可以计算单元格区域或数字数组中数字字段的输入项个数. 语法 COUNT(value ...

  3. 等差数列和特殊矩阵压缩公式/下标计数公式的应用

    文章目录 等差数列和特殊矩阵压缩公式/下标计数公式的应用 ref 等差数列 递推公式 通项 等差数列和 等差求和公式的应用 数列/数组游标计数公式 问题对象 问题内容 问题变体 A指针序号差/地址增量 ...

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

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

  5. 概率论的学习整理--番外1:可重复且无次序的计数公式C(n+k-1,k) 的例题 : 同时丢3个骰子,会有多少种情况?答案不是216而是56!

    总结:题目理解 同时丢3个骰子,3个骰子同时丢,其结果是不能分辨出骰子的次序的,这样可能的情况是6*6*6=216 所以也可以等价视为,丢1个骰子,实验3次,但是这样的实验可以记录次序,所以要去掉排序 ...

  6. 组合数学——计数原理和计数公式

    加法原理和乘法原理 加法原理是分类,乘法原理是分步.这个不用多解释了. 无重复的排列组合 排列 从nnn个不同元素中取m(m≤n)'>m(m≤n)m(m≤n)m(m\leq n)个不同的元素,按 ...

  7. 论文公式编号右对齐_论文不会写?最详细的论文排版技巧

    说明 本文根据严思奇在2017年在"重庆邮电大学硕士学位论文"撰写期间的粗陋经验总结而作.使用的word版本为word2016. 在使用时,首先应该根据第2章,按照顺序设置好所有需 ...

  8. 电子科技大学 图论期末复习 公式索引

    title: 图论期末考试复习 date: 2020-08-17 09:01:09 tags: 参考资料:<图论及其应用> 高等教育出版社 张先迪 / 李正良 仅用于方便复习公式查阅,公式 ...

  9. n!的任意质因数的个数

    n! = 123*-*n 首先分析质因数2的个数 参考文献:https://www.cnblogs.com/daifei/p/3766015.html 算法:N!质因数2的个数 = [N / 2] + ...

最新文章

  1. C++中 public,protected, private 访问标号小结
  2. 520这天,我突然意识到,她根本配不上我这么聪明的男人!
  3. Springboot里输出的html里包含script标签页会怎样
  4. day32—CSS多列布局学习
  5. IDC:2017年中国网络安全市场分析与2018年预测
  6. python framework jdon_python – Django Rest Framework和JSONField
  7. GitHub使用.md
  8. 专访阿里云技术掌舵人蒋江伟:中台是企业的未来
  9. 蚂蚁金服 mPaaS 模块化开发与架构重构深度解析
  10. 我们到底在恐惧什么?
  11. 初步认识计算机网络的结构特点
  12. c++ 中关于引用(1)
  13. wordpress网站地图自动生成
  14. 服务器装虚拟机要做阵列吗,vm虚拟机做磁盘阵列
  15. PS如何快速使用对象选择工具抠图?
  16. html是网页吗,web是网页吗?
  17. 关于Linux下Docker内网离线安装的一些笔记
  18. Synaptic Ubuntu软件管理工具
  19. 给科研背景出身公司创始人的九条干货建议
  20. 论文阅读_人脸检测:S3FD: Single Shot Scale-invariant Face Detector

热门文章

  1. 【C语言】位运算符号集
  2. 苹果cms模板_怎么下载苹果cmsv10仿优酷模板?
  3. 一不小心搞到了某大学的一堆校园上网帐号。
  4. 恢复数据库sql语句:sourse
  5. STLINK,ST-LINK Utility无法连接单片机
  6. 【CE入门教程】使用Cheat Engine(CE)查找“扫雷”中“雷数”、“旗子”、“笑脸”和“计时器”的内存地址以及“初级”、“中级”和“高级”的棋盘内存地址范围
  7. LSF_管理软件许可证和其他共享资源
  8. 卡莱特led显示屏调试教程_麒麟电子|LED控制卡|LED显示屏|卡莱特同步卡使用千兆网卡调试步骤 通用 - Powered by Discuz!...
  9. @RequiredArgsConstructor注解使用
  10. LVS 负载均衡集群详细介绍