eolymp
bolt
Try our new interface for solving problems
Məsələlər

Алгоритм Евклида

Алгоритм Евклида

Zaman məhdudiyyəti 1 saniyə
Yaddaşı istafadə məhdudiyyəti 122 MiB

Дима недавно начал изучать информатику. Одним из первых алгоритмов, который он изучил, был алгоритм Евклида для нахождения наибольшего общего делителя (НОД) двух чисел. Напомним, что наибольшим общим делителем двух чисел a и b называется наибольшее натуральное число x, такое, что и число a, и число b делится на него без остатка.

Алгоритм Евклида заключается в следующем:

  1. Пусть a, b - числа, НОД которых надо найти.

  2. Если b = 0, то число a - искомый НОД.

  3. Если b > a, то необходимо поменять местами числа a и b.

  4. Присвоить числу a значение a - b.

  5. Вернуться к шагу 2.

Дима достаточно быстро освоил алгоритм Евклида и вычислил с его помощью много наибольших общих делителей. Вскоре ему пришла идея решить новую задачу. Пусть заданы числа a, b, c и d. Требуется узнать, наступит ли в процессе реализации алгоритма Евклида для заданной пары чисел (a, b) такой момент, когда перед исполнением шага 2 число a**** будет равно c, а число b будет равно d.

Требуется написать программу, которая решает эту задачу.

Giriş verilənləri

Первая строка содержит количество наборов входных данных k (1k100). Далее идут описания этих наборов. Каждое описание состоит из двух строк. Первая из них содержит два целых числа: a, b (1a, b10^18). Вторая строка содержит два целых числа c, d (1c, d10^18). Все числа в строках разделены пробелом.

Çıxış verilənləri

Для каждого набора входных данных выведите в отдельной строке слово YES, если в процессе применения алгоритма Евклида к паре чисел (a, b) в какой-то момент получается пара (c, d), или слово NO в противном случае.

Nümunə

Giriş verilənləri #1
2
20 10
10 10
10 7
2 4
Çıxış verilənləri #1
YES
NO