| 比赛 | 
    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.