|
Алгоритм Евклида
(Время: 1 сек. Память: 16 Мб Сложность: 40%)
Дима недавно начал изучать информатику. Одним из первых алгоритмов, который он изучил, был алгоритм Евклида для нахождения наибольшего общего делителя (НОД) двух чисел. Напомним, что наибольшим общим делителем двух чисел a и b называется наибольшее натуральное число x, такое, что и число a, и число b делится на него без остатка.
Алгоритм Евклида заключается в следующем:
- Пусть a, b – числа, НОД которых надо найти.
- Если b = 0, то число a – искомый НОД.
- Если b > a, то необходимо поменять местами числа a и b.
- Присвоить числу a значение a – b.
- Вернуться к шагу 2.
Дима достаточно быстро освоил алгоритм Евклида и вычислил с его помощью много наибольших общих делителей. Поняв, что надо дальше совершенствоваться, ему пришла идея решить новую задачу. Пусть заданы числа a, b, c и d. Требуется узнать, наступит ли в процессе реализации алгоритма Евклида для заданной пары чисел (a, b) такой момент, когда число a будет равно c, а число b будет равно d.
Требуется написать программу, которая решает эту задачу.
Входные данные
Первая строка входного файла INPUT.TXT содержит количество наборов входных данных k (1 ≤ k ≤ 100). Далее идут описания этих наборов. Каждое описание состоит из двух строк. Первая из них содержит два целых числа: a, b (1 ≤ a, b ≤ 1018). Вторая строка – два целых числа: c, d (1 ≤ c, d ≤ 1018).
Выходные данные
Для каждого набора входных данных выведите в отдельной строке выходного файла OUTPUT.TXT слово «YES», если в процессе применения алгоритма Евклида к паре чисел (a, b) в какой-то момент получается пара (c, d), или слово «NO» – в противном случае.
Пример
№ | INPUT.TXT | OUTPUT.TXT |
1 | 2 20 10 10 10 10 7 2 4 | YES NO |
Для отправки решения задачи необходимо зарегистрироваться и авторизоваться!
| |