Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- namespace SequenceNM
- {
- class Program
- {
- static void Main()
- {
- string[] input = Console.ReadLine().Split(' ');
- int n = int.Parse(input[0]);
- int m = int.Parse(input[1]);
- if (n == m)
- {
- Console.WriteLine(n);
- return;
- }
- else if (n >= m)
- {
- Console.WriteLine("");
- return;
- }
- else
- {
- int outNumber = int.MinValue;
- Queue<int> queueNumbers = new Queue<int>();
- List<int> list = new List<int>();
- List<int> outSequence = new List<int>();
- Queue<List<int>> queueSequences = new Queue<List<int>>();
- queueNumbers.Enqueue(n);
- list.Add(n);
- queueSequences.Enqueue(list);
- while (true)
- {
- int currentCount = queueNumbers.Count;
- for (int i = 0; i < currentCount; i++)
- {
- outNumber = queueNumbers.Dequeue();
- if (outNumber == m)
- {
- list = queueSequences.Dequeue();
- Console.WriteLine(string.Join(" -> ", list.ToArray()));
- return;
- }
- outSequence = queueSequences.Dequeue();
- queueNumbers.Enqueue(outNumber + 1);
- outSequence.Add(outNumber + 1);
- queueSequences.Enqueue(outSequence);
- outSequence.RemoveAt(outSequence.Count - 1);
- queueNumbers.Enqueue(outNumber + 2);
- outSequence.Add(outNumber + 2);
- queueSequences.Enqueue(outSequence);
- outSequence.RemoveAt(outSequence.Count - 1);
- queueNumbers.Enqueue(2 * outNumber);
- outSequence.Add(2 * outNumber);
- queueSequences.Enqueue(outSequence);
- outSequence.RemoveAt(outSequence.Count - 1);
- }
- }
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement