POJ-2992 Divisors(数学知识)

Posted MichaelZona

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了POJ-2992 Divisors(数学知识)相关的知识,希望对你有一定的参考价值。

Divisors

Time Limit: 1000MS

 

Memory Limit: 65536K

Total Submissions: 12085

 

Accepted: 3600

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

Source

​CTU Open 2005​

求一个数的因子个数 可以将它分解质因数分成若干个质数的幂的积,设他们的指数为a1,a2,a3……an 则这个数的因子个数为(a1+1)*(a2+1)*(a3+1)*……*(an+1)  当求a!中出现的多少个p的时候 a!可以表示成1*2*3*……*(p-1)*p*(p+1)*……*(2*p-1)*(2*p)*(2*p+1)*……其中p, 2*p , 3*p……会有因子p所以先加上a/p 但是p², 2*p²……这些数中有两个p    类似的p³ , 2*p³ , 3*p³ ……会有三个p  所以在处理的时候要考虑全 具体看代码

1 #include "bits/stdc++.h"
2 using namespace std;
3 typedef long long LL;
4 const int MAX=435;
5 int n,m,len,pri[MAX];LL ans[MAX][MAX];
6 bool t[MAX];
7 void prime()
8 register int i,j;
9 memset(t,true,sizeof(t));
10 for (i=2;i<MAX;i++)
11 if (t[i]) pri[++len]=i;
12 for (j=1;j<=len && pri[j]*i<MAX;j++) t[pri[j]*i]=false; if (i%pri[j]==0) break;
13
14
15 inline int calc(register int x,register int y)
16 register int an=0;
17 while (x)an+=x/y;x/=y;
18 return an;
19
20 int main()
21 freopen ("divisors.in","r",stdin);freopen ("divisors.out","w",stdout);
22 register int i,j,k;
23 prime();ans[0][0]=1;
24 for (i=1;i<MAX;i++)
25 ans[i][i]=ans[i][0]=1;
26 for (j=1;j<i;j++)
27 ans[i][j]=1;
28 for (k=1;k<=len;k++)
29 ans[i][j]*=calc(i,pri[k])-calc(j,pri[k])-calc(i-j,pri[k])+1;
30
31
32 while (~scanf("%d%d",&n,&m)) printf("%lld\\n",ans[n][m]);
33 return 0;
34

 

以上是关于POJ-2992 Divisors(数学知识)的主要内容,如果未能解决你的问题,请参考以下文章

POJ-2992 Divisors---组合数求因子数目

poj2992 divisors 求组合数的约数个数,阶乘的质因数分解

POJ2992 Divisors(因子个数)

数学知识小结#1

[CSP-S模拟测试]:Divisors(数学)

数学CF27E Number With The Given Amount Of Divisors