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