POJ 2992 Divisors】的更多相关文章

Divisors Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 9617   Accepted: 2821 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 compu…
题意:给n和k,求组合C(n,k)的因子个数. 这道题,若一开始先预处理出C[i][j]的大小,再按普通方法枚举2~sqrt(C[i][j])来求解对应的因子个数,会TLE.所以得用别的方法. 在说方法前,先说一个n!的性质:n!的素因子分解中的素数p的个数为n/p+n/(p^2)+...+n/(p^k)+... <ACM-ICPC程序设计系列 数论及应用>上的方法,200+ms:首先先求解435以内的素因子.然后预处理出j!中每个素因子的个数,公式如下:num[j][i]=j/prime[i…
每个数都可以分解成素数的乘积: 写成指数形式:n=p1^e1*p2^e2*...*pn^en:(p都是素数) 那么n的因数的数量m=(e1+1)*(e2+1)*...*(en+1): 所以用筛选法筛出1-n的各个素因数的数量: 然后容易得到n!的各个素因数的数量: 因为C(n,k)=n!/k!/(n-k)!: 所以接下来的事就容易办了..... 我的代码: #include<cstdio> using namespace std; ][],sum[][],n,num,kk; ]; long l…
设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<cst…
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 containin…
题意:就是求组合数C的因子的个数! 先说一下自己THL的算法,先把组合数求出来,然后将这个大数分解,得到各个素数的个数,再利用公式!用最快的大数分解算法 分析一下时间复杂度!   n1/4但是分析一下,对于一个1018的大数而言,求一个还可以,但是数据组多了之后肯定会超时! 然后,看了博客! 知识点1, m根据素数的唯一分解.那么m的因子的个数也就是各个素数因子的指数加一再相乘! 表达式: ans=(k1+1)*(k2+1)...*(kv+1) 解析:其实,就是一个母函数,每一项选择这个素数的几…
http://poj.org/problem?id=2992 大意:求(n,k)的因子个数 解题思路:(n,k) = n!/(k!(n-k)!)  任意一个数都可以用其质因子来表示  eg: 26 = 2^1 * 13^1; 240 = 2^4 * 3 *5; 即 x = p1^q1 * p2^2 *p3*q3 ....... 其因子的个数为(q1+1)*(q2+1)*(q3+1).... 所以把 n! , k!, (n-k)! 中的公共因子删去,就得到的 (n,k)的结果 #include <…
求C(n,k)的因子个数 C(n,k) = (n*(n-1)*...*(n-k+1))/(1*2*...*k) = p1^k1 * p2^k2 * ... * pt^kt 这里只要计算出分子中素数因子个数减去分母中的个数 然后每一种因子都有 (cnt+1)种取的可能,乘一下就出来了 但是不能逐个因子分解,试了两次都错了,后来初始的时候,先将这432个数提前预处理分解好保存到vector中 然后用的时候直接提取就行 不然会因为数据量太大超时的 #include <iostream> #inclu…
在学习循环控制结构的时候,我们经常会看到这样一道例题或习题.问n!末尾有多少个0?POJ 1401就是这样的一道题. [例1]Factorial (POJ 1401). Description The most important part of a GSM network is so called Base Transceiver Station (BTS). These transceivers form the areas called cells (this term gave the…
A - The Euler function 来源:HDU 2824 计算[a,b]区间内的整数的欧拉函数值,需要掌握单个欧拉函数和函数表的使用. #include <iostream> #include <cstdio> using namespace std; ; typedef long long ll; int phi[MAX_N]; // ll sum_phi[MAX_N]; 若使用前缀和累加,会爆内存(MLE) void phi_table(int n) { // 计算…