传送门

Description

有n个正整数a[i],设它们乘积为p,你可以给p乘上一个正整数q,使p*q刚好为正整数m的阶乘,求m的最小值。

Input

共两行。

第一行一个正整数n。

第二行n个正整数a[i]。

Output

共一行

一个正整数m。

Sample Input

1

6

Sample Output

3

样例解释:

当p=6,q=1时,p*q=3!

Data Constraint

对于10%的数据,n<=10

对于30%的数据,n<=1000

对于100%的数据,n<=100000,a[i]<=100000

Code

  1. //By Menteur_Hxy
  2. #pragma GCC diagnostic error "-std=c++11"
  3. #pragma GCC optimize("-fdelete-null-pointer-checks,inline-functions-called-once,-funsafe-loop-optimizations,-fexpensive-optimizations,-foptimize-sibling-calls,-ftree-switch-conversion,-finline-small-functions,inline-small-functions,-frerun-cse-after-loop,-fhoist-adjacent-loads,-findirect-inlining,-freorder-functions,no-stack-protector,-fpartial-inlining,-fsched-interblock,-fcse-follow-jumps,-fcse-skip-blocks,-falign-functions,-fstrict-overflow,-fstrict-aliasing,-fschedule-insns2,-ftree-tail-merge,inline-functions,-fschedule-insns,-freorder-blocks,-fwhole-program,-funroll-loops,-fthread-jumps,-fcrossjumping,-fcaller-saves,-fdevirtualize,-falign-labels,-falign-loops,-falign-jumps,unroll-loops,-fsched-spec,-ffast-math,Ofast,inline,-fgcse,-fgcse-lm,-fipa-sra,-ftree-pre,-ftree-vrp,-fpeephole2",3)
  4. #pragma GCC target("avx","sse2")
  5. #include<set>
  6. #include<map>
  7. #include<cmath>
  8. #include<cstdio>
  9. #include<vector>
  10. #include<cstdlib>
  11. #include<cstring>
  12. #include<iostream>
  13. #include<algorithm>
  14. #define int long long
  15. #define F(i,a,b) for(register int i=(a);i<=(b);i++)
  16. #define R(i,a,b) for(register int i=(b);i>=(a);i--)
  17. #define E(i,u) for(register int i=head[u];i;i=nxt[i])
  18. #define getchar() (p1==p2&&(p2=(p1=buf)+fread(buf,1,1<<21,stdin)),p1==p2?EOF:*p1++)
  19. using namespace std;
  20. typedef long long LL;
  21. char buf[1<<21],*p1,*p2;
  22. inline int read() {
  23. int x=0,f=1; char c=getchar();
  24. while(!isdigit(c)) {if(c=='-')f=-f;c=getchar();}
  25. while(isdigit(c)) x=(x<<1)+(x<<3)+c-48,c=getchar();
  26. return x*f;
  27. }
  28. const int N=100010;
  29. int n,tot,cnt;
  30. int pri[N],vis[N],mip[N],p[N],M[N];
  31. void resolve(int x) {
  32. while(mip[x]!=x) {
  33. if(!M[mip[x]]) p[++cnt]=mip[x];
  34. M[mip[x]]++; x/=mip[x];
  35. }
  36. if(mip[x]==x&&x!=1&&x!=0) {
  37. if(!M[mip[x]]) p[++cnt]=mip[x];
  38. M[mip[x]]++;
  39. }
  40. }
  41. bool jud(int x) {
  42. F(i,1,cnt) {
  43. int res=0,tmp=p[i];
  44. while(tmp<=x) res+=x/tmp,tmp*=p[i];
  45. if(res<M[p[i]]) return 0;
  46. } return 1;
  47. }
  48. void init() {
  49. mip[1]=1;
  50. F(i,2,100000) {
  51. if(!vis[i]) pri[++tot]=i,mip[i]=i;
  52. for(register int j=1;j<=tot&&i*pri[j]<=100000;j++) {
  53. vis[i*pri[j]]=1;
  54. mip[i*pri[j]]=pri[j];
  55. if(i%pri[j]==0) break;
  56. }
  57. }
  58. }
  59. signed main() {
  60. freopen("factorial.in","r",stdin);
  61. freopen("factorial.out","w",stdout);
  62. n=read();
  63. init();
  64. F(i,1,n) resolve(read());
  65. // jud(10);
  66. // F(i,1,cnt) cout<<p[i]<<" ";cout<<endl;
  67. int l=1,r=5e6;
  68. while(l<=r) {
  69. int mid=(l+r)>>1;
  70. if(jud(mid)) r=mid-1;
  71. else l=mid+1;
  72. // printf("%d\n",mid);
  73. }
  74. printf("%d",l);
  75. return 0;
  76. }

