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相乘,二分判斷即可。
**
1var2
n,m,nm,max:longint;
3 shi:array [0..10001] of
longint;
4 a,v:array [0..100001] of
longint;
5procedure
try1;
6var
7i,j:longint;
8bo:boolean;
9begin
10 fillchar(v,sizeof(v),0
);11 m:=0;12
for i:=2
to100000
do13
begin
14 bo:=true;
15for j:=2
to trunc(sqrt(i)) do
16if i mod j=0
then
17begin
18 bo:=false;
19break;
20end;21
if bo then
22begin
23inc(m);
24 shi[m]:=i; v[i]:=1;25
end;
26end;27
end;
2829
procedure
init;
30var
31i,j,x:longint;
32begin
33 fillchar(a,sizeof(a),0
);34 readln(n); nm:=0; max:=0;35
for i:=1
to n do
36begin
37read(x);
38 j:=1;39
while x<>1
do40
begin
41if v[x]=1
then
42begin
43if x>max then max:=x;
44inc(nm); inc(a[x]);
45break;
46end;47
while x mod shi[j]=0
do48
begin
49inc(nm);
50inc(a[shi[j]]);
51 x:=x div
shi[j];
52end;53
if (a[shi[j]]>0) and (shi[j]>max) then
54 max:=shi[j];
55inc(j);
56end;57
end;
58end;59
60function
fd(x:longint):boolean;
61var
62i:longint;
63j,ans:int64;
64begin
65 i:=1;66
while (shi[i]<=max) and (i<=m) do
67begin
68 j:=shi[i]; ans:=0;69
while jdo
70begin
71 ans:=ans+x div
j;72 j:=j*shi[i];
73if ans>=a[shi[i]] then
break;
74end;75
if ansthen
exit(false);
76inc(i);
77end;78
exit(true);
79end;80
81procedure
main;
82var
83l,r,mid:longint;
84begin
85 l:=max; r:=10000000;86
while l<=r do
87begin
88 mid:=(l+r) div2;
89if fd(mid) then r:=mid-1
90else l:=mid+1;91
end;
92 writeln(r+1
);93
end;
9495
begin
96 assign(input,'
factorial.in');
97 assign(output,'
factorial.out');
98reset(input);
99rewrite(output);
100try1;
101init;
102main;
103close(input);
104close(output);
105end.
noip2008 ISBN號碼 (模擬)
a1163.isbn號碼 時間限制 1.0s 記憶體限制 256.0mb 總提交次數 691ac次數 268 平均分 62.95 將本題分享到 檢視未格式化的試題 提交試題討論 試題 noip2008 普及組 問題描述 每一本正式出版的圖書都有乙個isbn號碼與之對應,isbn碼包括9位數字 1位識...
5809 NOIP2008模擬 數羊
description 牧羊人a和牧羊人b總是很無聊,所以他們要玩乙個遊戲。a有a隻羊,b有b隻羊。他們想要知道a b的因子和是多少。這就很為難兩個牧羊人了,由於答案太大,你能不能告訴我答案取模9901的數。input 僅一行,為兩個正整數a和b。output a b的因子和對9901的餘數。sol...
5775 NOIP2008模擬 農夫約的假期
description 在某國有乙個叫農夫約的人,他養了很多羊,其中有兩頭名叫mm和hh,他們的歌聲十分好聽,被當地人稱為 魔音 農夫約也有自己的假期呀!他要去海邊度假,然而mm和hh不能離開他。沒辦法,他只好把他們兩個帶上。到了海邊,農夫約把他的羊放在乙個 n n 的矩陣 有n n個方格 裡。mm...