题意:给定k个数字,求最小的正整数n,使得“n的阶乘”是“这k个数字的阶乘的积”的倍数。1<=k<=1e6,数字ai满足1<=ai<=1e7

分析:如果我们能对着k个数字的阶乘的结果分解质因数,那么就可以根据每个质因数的指数来二分最后的答案

   问题的关键就是如何分解a1!a2!a3!a4!.....

   先可以预处理出1..MAX每个数在式子中出现了多少次(对于ai,也就是1~ai中间所有数字出现次数+1),这可以用差分做

   我们知道了cnt[1..MAX]后,接下来就是考虑分解了

   我们从大到小枚举每个数字x

      如果x是合数,我们可以把x分解成一个质因数和另外一个数的乘积,于是我们可以把x位置的次数加到那两个位置上。并且x位置的次数设为0

      如果x是素数,则跳过

   那么最后,每个素数对应的出现总次数就算出来了

   这样是O(n)的

   对于一个数字x的质因数,我们可以在欧拉筛的时候记一下,可以记一下最小的质因数

   欧拉筛也是O(n)的

最新文章

  1. 加速android源码编译
  2. SEO如何辨别真假Baiduspider
  3. ElasticSearch已经配置好ik分词和mmseg分词(转)
  4. ComponentOne Studio for Enterprise 2015 v1 全新发布
  5. Linux之格式化与挂载
  6. mysql 快速生成百万条测试数据
  7. fasterflect-vs-hyperdescriptor-vs-fastmember-vs-reflection/
  8. 一些常用的IOS开发网站
  9. 为啥都不用Qt Quick Controls 2呢
  10. opencv-python 学习笔记1:简单的图片处理
  11. cocos2d触摸事件处理机制(2.x和3.x变化)
  12. 关于EsayUI中datagrid重复提交后台查询数据的问题
  13. 【干货】分享几个写 demo 的思路
  14. Android WebView那些坑之上传文件
  15. TreeMap就这么简单【源码剖析】
  16. iBATIS 深入分析
  17. springboot入门1
  18. ZipUtil
  19. CentOS禁止packagekit离线更新服务的办法
  20. 前端复制粘贴clipBoard.js的使用

热门文章

  1. ACM_01背包(恰好装满)
  2. Required diagnostic data collection for RMAN backup
  3. 【ZT】在微信上有哪些高情商的说话方式 | M周刊(听语音需要60秒,看文字只需10秒)
  4. 【C++】智能指针简述(二):auto_ptr
  5. codeforces_333B_水过
  6. NSAllowsArbitraryLoadsInWebContent NSAllowsArbitraryLoads
  7. Linux终端常用快捷操作
  8. C++ 程序的编译
  9. 怎么忽略ESLint校验
  10. CAD使用GetXData读数据(com接口)