讨论 / pascal AC纪念
lani711 2016-03-15 22:48:04
点我顶贴 收藏 删除
const oo=100000000;

var f:array[0..2001,0..2001] of longint;

n,m,i,j,k,minx,lim:longint;

function min(a,b:longint):longint;

begin

if a>b then exit(b); exit(a);

end;

function max(a,b:longint):longint;

begin

if a<b then exit(b); exit(a);

end;

begin

while not seekeof do

begin

read(n); if n=0 then halt;

readln(m);

lim:=trunc(ln(m)/ln(2))+1;

if n>=lim then

begin

writeln(lim);

continue;

end;

fillchar(f,sizeof(f),0);

for i:=1 to n do f[i][1]:=1;

for i:=1 to m do f[1][i]:=i;

for i:=2 to n do

for j:=2 to m do

begin

minx:=oo;

for k:=1 to j do

minx:=min(max(f[i-1,k-1],f[i,j-k])+1,minx);

f[i][j]:=minx;

end;

writeln(f[n][m]);

end;

end.

查看更多回复
提交回复