记录编号 6326 评测结果 AAWWWWWWWW
题目名称 最多因子数 最终得分 20
用户昵称 GravatarEnAsn 是否通过 未通过
代码语言 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.