Advertisement
Guest User

SequenceNM

a guest
Jan 19th, 2018
63
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.40 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3.  
  4. namespace SequenceNM
  5. {
  6. class Program
  7. {
  8. static void Main()
  9. {
  10. string[] input = Console.ReadLine().Split(' ');
  11. int n = int.Parse(input[0]);
  12. int m = int.Parse(input[1]);
  13. if (n == m)
  14. {
  15. Console.WriteLine(n);
  16. return;
  17. }
  18. else if (n >= m)
  19. {
  20. Console.WriteLine("");
  21. return;
  22. }
  23. else
  24. {
  25. int outNumber = int.MinValue;
  26. Queue<int> queueNumbers = new Queue<int>();
  27. List<int> list = new List<int>();
  28. List<int> outSequence = new List<int>();
  29. Queue<List<int>> queueSequences = new Queue<List<int>>();
  30. queueNumbers.Enqueue(n);
  31. list.Add(n);
  32. queueSequences.Enqueue(list);
  33. while (true)
  34. {
  35. int currentCount = queueNumbers.Count;
  36. for (int i = 0; i < currentCount; i++)
  37. {
  38. outNumber = queueNumbers.Dequeue();
  39. if (outNumber == m)
  40. {
  41. list = queueSequences.Dequeue();
  42. Console.WriteLine(string.Join(" -> ", list.ToArray()));
  43. return;
  44. }
  45. outSequence = queueSequences.Dequeue();
  46.  
  47. queueNumbers.Enqueue(outNumber + 1);
  48. outSequence.Add(outNumber + 1);
  49. queueSequences.Enqueue(outSequence);
  50. outSequence.RemoveAt(outSequence.Count - 1);
  51.  
  52. queueNumbers.Enqueue(outNumber + 2);
  53. outSequence.Add(outNumber + 2);
  54. queueSequences.Enqueue(outSequence);
  55. outSequence.RemoveAt(outSequence.Count - 1);
  56.  
  57. queueNumbers.Enqueue(2 * outNumber);
  58. outSequence.Add(2 * outNumber);
  59. queueSequences.Enqueue(outSequence);
  60. outSequence.RemoveAt(outSequence.Count - 1);
  61. }
  62. }
  63. }
  64. }
  65. }
  66. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement