比赛 20100927 评测结果 AAAAAAAAAA
题目名称 细胞分裂 最终得分 100
用户昵称 王者自由 运行时间 0.000 s
代码语言 Pascal 内存使用 0.00 MiB
提交时间 2010-09-27 22:03:44
显示代码纯文本
type arr=array[1..30000,1..2] of longint;
var t,i,k,n,m1,m2,s:longint; a:arr;
procedure find(k:longint;var a:arr;var p:longint);
var i:longint;
begin
  i:=1; p:=0;
  repeat
    inc(i);
    if k mod i=0 then
    begin
      inc(p); a[p,1]:=i; a[p,2]:=0;
      while k mod i=0 do begin inc(a[p,2]); k:=k div i; end;
    end;
  until k=1;
end;
procedure main; //读入,依次判断
var i,z,max:longint;
begin
  max:=-1; read(k);
  for i:=1 to s do
  begin
    if k mod a[i,1]<>0 then exit;
    z:=0;
    while k mod a[i,1]=0 do begin inc(z); k:=k div a[i,1]; end;
    if (a[i,2]+z-1) div z>max then max:=(a[i,2]+z-1) div z;
  end;
  if max<t then t:=max;
end;
begin
  assign(input,'cell.in');reset(input);
  assign(output,'cell.out');rewrite(output);
  t:=maxlongint;
  readln(n);
  readln(m1,m2);
  if m1=1 then begin writeln(0); close(input); close(output); halt; end;
  find(m1,a,s); //分解m1的质因数
  for i:=1 to s do a[i,2]:=a[i,2]*m2;
  for i:=1 to n do main;
  if t=maxlongint then writeln(-1) else writeln(t);
  close(input); close(output);
end.