Олимпиадный тренинг

Задача . B. Необычное вычитание


Даны две переменные a и b. Рассмотрим следующую последовательность действий над этими переменными:

  1. Если a = 0 или b = 0, закончить процесс. Иначе перейти к шагу 2;
  2. Если a ≥ 2·b, то присвоить a значение a - 2·b и повторить шаг 1. Иначе перейти к шагу 3;
  3. Если b ≥ 2·a, то присвоить b значение b - 2·a и повторить шаг 1. Иначе закончить процесс.

Изначально значения a и b — положительные целые числа, поэтому алгоритм отработает за конечное время.

Определите значения a и b после завершения работы алгоритма.

Входные данные

В первой строке записаны два целых числа n и m (1 ≤ n, m ≤ 1018). n — начальное значение переменной a, m — начальное значение переменной b.

Выходные данные

Выведите два числа — значения a и b после завершения работы алгоритма.

Примечание

Пояснения к примерам:

  1. a = 12, b = 5 a = 2, b = 5 a = 2, b = 1 a = 0, b = 1;
  2. a = 31, b = 12 a = 7, b = 12.

Примеры
Входные данныеВыходные данные
1 12 5
0 1
2 31 12
7 12

time 1000 ms
memory 256 Mb
Правила оформления программ и список ошибок при автоматической проверке задач

Статистика успешных решений по компиляторам
 Кол-во
С++ Mingw-w645
Комментарий учителя