题目大意:
给出两个数a; b,每次操作可以把a + 1 或把a * 2
问至少多少次操作可以使得a = b
数据范围限制
• 对于30% 的数据,1 <= a <= b <= 100。
• 对于60% 的数据,1 <= a <= b <= 10^6。
• 对于100% 的数据,1 <= a <= b <= 10^9。
题解:
贪心+模拟:
我们可以通过B倒推到A,我们可以发现,每次如果B 可以 /2,即b mod 2=0那么/2很明显比-1 更优,然后模拟即可。注意判断B/2>=A
var
i,ans,a,b:longint;
begin
assign(input,'dis.in'); reset(input);
assign(output,'dis.out');rewrite(output);
readln(a,b);
ans:=0;
while a<>b do
begin
inc(ans);
if (b mod 2=0) and (b div 2>=a)
then b:=b div 2
else b:=b-1;
end;
writeln(ans);
close(input); close(output);
end.