博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
5791. 【NOIP2008模拟】阶乘
阅读量:5025 次
发布时间:2019-06-12

本文共 1980 字,大约阅读时间需要 6 分钟。

Description

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

Input

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

Output

共一行
一个正整数m。
 
Solutions

可以把p分解质因数,假设p=∏ai^bi(ai为质数),那么只要m!包含了每个ai^bi,m!就包含p。

所以对于每个ai^bi,分别求出满足条件的最小的m,取最大值即可。

怎么求m?

先看一个简单的问题:

27!里面有多少个3相乘?

27!=1*2*...*27

包含1个3的数有27/(3^1)=9个

包含2个3的数有27/(3^2)=3个

包含3个3的数有27/(3^3)=1个

总共:9+3+1=13个

所以27!里面有13个3相乘。

用这个方法就可以求得m!有多少个ai相乘,二分判断即可。

 

代码

1 var  2   n,m,nm,max:longint;  3   shi:array [0..10001] of longint;  4   a,v:array [0..100001] of longint;  5 procedure try1;  6 var  7   i,j:longint;  8   bo:boolean;  9 begin 10   fillchar(v,sizeof(v),0); 11   m:=0; 12   for i:=2 to 100000 do 13     begin 14       bo:=true; 15       for j:=2 to trunc(sqrt(i)) do 16         if i mod j=0 then 17           begin 18             bo:=false; 19             break; 20           end; 21       if bo then 22         begin 23           inc(m); 24           shi[m]:=i; v[i]:=1; 25         end; 26     end; 27 end; 28  29 procedure init; 30 var 31   i,j,x:longint; 32 begin 33   fillchar(a,sizeof(a),0); 34   readln(n); nm:=0; max:=0; 35   for i:=1 to n do 36     begin 37       read(x); 38       j:=1; 39       while x<>1 do 40         begin 41           if v[x]=1 then 42             begin 43               if x>max then max:=x; 44               inc(nm); inc(a[x]); 45               break; 46             end; 47           while x mod shi[j]=0 do 48             begin 49               inc(nm); 50               inc(a[shi[j]]); 51               x:=x div shi[j]; 52             end; 53           if (a[shi[j]]>0) and (shi[j]>max) then 54             max:=shi[j]; 55           inc(j); 56         end; 57     end; 58 end; 59  60 function fd(x:longint):boolean; 61 var 62   i:longint; 63   j,ans:int64; 64 begin 65   i:=1; 66   while (shi[i]<=max) and (i<=m) do 67     begin 68       j:=shi[i]; ans:=0; 69       while j
=a[shi[i]] then break; 74 end; 75 if ans

 

转载于:https://www.cnblogs.com/zyx-crying/p/9457107.html

你可能感兴趣的文章
.NETFramework:template
查看>>
HM16.0之帧内模式——xCheckRDCostIntra()函数
查看>>
Jmeter性能测试 入门
查看>>
安卓动画有哪几种?他们的区别?
查看>>
Nodejs学习总结 -Express入门(一)
查看>>
web前端优化
查看>>
ssh 连接原理及ssh-keygen
查看>>
vs2013编译qt程序后中文出现乱码
查看>>
【转】IOS数据库操作SQLite3使用详解
查看>>
Android官方技术文档翻译——ApplicationId 与 PackageName
查看>>
设计网站大全
查看>>
JVM CUP占用率过高排除方法,windows环境
查看>>
【转】JAVA字符串格式化-String.format()的使用
查看>>
【转】ButterKnife基本使用--不错
查看>>
【转】VS2012编译出来的程序,在XP上运行,出现“.exe 不是有效的 win32 应用程序” “not a valid win32 application”...
查看>>
函数中关于const关键字使用的注意事项
查看>>
微信架构(转)
查看>>
Web项目中的路径问题
查看>>
js随机数的取整
查看>>
关于解析漏洞
查看>>