[jzoj5791]【NOIP2008模拟】阶乘 (数学)的更多相关文章

  1. JZOJ 5791. 【NOIP2008模拟】阶乘

    5791. [NOIP2008模拟]阶乘 (File IO): input:factorial.in output:factorial.out Time Limits: 1000 ms  Memory ...

  2. JZOJ 5773. 【NOIP2008模拟】简单数学题

    5773. [NOIP2008模拟]简单数学题 (File IO): input:math.in output:math.out Time Limits: 1000 ms  Memory Limits ...

  3. JZOJ 5777. 【NOIP2008模拟】小x玩游戏

    5777. [NOIP2008模拟]小x玩游戏 (File IO): input:game.in output:game.out Time Limits: 1000 ms  Memory Limits ...

  4. JZOJ 5809. 【NOIP2008模拟】数羊

    5809. [NOIP2008模拟]数羊 (File IO): input:sheep.in output:sheep.out Time Limits: 1000 ms  Memory Limits: ...

  5. JZOJ 5793. 【NOIP2008模拟】小S练跑步

    5793. [NOIP2008模拟]小S练跑步 (File IO): input:run.in output:run.out Time Limits: 2000 ms  Memory Limits:  ...

  6. JZOJ 5776. 【NOIP2008模拟】小x游世界树

    5776. [NOIP2008模拟]小x游世界树 (File IO): input:yggdrasil.in output:yggdrasil.out Time Limits: 1500 ms  Me ...

  7. JZOJ 5775. 【NOIP2008模拟】农夫约的假期

    5775. [NOIP2008模拟]农夫约的假期 (File IO): input:shuru.in output:shuru.out Time Limits: 1000 ms  Memory Lim ...

  8. JZOJ 5771. 【NOIP2008模拟】遨游

    5771. [NOIP2008模拟]遨游 (File IO): input:trip.in output:trip.out Time Limits: 2000 ms  Memory Limits: 2 ...

  9. JZOJ5776. 【NOIP2008模拟】小x游世界树

    题目:[NOIP2008模拟]小x游世界树: 题目的附加题解给的很清楚,这里只给一个代码: #include<iostream> #include<cstdio> #inclu ...

随机推荐

  1. Axure RP一个专业的高速原型设计工具

    Axure RP是一个专业的高速原型设计工具.Axure(发音:Ack-sure),代表美国Axure公司.RP则是Rapid Prototyping(高速原型)的缩写. Axure简要介绍 Axur ...

  2. UI层自动化测试框架(一)-简介和环境搭建

    http://blog.csdn.net/ToBeTheEnder/article/details/52302777

  3. 2014百度之星第二题Disk Schedule(双调欧几里得旅行商问题+DP)

    Disk Schedule Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) To ...

  4. OpenCV:Visual Studio 2013 Ultimate中OpenCV 2.4.8 配置

    配置环境: 操作系统:Win8.1  64位 IDE平台:Visual Studio 2013 Ultimate 一.准备OpenCV 2.4.8 1.下载:从官网下载 OpenCV2.4.8:   ...

  5. Delphi7中单元文件内各个部分的执行顺序

    注:本文主要是讨论delphi程序启动时和退出时的执行顺序,期间有些知识来源于Delphi帮助,有些来自<Delphi7程序设计教程>(这本书只告诉我有initialization 和 f ...

  6. Android热更新实现原理

    最近Android社区的氛围很不错嘛,连续放出一系列的android动态加载插件和热更新库,这篇文章就来介绍一下Android中实现热更新的原理. ClassLoader 我们知道Java在运行时加载 ...

  7. 用Thymeleaf在前台下拉列表取值

    转自:https://blog.csdn.net/u013600907/article/details/76165748

  8. html5 读取本地文件

    尊重原创:http://hushicai.com/2014/03/29/html5-du-qu-ben-di-wen-jian.html HTML5为我们提供了一种与本地文件系统交互的标准方式:Fil ...

  9. go的语言结构

    一.文件名.关键字与标识符 1.1 文件名 1.go 的源文件已 .go 为后缀名 2.文件名已小写组成 如:simple.go 3.如多个部分组成可用"_" 分割 4.不要包含有 ...

  10. Oracle创建用户教程

    计算机-->管理-->应用程序与服务-->(OracleOraDb11g_home1TNSListener 和 OracleServiceORCL 服务)->启动服务 打开Or ...