记录编号 |
6326 |
评测结果 |
AAWWWWWWWW |
题目名称 |
最多因子数 |
最终得分 |
20 |
用户昵称 |
EnAsn |
是否通过 |
未通过 |
代码语言 |
Pascal |
运行时间 |
0.913 s |
提交时间 |
2008-10-31 21:56:37 |
内存使用 |
0.12 MiB |
显示代码纯文本
program ex;
type
zs=array[1..3400]of integer;
ss=array[1..1000]of integer;
var
a,b:ss;
z:zs;
f1,f2:text;
l,u,p,d:longint;
maxn,maxx:longint;
procedure init;
var
i,j,k:integer;
z1:array[1..31622]of boolean;
begin
assign(f1,'divisors.in');
assign(f2,'divisors.out');
reset(f1);
rewrite(f2);
readln(f1,l,u);
close(f1);
k:=0;
for i:=2 to 31622 do
for j:=2 to trunc(sqrt(i)) do
if (i mod j=0) then z1[i]:=true;
for i:=2 to 31622 do
if z1[i]=false then
begin
inc(k);
z[k]:=i;
end;
maxn:=0;
end;
procedure pd(b:ss;k,maxt:longint);
var
i,maxm,t:longint;
begin
maxm:=1;i:=1;t:=1;
while t<=k do
begin
inc(i);
if b[i]<>0 then
begin
inc(t);
maxm:=maxm*(b[i]+1);
end;
end;
if maxm>maxn then
begin
maxn:=maxm;
maxx:=maxt;
end;
end;
procedure main;
var
i,j,k,m:longint;
flag,flag1:boolean;
max,maxt,maxtt:longint;
begin
max:=1;k:=0;
repeat
inc(k);
max:=max*z[k];
inc(a[z[k]]);
until max*z[k+1]>=u;
flag:=true;
flag1:=true;
m:=0;
repeat
inc(m);
maxt:=max;
b:=a;
maxtt:=maxt;
while maxtt<u do
begin
maxt:=maxt*z[m];
inc(b[z[m]]);
maxtt:=maxt*z[m];
end;
pd(b,k,maxt);
if m=k then flag1:=false;
until flag1=false;
end;
begin
init;
main;
writeln(f2,'Between ',l,' and ',u,',',maxx,' has a maximum of ',maxn,' divisors.');
close(f2);
end.