poj 2992 Divisors (素数打表+阶乘因子求解)
| Time Limit: 1000MS | Memory Limit: 65536K | |
| Total Submissions: 9617 | Accepted: 2821 |
Description
Input
Output
Sample Input
5 1
6 3
10 4
Sample Output
2
6
16
Source
/*
题意: 求 组合数 C(n,m)= n! / ( (n - m)! * m! ) 的 因数 个数,n<=431 设 n 的标准质因数分解式为 n = p1^a1 * p2^a2 *...* pk^ak , p1,p2..pk是素数
则 n 的 因数 个数 = (a1+1) * (a2+1) *...* (ak+1)
对于任意素数 p ,n!中有( n / p + n / p^2 + n / p^3 +...)个质因子 p
思路: 先打素数表,再对每个素数p求在C(n,m)的个数a,相乘即得结果 */ /*
1.
C(n,m)= n! / ( (n - m)! * m! ) 枚举求解对于每一个素数因子。
居然可以这样。
ans=fun(n,prime[i])-fun(n-m,prime[i])-fun(m,prime[i]);
仔细想想,感觉..哈哈。
2.还有一点,要提。因为本人书写的习惯很差,所以经常在遇到要用__int64 的时候
就全部都用了。这题数据很好,就卡在这了好几处。超时...
其实在素数打表的过程中,我们也有体会,用bool的速度远远要小于标记用int的速度。 */ #include<iostream>
#include<cstdio>
#include<cstring>
#include<cstdlib>
using namespace std; bool s[];
int prime[],len; void make_prime()
{
int i,j;
for(i=;i<=;i++)
s[i]=false;
len=; for(i=;i<=;i++)
if(s[i]==false)
{
prime[++len]=i;
for(j=i*;j<=;j=j+i)
s[j]=true;
}
} int fun(int n,int s)
{
int ans=;
while(n)
{
n=n/s;
ans=ans+n;
}
return ans;
} int main()
{
make_prime();
int n,m,i,ans;
__int64 sum;
while(scanf("%d%d",&n,&m)>)
{
sum=;
for(i=;i<=len;i++)
{
if(prime[i]>n)break;
ans=fun(n,prime[i])-fun(n-m,prime[i])-fun(m,prime[i]);
sum=sum*(ans+);
}
printf("%I64d\n",sum);
}
return ;
}
poj 2992 Divisors (素数打表+阶乘因子求解)的更多相关文章
- uva11610 树状数组+素数打表求因子,好题!
/* uva11610 树状数组+素数打表+离散化 打出的素数范围在2-1000000之间,不超过六位数,然后按照格式翻转成七位数 */ #include<bits/stdc++.h> u ...
- 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) ...
- HDU 2136 素数打表+求质数因子
Largest prime factor Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Oth ...
- POJ 1595 Prime Cuts (ZOJ 1312) 素数打表
ZOJ:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=312 POJ:http://poj.org/problem?id=159 ...
- [ACM] POJ 2635 The Embarrassed Cryptographer (同余定理,素数打表)
The Embarrassed Cryptographer Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 11978 A ...
- POJ 2739 Sum of Consecutive Prime Numbers【素数打表】
解题思路:给定一个数,判定它由几个连续的素数构成,输出这样的种数 用的筛法素数打表 Sum of Consecutive Prime Numbers Time Limit: 1000MS Memo ...
- hdu 5104 素数打表水题
http://acm.hdu.edu.cn/showproblem.php?pid=5104 找元组数量,满足p1<=p2<=p3且p1+p2+p3=n且都是素数 不用素数打表都能过,数据 ...
随机推荐
- numpy 常用方法2
Python之Numpy基础 一个栗子 >>> import numpy as np >>> a = np.arange(15).reshape(3, 5) & ...
- maven 打包 war 包含 WEB-INF/lib 目录
<plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactI ...
- [温故]图解java多线程设计模式(二)
join & interrupt 这俩方法属于线程对象里的方法,属于线程本身的操作. join方法 用于等待一个线程的终止,等待期间将会阻塞,直到被等待的线程终止结束. 所以join可以用来做 ...
- Python使用浏览器模拟访问页面之使用ip代理
最近需要使用浏览器模拟访问页面,同时需要使用不同的ip访问,这个时候就考虑到在使用浏览器的同时加上ip代理. 本篇工作环境为win10,python3.6. Chorme 使用Chrome浏览器模拟访 ...
- (转)nginx+iis实现负载均衡
最近在研究分布式系统架构方面的知识,包括负载均衡,数据库读写分离,分布式缓存redis等.本篇先从负载均衡服务架构入手,关于负载均衡百度百科的定义如下:负载均衡,英文名称为Load Balance,其 ...
- ECharts概念学习系列之ECharts是什么?
不多说,直接上干货! http://echarts.baidu.com/index.html http://echarts.baidu.com/echarts2/index.html 开源的EChar ...
- pip 更换国内源
centos 下 没有找到 pip.conf 操作如下: 进入主目录:cd ~ 创建 .pip 目录: mkdir .pip 进入.pip 创建 pip.conf 文件:cd .pip/ touch ...
- JavaScript 缓动效果
Math.easeout = function (A, B, rate, callback) { if (A == B || typeof A != 'number') { return; } B = ...
- Session 与 Cookie
Session 与 Cookie 的作用都是为了保持访问用户与后端服务器的交互状态.它们本身只是HTTP中的一个配置项,在servlet规范中也只对应一个类而已. 理解 Cookie 通俗地说就是当一 ...
- 什么是SharePoint?
在聊SharePoint开发之前,有必要说下什么是SharePoint. 在我工作的过程中,经常遇到客户对SharePoint不太了解的情况.有客户说,SharePoint太烂了,DropBox能做到 ...