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主从不同步延迟原理分析及解决方案
1. MySQL数据库主从同步延迟原理.要说延时原理,得从mysql的数据库主从复制原理说起,mysql的主从复制都是单线程的操作,主库对所有DDL和DML产生binlog,binlog是顺序写,所以 ...
- nodejs while-loop
node-while-loop A while loop alternative for Nodejs based on promises. Install $ npm install --save ...
- 2016年第七届蓝桥杯c/c++省赛B组
2016年第七届蓝桥杯c/c++省赛B组 声明:以下答案是我自己做的.不能保证正确,须要參考正确答案的请到其它地方找. 第一题 :煤球数目 题目叙述: 有一堆煤球,堆成三角棱锥形.详细: 第一层放1个 ...
- Python遍历列表
#循环遍历列表 nums = [ss,gg,e,fff,bb] #while循环遍历,但是不推荐使用,因为还要把列表的元素数出来 i = 0 while i<5: print(nums[i]) ...
- WWDC2014苹果的“软件”发布会
WWDC 2014 苹果的"软件"发布会 在今年的 6 月 2 日到 6 日,苹果照例举行了一年一次的全球开发者大会(World Wide Developer Conference ...
- asp识别手机端
<script type="text/javascript"> var mobileAgent = new Array("iphone", &quo ...
- Oracle 一行拆分为多行
测试数据: CREATE TABLE t (str VARCHAR2(30)); INSERT INTO t VALUES ( 'X,Y,Z' ); INSERT INTO t VALUES ( 'X ...
- WPF3.5 使用BINDINGGROUP进行实体类和集合验证
前文介绍了自定义或系统自带的ValidationRule进行验证,这种方法对于单个元素的验证不错.很多时候,我们需要对表单(Form)进行验证,也就是对一个实体类进行验证,或者对一个集合的每项进行验证 ...
- unity3d从零開始(五):了解摄像机
1.简单介绍 Unity的摄像机是用来将游戏世界呈现给玩家的,游戏场景中至少有一台摄像机.也能够有多台. 2.类型 Unity中支持两种类型的摄像机,各自是Perspe ...
- Python笔记——基本数据结构:列表、元组及字典
转载请注明出处:http://blog.csdn.net/wklken/archive/2011/04/10/6312888.aspx Python基本数据结构:列表,元组及字典 一.列表 一组有序项 ...