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的更多相关文章

  1. POJ 2992 求组合数的因子个数

    求C(n,k)的因子个数 C(n,k) = (n*(n-1)*...*(n-k+1))/(1*2*...*k) = p1^k1 * p2^k2 * ... * pt^kt 这里只要计算出分子中素数因子 ...

  2. POJ 2992 Divisors (求因子个数)

    题意:给n和k,求组合C(n,k)的因子个数. 这道题,若一开始先预处理出C[i][j]的大小,再按普通方法枚举2~sqrt(C[i][j])来求解对应的因子个数,会TLE.所以得用别的方法. 在说方 ...

  3. POJ 2992 Divisors

    每个数都可以分解成素数的乘积: 写成指数形式:n=p1^e1*p2^e2*...*pn^en:(p都是素数) 那么n的因数的数量m=(e1+1)*(e2+1)*...*(en+1): 所以用筛选法筛出 ...

  4. poj 2992 Divisors 整数分解

    设m=C(n,k)=n!/((n-k)!*k!) 问题:求m的因数的个数 将m分解质因数得到 p1有a1个 p2有a2个 .... 因为每一个质因数能够取0~ai个(所有取0就是1,所有取ai就是m) ...

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

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

  6. poj 2992 Divisors (素数打表+阶乘因子求解)

    Divisors Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 9617   Accepted: 2821 Descript ...

  7. 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 ...

  8. 从“n!末尾有多少个0”谈起

    在学习循环控制结构的时候,我们经常会看到这样一道例题或习题.问n!末尾有多少个0?POJ 1401就是这样的一道题. [例1]Factorial (POJ 1401). Description The ...

  9. 简单数论 | Day3 部分题解

    A - The Euler function 来源:HDU 2824 计算[a,b]区间内的整数的欧拉函数值,需要掌握单个欧拉函数和函数表的使用. #include <iostream> ...

随机推荐

  1. Jsoup代码解读之六-防御XSS攻击

    Jsoup代码解读之八-防御XSS攻击 防御XSS攻击的一般原理 cleaner是Jsoup的重要功能之一,我们常用它来进行富文本输入中的XSS防御. 我们知道,XSS攻击的一般方式是,通过在页面输入 ...

  2. Linux常用的系统监控shell脚本

    http://www.linuxqd.com下面是我常用的几个Linux系统监控的脚本,大家可以根据自己的情况在进行修改,希望能给大家一点帮助.1.查看主机网卡流量 #!/bin/bash #netw ...

  3. 虚拟机的静态内部 IP 地址

     这是什么? 借助最新的 PowerShell 版本,您现在能够定义和配置特定的内部 IP 地址,该地址可以静态分配给部署在虚拟网络中的 IaaS 虚拟机.使用此功能,您可以直接为虚拟机配置内部 ...

  4. cocos2dx CCControlSwitch

    CCControlSwitch也是extension中的控件,本身比较简单,直接上例子 // on "init" you need to initialize your insta ...

  5. VC中使用GetModuleFileName获取应用程序路径

      .\\与API函数GetModuleFileName获取应用程序目录有何不一样? 采用.\\也能获得应用程序目录,采用GetModuleFileName也能获得,二者有何不同? 一样!一个是相对路 ...

  6. ios蓝牙开发(二)ios连接外设的代码实现

    上一篇文章介绍了蓝牙的技术知识,这里我们具体说明一下中心模式的应用场景.主设备(手机去扫描连接外设,发现外设服务和属性,操作服务和属性的应用.一般来说,外设(蓝牙设备,比如智能手环之类的东西), 会由 ...

  7. xcode 不值钱的动画UIButton

    #import "ViewController.h" @interface ViewController () /** 按钮 */ @property(nonatomic,weak ...

  8. 说一说Servlet 的生命周期

    答:servlet 有良好的生存期的定义, 包括加载和实例化. 初始化. 处理请求以及服务结束.这个生存期由 javax.servlet.Servlet 接口的 init,service 和 dest ...

  9. 重定向输入输出流--freopen

    freopen是被包含于C标准库头文件<stdio.h>中的一个函数,用于重定向输入输出流.该函数可以在不改变代码原貌的情况下改变输入输出环境. C99函数声明: FILE *freope ...

  10. IntelliJ IDEA中创建并运行scala应用程序

    1.安装scala插件 2.创建scala项目 下载scala SDK,如果你已经下载了,选择你所下载的版本,点击OK