{"id":"informatyka-2015-maj-matura-rozszerzona/zad/3","paper_id":"informatyka-2015-maj-matura-rozszerzona","number":"3","points":null,"ptype":"open","subject":"informatyka","category":"matura","year":2015,"month":"maj","level":"rozszerzona","text":"Zadanie 3. Rozszerzony algorytm Euklidesa\nAlgorytm Euklidesa to algorytm wyznaczania największego wspólnego dzielnika (NWD)\ndwóch liczb całkowitych a > 0 i b ≥ 0.\nSpecyfikacja:\nDane:\nliczby całkowite, a > 0 i b ≥ 0,\nWynik:\nnajwiększy wspólny dzielnik liczb a i b.\nAlgorytm NWD:\nKrok 1.\nJeżeli b = 0, to NWD jest równy a i zakończ wykonywanie algorytmu.\nKrok 2.\nOblicz r jako resztę z dzielenia a przez b.\nKrok 3.\nZastąp a przez b, natomiast b przez r.\nKrok 4.\nPrzejdź do kroku 1.\nW niektórych zastosowaniach informatycznych potrzebujemy wyrazić największy wspólny\ndzielnik dwóch liczb całkowitych a, b w następujący sposób:\nܦሺܽ,ܾሻ=ܽ\n∙ݔ+ܾ\n∙ݕ,\ngdzie x i y są liczbami całkowitymi.\nDo wyznaczenia wartości x i y wykorzystywana jest następująca zależność:\ndla ݎ=ܽ\n݉\n݋݀ ܾ różnego od zera oraz liczb całkowitych x’, y’ takich, że\nܦሺܾ, ݎሻ=ܾ\n∙ݔᇱ+ ݎ∙ݕ′,\nparę liczb (x, y) można wyrazić wzorami:\nݔ= ݕᇱ\nݕ= ݔᇱ-ሺܽ ݀݅\nݒ ܾሻ∙ݕ′\nUwaga:\na mod b, a div b oznaczają odpowiednio resztę i iloraz z dzielenia całkowitego a przez b.\nWypełnia\negzaminator\nNr zadania\n2.3.\n2.4.\n2.5.\nMaks. liczba pkt.\n1\n1\n1\nUzyskana liczba pkt.\nMIN_1R\nOpisana zależność pozwala na rekurencyjne obliczenie pary liczb (x, y).\nNiech RozszerzonyEuklides(a, b) będzie rekurencyjną funkcją realizującą ten pomysł.\nDziałanie funkcji zilustrujmy przykładem.\nPrzykład dla a = 231, b = 30\ni - nr\nwywołania\nNWD (a, b)\nZagnieżdżanie\nrekurencji\n←\nPowrót\nz rekurencji\n→\nWynik\nx\nWynik\ny\nWartość a\nw i-tym\nwywołaniu\nWartość b\nw i-tym\nwywołaniu\n1\n231\n30\n↓\n↑\n3\n-23\n2\n30\n21\n↓\n↑\n-2\n3\n3\n21\n9\n↓\n↑\n1\n-2\n4\n9\n3\n↓\n↑\n0\n1\n5\n3\n0\n↓\n↑\n1\n0\nZatem NWD(231, 30) = 3 · 231 + (-23) · 30.","answer":null,"answer_text":"8\n4\n0\n1","solution":null,"image":"img/informatyka-2015-maj-matura-rozszerzona/zad-3.webp","solution_image":null,"topics":null,"page_from":7,"source":"ocr","answer_source":null,"answer_text_source":"ocr","solution_source":null,"text_source":"ocr","source_label":"Informatyka · Matura · maj 2015 (rozszerzona)","subject_label":"Informatyka","category_label":"Matura","text_html":"<p>Zadanie 3. Rozszerzony algorytm Euklidesa<br>Algorytm Euklidesa to algorytm wyznaczania największego wspólnego dzielnika (NWD)<br>dwóch liczb całkowitych a &gt; 0 i b ≥ 0.<br>Specyfikacja:<br>Dane:<br>liczby całkowite, a &gt; 0 i b ≥ 0,<br>Wynik:<br>największy wspólny dzielnik liczb a i b.<br>Algorytm NWD:<br>Krok 1.<br>Jeżeli b = 0, to NWD jest równy a i zakończ wykonywanie algorytmu.<br>Krok 2.<br>Oblicz r jako resztę z dzielenia a przez b.<br>Krok 3.<br>Zastąp a przez b, natomiast b przez r.<br>Krok 4.<br>Przejdź do kroku 1.<br>W niektórych zastosowaniach informatycznych potrzebujemy wyrazić największy wspólny<br>dzielnik dwóch liczb całkowitych a, b w następujący sposób:<br>ܦሺܽ,ܾሻ=ܽ<br>∙ݔ+ܾ<br>∙ݕ,<br>gdzie x i y są liczbami całkowitymi.<br>Do wyznaczenia wartości x i y wykorzystywana jest następująca zależność:<br>dla ݎ=ܽ<br>݉<br>݋݀ ܾ różnego od zera oraz liczb całkowitych x’, y’ takich, że<br>ܦሺܾ, ݎሻ=ܾ<br>∙ݔᇱ+ ݎ∙ݕ′,<br>parę liczb (x, y) można wyrazić wzorami:<br>ݔ= ݕᇱ<br>ݕ= ݔᇱ-ሺܽ ݀݅<br>ݒ ܾሻ∙ݕ′<br>Uwaga:<br>a mod b, a div b oznaczają odpowiednio resztę i iloraz z dzielenia całkowitego a przez b.<br>Wypełnia<br>egzaminator<br>Nr zadania<br>2.3.<br>2.4.<br>2.5.<br>Maks. liczba pkt.<br>1<br>1<br>1<br>Uzyskana liczba pkt.<br>MIN_1R<br>Opisana zależność pozwala na rekurencyjne obliczenie pary liczb (x, y).<br>Niech RozszerzonyEuklides(a, b) będzie rekurencyjną funkcją realizującą ten pomysł.<br>Działanie funkcji zilustrujmy przykładem.<br>Przykład dla a = 231, b = 30<br>i - nr<br>wywołania<br>NWD (a, b)<br>Zagnieżdżanie<br>rekurencji<br>←<br>Powrót<br>z rekurencji<br>→<br>Wynik<br>x<br>Wynik<br>y<br>Wartość a<br>w i-tym<br>wywołaniu<br>Wartość b<br>w i-tym<br>wywołaniu<br>1<br>231<br>30<br>↓<br>↑<br>3<br>-23<br>2<br>30<br>21<br>↓<br>↑<br>-2<br>3<br>3<br>21<br>9<br>↓<br>↑<br>1<br>-2<br>4<br>9<br>3<br>↓<br>↑<br>0<br>1<br>5<br>3<br>0<br>↓<br>↑<br>1<br>0<br>Zatem NWD(231, 30) = 3 · 231 + (-23) · 30.</p>","answer_text_html":"<p>8<br>4<br>0<br>1</p>","solutions":[]}