main.cc 795 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. #include <cstdio>
  2. #include <cstring>
  3. #include <queue>
  4. using namespace std;
  5. const int L = 200001;
  6. bool set[L];
  7. int main() {
  8. int N, K;
  9. while (scanf("%d %d", &N, &K) != EOF) {
  10. queue<int> q;
  11. q.push(N);
  12. memset(set, 0, sizeof(set));
  13. set[N] = true;
  14. int s = 1, t = 0;
  15. while (s != 0) {
  16. int n = q.front();
  17. q.pop();
  18. s--;
  19. if (n == K) break;
  20. if (n < K) {
  21. if (!set[2 * n]) {
  22. q.push(2 * n);
  23. set[2 * n] = true;
  24. }
  25. if (!set[n + 1]) {
  26. q.push(n + 1);
  27. set[n + 1] = true;
  28. }
  29. }
  30. if (0 < n && !set[n - 1]) {
  31. q.push(n - 1);
  32. set[n - 1] = true;
  33. }
  34. if (s == 0) {
  35. s = q.size();
  36. t++;
  37. }
  38. }
  39. printf("%d\n", t);
  40. }
  41. return 0;
  42. }