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.