Evklid Alqoritmi#413

Evklid Alqoritmi

1 saniyə
122,174 meqabayt
Orta

Dmitrik informatika öyrənməyə yeni başlayıb. Onun öyrəndiyi ilk alqoritmlərdən biri, iki ədədin ən böyük ortaq bölənini (ƏBOB) tapmaq üçün Evklid alqoritmi idi. Xatırladaq ki, iki ədəd və üçün ƏBOB, həm , həm də ədədlərini qalıqsız bölən ən böyük təbii ədəd -dir.

Evklid alqoritmi belə işləyir:

  1. və — ƏBOB tapılmalı olan ədədlərdir.

  2. Əgər b = 0 olarsa, ƏBOB-dur.

  3. Əgər b > a olarsa, və ədədlərinin yerlərini dəyişmək lazımdır.

  4. ədədinə a - b qiymətini mənimsətmək.

  5. 2-ci addıma qayıtmaq.

Dmitrik Evklid alqoritmini tez bir zamanda mənimsədi və onun köməyi ilə çoxlu ƏBOB-lər hesabladı. Tezliklə ona yeni bir məsələ həll etmək fikri gəldi. , , və ədədləri verilib. Verilmiş ədədlər cütü üçün Evklid alqoritminin icrası prosesində elə bir anın olub-olmadığını öyrənmək lazımdır ki, 2-ci addımın icrasından əvvəl a = c və b = d olsun.

Bu məsələni həll edən proqram yazın.

Giriş

Birinci sətir, giriş məlumat dəstlərinin sayı olan (1 \leq k \leq 100) ədədini ehtiva edir. Sonra bu dəstlərin təsviri gəlir. Hər təsvir iki sətirdən ibarətdir. Birinci sətir iki tam ədəd ehtiva edir: , (1 \leq a, b \leq 10^{18}). İkinci sətir isə iki tam ədəd ehtiva edir: , (1 \leq c, d \leq 10^{18}). Sətirdəki bütün ədədlər boşluqla ayrılmışdır.

Çıxış

Hər bir giriş məlumat dəsti üçün ayrıca sətirdə **YES** sözünü çıxarın, əgər Evklid alqoritminin ədədlər cütü üçün tətbiqi prosesində hər hansı bir anda cütu alınarsa, və ya **NO** sözünü çıxarın – əks halda.

Nümunələr

Nümunə 1

Loading
Loading