Empire Strikes Back
题意:
给定$K$个数字,求最小的正整数$n$,使得$\prod_{i=1}^{K}{a_i !} | n!$
解法:
注意到$$\sum_{p为质数}{1/p} = O(loglogn)$$,
这样考虑用筛法筛出来$\prod_{i=1}^{K}{a_i !}$的各个质因数个数(实现时记一下大于每个数字的有多少个$a_i$)
这样只要对于每一个质数求出最小的$tmp$,使得${p_i}^{cnt(i)} | tmp!$
考虑二分,而后求$mid!$内有多少个$p$,可以用容斥或者直接$[mid/p]+[[mid/p]/p] + ...$。
总效率$O(nlognlogn+x(n)*logn)$
#include <iostream>
#include <cstdio>
#include <cstring> #define N 10000010
#define LL long long
#define INF 0x3f3f3f3f3f3f3f3fLL using namespace std; int n,tot;
int a[];
int num[N],prime[N],S[N];
LL cnt[N];
bool v[N]; LL check(LL x,LL n)
{
LL ans=;
for(;n>;n/=x) ans+=n/x;
return ans;
} LL calc(int x,LL n)
{
if(!n) return 0LL;
if(n==) return (LL)x;
LL l=,r=INF;
while(r-l>)
{
LL mid=(l+r)>>;
if(check(x,mid)>=n) r=mid;
else l=mid;
}
for(LL i=l;i<=r;i++)
if(check(x,i)>=n) return i;
return -;
} int main()
{
scanf("%d",&n);
for(int i=;i<=n;i++) scanf("%d",&a[i]),S[a[i]]++;
for(int i=N-;i>=;i--) S[i]+=S[i+];
for(int i=;i<N;i++) num[i]=i;
for(int i=;i<N;i++)
{
if(v[i]) continue;
prime[++tot]=i;
for(int j=i;j<N;j+=i)
{
v[j]=;
while(num[j]%i==)
{
num[j]/=i;
cnt[tot]+=(LL)S[j];
}
}
}
LL ans=;
for(int i=;i<=tot;i++)
ans = max(ans, calc(prime[i],cnt[i]));
cout << ans << endl;
return ;
}
Empire Strikes Back的更多相关文章
- codeforces 300E Empire Strikes Back 数论+二分查找
题意:给定N个数a1,a2,a3...aN,现在要求最小的n满足 n!/(a1!*a2!*...*aN!) 是一个正整数的最小的n. 分析:这题的想法很明确,就是分解a1!*a2!*...*aN!,把 ...
- CF300E. Empire Strikes Back
题目链接(是的我越来越懒了..) 题目大意及数据范围: 数据范围很大.“最小”二字让我们考虑二分,但是上界...不会爆long long让你写高精吧? 我们可以发现,∑ai一定满足条件,所以上界是1e ...
- JSONP的诞生、原理及应用实例
问题: 页面中有一个按钮,点击之后会更新网页中的一个盒子的内容. Ajax可以很容易的满足这种无须刷新整个页面就可以实现数据变换的需求. 但是,Ajax有一个缺点,就是他不允许跨域请求资源. 如果我的 ...
- R语言 recommenderlab 包
recommend li_volleyball 2016年3月20日 library(recommenderlab) ## Warning: package 'recommenderlab' was ...
- R语言 推荐算法 recommenderlab包
recommend li_volleyball 2016年3月20日 library(recommenderlab) library(ggplot2) # data(MovieLense) dim(M ...
- Web挖掘技术
一.数据挖掘 数据挖掘是运用计算机及信息技术,从大量的.不全然的数据集中获取隐含在当中的实用知识的高级过程.Web 数据挖掘是从数据挖掘发展而来,是数据挖掘技术在Web 技术中的应用.Web 数据 ...
- BBC票选出的100部最经典美国电影,你看过几部?
BBC票选出的100部最经典美国电影,你看过几部? 导读:BBC票选出的100部最经典美国电影,你看过几部? 2015-07-27欧美内参欧美内参欧美内参 微信号zoujinoumei 功能介绍< ...
- 人一生必看的100部电影(全球最佳电影排名榜TOP250)
人一生必看的100部电影(全球最佳电影排名榜TOP250) 人的一生能看多少部电影?假设我们每周都看一部,从10岁看到80岁将会看3640部.但是我们也不可能喜欢这全部的电影.大多数的可能,我们会根据 ...
- Web采矿技术
一.数据挖掘 数据挖掘是运用计算机及信息技术,从大量的.不全然的数据集中获取隐含在当中的实用知识的高级过程.Web 数据挖掘是从数据挖掘发展而来,是数据挖掘技术在Web 技术中的应用.Web 数据 ...
随机推荐
- Mysql导出大量数据
outfile 导出文件 select name from t1 into outfile "/tmp/test.txt" infile 导入文件 导入到表t1中的name ...
- Fighting regressions with git bisect---within git bisect algorithm
https://www.kernel.org/pub/software/scm/git/docs/git-bisect-lk2009.html Fighting regressions with gi ...
- UUID随机字符串
public static void main(String[] args){ System.out.println(UUID.randomUUID().toString()); } //输出:698 ...
- Java、C++、Python、Ruby、PHP、C#和JavaScript的理解
Java.C++.Python.Ruby.PHP.C#和JavaScript和日本动漫里的那些大家熟悉的动漫人物结合起来.依据他们的身世.个人经历来生动的表达各编程语言的发展历程.原文内容例如以下: ...
- 在Fedora24/25中轻松安装gcc 4.9
在Fedora24/25中轻松安装gcc 4.9 http://blog.csdn.net/u010158659/article/details/53608285 标签: gccgcc-4.9Fedo ...
- Excel表格数据导入Mysql数据库的方法
1.使用Navicat 连接需要导入的数据库. 2.excel 列的名字最好和数据库的名字一致,便于我们直观的查看好理解. 第一步,先创建好表,和准备好对应的excel文件.在Navicat 中选 ...
- Java Base64加密、解密原理Java代码(转载)
博客来源:http://blog.csdn.net/songylwq/article/details/7578905 Base64是什么: Base64是网络上最常见的用于传输8Bit字节代码的编码方 ...
- android开发——自己定义相机(Camera)开发总结
近期这段时间我一直在开发自己定义相机.谷歌了些网上的demo.发现有非常多各种各样的问题.终于还是从API的camera类開始学习,进行改进. 以下对之前的实现进行一些总结. 官方camera API ...
- Spring MVC的映射请求
一.SpringMVC常用注解 @Controller 声明Action组件 @Service 声明Service组件 @Service("myMovieLister" ...
- Winform拖拽改变无边框窗体大小
大家在进行Winform开发过程中,很容易就可以完成一个窗口的布局工作,但现在的软件界面美化效果一个比一个好,很多软件都是无边框的,于是乎,你是不是也感叹:winform的带边框的窗体如此丑陋,我一定 ...