poj 2992
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 <iostream>
#include<math.h>
using namespace std;
long long res[][];
int prime[];
void get_prime(){
// cout<<"---------->"<<endl;
int m = (int)sqrt(+0.5);
prime[] = prime[] =;
for(int i=;i<=m;i++){
if(!prime[i]){
// cout<<i<<endl;
for(int j=i*i;j<=;j+=i)
prime[j] =;
}
} } void solve(){ int i,j,n;
for(int i=;i<=;i++){//到i的阶乘为止,其所有质因子的个数
for(int j=;j<i;j++)
res[i][j] = res[i-][j];//只需再求i即可,,前面的一样。。
n =i;
for(j=;j<=&&n>;j++){
if(!prime[j]){
while(n%j==){//注意是%j 而不是%prime[j]。。
res[i][j]++;
n = n/j;
}
}
}
if(n>)
res[i][n]++;
}
}
int main()
{
get_prime();
solve();
/*for(int i=1;i<=10;i++)
if(!prime[i])
cout<<i<<endl;*/
int n,k;
while(cin>>n>>k){
long long sum =;
for(int i=;i<=n;i++)
if(!prime[i])
sum *=(res[n][i]-res[k][i]-res[n-k][i]+);//不要忘记+1.
cout<<sum<<endl;
}
return ;
}
poj 2992的更多相关文章
- POJ 2992 求组合数的因子个数
求C(n,k)的因子个数 C(n,k) = (n*(n-1)*...*(n-k+1))/(1*2*...*k) = p1^k1 * p2^k2 * ... * pt^kt 这里只要计算出分子中素数因子 ...
- POJ 2992 Divisors (求因子个数)
题意:给n和k,求组合C(n,k)的因子个数. 这道题,若一开始先预处理出C[i][j]的大小,再按普通方法枚举2~sqrt(C[i][j])来求解对应的因子个数,会TLE.所以得用别的方法. 在说方 ...
- POJ 2992 Divisors
每个数都可以分解成素数的乘积: 写成指数形式:n=p1^e1*p2^e2*...*pn^en:(p都是素数) 那么n的因数的数量m=(e1+1)*(e2+1)*...*(en+1): 所以用筛选法筛出 ...
- poj 2992 Divisors 整数分解
设m=C(n,k)=n!/((n-k)!*k!) 问题:求m的因数的个数 将m分解质因数得到 p1有a1个 p2有a2个 .... 因为每一个质因数能够取0~ai个(所有取0就是1,所有取ai就是m) ...
- A - Divisors POJ - 2992 (组合数C的因子数)数学—大数
题意:就是求组合数C的因子的个数! 先说一下自己THL的算法,先把组合数求出来,然后将这个大数分解,得到各个素数的个数,再利用公式!用最快的大数分解算法 分析一下时间复杂度! n1/4但是分析一下 ...
- poj 2992 Divisors (素数打表+阶乘因子求解)
Divisors Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 9617 Accepted: 2821 Descript ...
- 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 ...
- 从“n!末尾有多少个0”谈起
在学习循环控制结构的时候,我们经常会看到这样一道例题或习题.问n!末尾有多少个0?POJ 1401就是这样的一道题. [例1]Factorial (POJ 1401). Description The ...
- 简单数论 | Day3 部分题解
A - The Euler function 来源:HDU 2824 计算[a,b]区间内的整数的欧拉函数值,需要掌握单个欧拉函数和函数表的使用. #include <iostream> ...
随机推荐
- git 导入代码到已有仓库
git remote add origin https://----------- git push -u origin master //这两行将该目录下的文件推送到远端(origin)上的 &qu ...
- 刷新指定行或区 cell
//一个section刷新 NSIndexSet *indexSetA = [[NSIndexSet alloc]initWithIndex:3]; //刷新第3段 [tableview rel ...
- Oracle 11g 的server结果缓存result_cache_mode
对于常常要查的结果集,返回少量记录,server端是能够缓存的,结果集保存在共享池中,假设是绑定变量,绑定变量的值也要一样. SQL> show parameter result_cache N ...
- c++栈管理库TCMalloc、jeMalloc
示例:http://blog.csdn.net/chosen0ne/article/details/9338591
- iOS面试题03-UI控件
UI控件面试题 1.怎么解决缓存池端的问题(cell) 回答:1.>OS中不存在缓存池的情况,因为通常我们iOS开发,对象都是在需要的时候才会创建, 有种常用的说话叫做懒加载,还有在UITabl ...
- fullPage.js插件用法(转发)
fullPage.js主要功能有: 支持鼠标滚动 支持前进后退和键盘控制 多个回调函数 支持手机.平板触摸事件 支持 CSS3 动画 支持窗口缩放 窗口缩放时自动调整 可设置滚动宽度.背景颜色.滚动速 ...
- JBoss 系列七十:一个简单的 CDI Web 应用
概述 本文通过一个简单的 CDI Web 应用演示dependency injection, scope, qualifiers 以及EL整合.应用部署完成后我们可以通过http://localhos ...
- select标签操作大全
http://blog.csdn.net/hhhh2012/article/details/8610336
- web压缩gzip响应
String data = "ggrgrgw4gergergregerge"; byte b[] = data.getBytes(); String gzipValue = req ...
- System.Reflection.Emit学习
C#反射发出System.Reflection.Emit学习 分享: 1 一.System.Reflection.Emit概述 Emit,可以称为发出或者产生.与Emit相关的类基本都存在于Syste ...