{"id":"informatyka-2018-maj-matura-rozszerzona/zad/1.1","paper_id":"informatyka-2018-maj-matura-rozszerzona","number":"1.1","points":3,"ptype":"open","subject":"informatyka","category":"matura","year":2018,"month":"maj","level":"rozszerzona","text":"Zadanie 1.1. (0-3)\nPodaj wynik działania algorytmu dla wskazanych w tabeli wartości n.\nn\np\n28\n64\n80\nMiejsce na obliczenia.\nMIN_1R","answer":null,"answer_text":"Zadanie 1.1. (0-3)\nWymagania ogólne\nWymagania szczegółowe\nIII. Rozwiązywanie problemów\ni podejmowanie decyzji […] z zastosowaniem\npodejścia algorytmicznego.\n5. Rozwiązywanie problemów\ni podejmowanie decyzji […], stosowanie\npodejścia algorytmicznego.\nZdający:\n11) opisuje podstawowe algorytmy\ni stosuje:\na) algorytmy na liczbach całkowitych,\n16) opisuje własności algorytmów na\npodstawie ich analizy;\n17) ocenia zgodność algorytmu ze\nspecyfikacją problemu;\n18) oblicza liczbę operacji wykonywanych\nprzez algorytm.\nSchemat punktowania\n3 p. - za prawidłową odpowiedź w trzech wierszach.\n2 p. - za prawidłową odpowiedź w dwóch wierszach.\n1 p. - za prawidłową odpowiedź w jednym wierszu.\n0 p. - za podanie odpowiedzi błędnej albo brak odpowiedzi.\nPoprawna odpowiedź\nn\np\n28\n4\n64\n4\n80\n5","solution":"## Poprawna odpowiedź\n\n| n | p |\n| 28 | **4** |\n| 64 | **4** |\n| 80 | **5** |\n\n## Sposób 1 - interpretacja algorytmu\n\n**Algorytm to wyszukiwanie binarne najmniejszej liczby p takiej, że p³ ≥ n.**\n\nInicjalizacja: p = 1, q = n. Pętla `while p < q` w każdej iteracji:\n- s = (p+q) div 2\n- Jeśli s³ < n → szukamy w prawej części: p = s+1\n- W przeciwnym razie → szukamy w lewej części: q = s\n\nKoniec gdy p = q. Wynik to **p = ⌈∛n⌉** (sufit pierwiastka sześciennego).\n\n## Sposób 2 - symulacja krok po kroku\n\n### n = 28\nSzukamy p takiego, że p³ ≥ 28. Sprawdzamy: 3³=27 < 28, 4³=64 ≥ 28 → **p = 4**.\n\n| iter | p | q | s | s³ | s³<28? | nowe p | nowe q |\n| 1 | 1 | 28 | 14 | 2744 | NIE | 1 | 14 |\n| 2 | 1 | 14 | 7 | 343 | NIE | 1 | 7 |\n| 3 | 1 | 7 | 4 | 64 | NIE | 1 | 4 |\n| 4 | 1 | 4 | 2 | 8 | TAK | 3 | 4 |\n| 5 | 3 | 4 | 3 | 27 | TAK | 4 | 4 |\n\nKończymy: p = q = **4** ✓.\n\n### n = 64\n4³ = 64 ≥ 64 ✓ → **p = 4**.\n\n| iter | p | q | s | s³ | s³<64? | p | q |\n| 1 | 1 | 64 | 32 | 32768 | NIE | 1 | 32 |\n| 2 | 1 | 32 | 16 | 4096 | NIE | 1 | 16 |\n| 3 | 1 | 16 | 8 | 512 | NIE | 1 | 8 |\n| 4 | 1 | 8 | 4 | 64 | NIE | 1 | 4 |\n| 5 | 1 | 4 | 2 | 8 | TAK | 3 | 4 |\n| 6 | 3 | 4 | 3 | 27 | TAK | 4 | 4 |\n\nKończymy: p = q = **4** ✓.\n\n### n = 80\n4³ = 64 < 80, 5³ = 125 ≥ 80 → **p = 5**.\n\n| iter | p | q | s | s³ | s³<80? | p | q |\n| 1 | 1 | 80 | 40 | 64000 | NIE | 1 | 40 |\n| 2 | 1 | 40 | 20 | 8000 | NIE | 1 | 20 |\n| 3 | 1 | 20 | 10 | 1000 | NIE | 1 | 10 |\n| 4 | 1 | 10 | 5 | 125 | NIE | 1 | 5 |\n| 5 | 1 | 5 | 3 | 27 | TAK | 4 | 5 |\n| 6 | 4 | 5 | 4 | 64 | TAK | 5 | 5 |\n\nKończymy: p = q = **5** ✓.\n\n## Sposób 3 - implementacja Python (weryfikacja)\n\n```python\ndef algorytm(n):\np, q = 1, n\nwhile p < q:\ns = (p + q) // 2\nif s ** 3 < n:\np = s + 1\nelse:\nq = s\nreturn p\n\nfor n in [28, 64, 80]:\nprint(f\"n={n}: p={algorytm(n)}\")\n\nWynik:\nn=28: p=4\nn=64: p=4\nn=80: p=5\n\n## Reference informatyczny - wyszukiwanie binarne\n\n> Reference - Wyszukiwanie binarne (binary search):\n> - Wyszukuje element/wartość spełniającą warunek monotoniczny.\n> - **Idea**: dzielimy przedział na pół, sprawdzamy środek, kierujemy się w prawą lub lewą połowę.\n> - **Złożoność**: O(log n).\n> - Tu zastosowanie: znalezienie minimalnego p takiego, że p³ ≥ n. Funkcja monotoniczna (p³ rośnie z p) - idealna dla binary search.\n>\n> Reference - Pierwiastek całkowity (integer cube root):\n> - `⌈∛n⌉` to najmniejsze całkowite p z p³ ≥ n.\n> - Można policzyć: `p = round(n ** (1/3))` lub szukaniem binarnym.\n> - Dla n = 64: ∛64 = 4 (idealny sześcian). Dla n = 27: ∛27 = 3.\n\n## Schemat oceniania CKE\n\n> Klucz CKE (zadanie 1.1, max 3 pkt):\n> - **3 pkt** - wszystkie 3 wartości p prawidłowe\n> - **2 pkt** - 2 prawidłowe\n> - **1 pkt** - 1 prawidłowa\n> - **0 pkt** - wszystkie błędne\n\n## Typowe pułapki\n\n- **Pomyłka warunku `<` vs `≤`** - wpływa na to, gdzie przesuwa się p i q. Tu jest `s³ < n` (ostry).\n- **div = dzielenie całkowite** - `(p+q) div 2` to floor; w Pythonie `//`, w C++ `/` dla int.\n- **Pomylenie warunku zakończenia** - kończymy gdy `p = q` (nie `p > q`).\n- **Niepoprawne s³** - uważać na 14³ = 2744, 32³ = 32768 (duże liczby, ale w int wystarczy).\n- **Pomyłka „64³” zamiast „4³”** - czytanie n jako liczby do potęgowania, podczas gdy potęgujemy s.\n- **Mylenie p i q** - p to dolna granica, q to górna; szukamy minimalnego.\n\n## Złożoność obliczeniowa\n\n- W każdej iteracji przedział `[p, q]` zmniejsza się o połowę.\n- Liczba iteracji: O(log n).\n- Każda iteracja: stały koszt (mnożenie + porównanie).\n- **Łącznie: O(log n)** operacji.","image":"img/informatyka-2018-maj-matura-rozszerzona/zad-1.1.webp","solution_image":null,"topics":null,"page_from":2,"source":"ocr","answer_source":null,"answer_text_source":"ocr","solution_source":"maturazai","text_source":"ocr","source_label":"Informatyka · Matura · maj 2018 (rozszerzona)","subject_label":"Informatyka","category_label":"Matura","text_html":"<p>Zadanie 1.1. (0-3)<br>Podaj wynik działania algorytmu dla wskazanych w tabeli wartości n.<br>n<br>p<br>28<br>64<br>80<br>Miejsce na obliczenia.<br>MIN_1R</p>","answer_text_html":"<p>Zadanie 1.1. (0-3)<br>Wymagania ogólne<br>Wymagania szczegółowe<br>III. Rozwiązywanie problemów<br>i podejmowanie decyzji […] z zastosowaniem<br>podejścia algorytmicznego.</p>\n<ol><li>Rozwiązywanie problemów</li></ol>\n<p>i podejmowanie decyzji […], stosowanie<br>podejścia algorytmicznego.<br>Zdający:</p>\n<ol><li>opisuje podstawowe algorytmy</li></ol>\n<p>i stosuje:<br>a) algorytmy na liczbach całkowitych,</p>\n<ol><li>opisuje własności algorytmów na</li></ol>\n<p>podstawie ich analizy;</p>\n<ol><li>ocenia zgodność algorytmu ze</li></ol>\n<p>specyfikacją problemu;</p>\n<ol><li>oblicza liczbę operacji wykonywanych</li></ol>\n<p>przez algorytm.<br>Schemat punktowania<br>3 p. - za prawidłową odpowiedź w trzech wierszach.<br>2 p. - za prawidłową odpowiedź w dwóch wierszach.<br>1 p. - za prawidłową odpowiedź w jednym wierszu.<br>0 p. - za podanie odpowiedzi błędnej albo brak odpowiedzi.<br>Poprawna odpowiedź<br>n<br>p<br>28<br>4<br>64<br>4<br>80<br>5</p>","solutions":[{"source":"maturazai","label":"maturazai.pl (AI)","kind":"text","html":"<h4>Poprawna odpowiedź</h4>\n<p>| n | p |<br>| 28 | <strong>4</strong> |<br>| 64 | <strong>4</strong> |<br>| 80 | <strong>5</strong> |</p>\n<h4>Sposób 1 - interpretacja algorytmu</h4>\n<p><strong>Algorytm to wyszukiwanie binarne najmniejszej liczby p takiej, że p³ ≥ n.</strong></p>\n<p>Inicjalizacja: p = 1, q = n. Pętla <code>while p &lt; q</code> w każdej iteracji:</p>\n<ul><li>s = (p+q) div 2</li><li>Jeśli s³ &lt; n → szukamy w prawej części: p = s+1</li><li>W przeciwnym razie → szukamy w lewej części: q = s</li></ul>\n<p>Koniec gdy p = q. Wynik to <strong>p = ⌈∛n⌉</strong> (sufit pierwiastka sześciennego).</p>\n<h4>Sposób 2 - symulacja krok po kroku</h4>\n<h5>n = 28</h5>\n<p>Szukamy p takiego, że p³ ≥ 28. Sprawdzamy: 3³=27 &lt; 28, 4³=64 ≥ 28 → <strong>p = 4</strong>.</p>\n<p>| iter | p | q | s | s³ | s³&lt;28? | nowe p | nowe q |<br>| 1 | 1 | 28 | 14 | 2744 | NIE | 1 | 14 |<br>| 2 | 1 | 14 | 7 | 343 | NIE | 1 | 7 |<br>| 3 | 1 | 7 | 4 | 64 | NIE | 1 | 4 |<br>| 4 | 1 | 4 | 2 | 8 | TAK | 3 | 4 |<br>| 5 | 3 | 4 | 3 | 27 | TAK | 4 | 4 |</p>\n<p>Kończymy: p = q = <strong>4</strong> ✓.</p>\n<h5>n = 64</h5>\n<p>4³ = 64 ≥ 64 ✓ → <strong>p = 4</strong>.</p>\n<p>| iter | p | q | s | s³ | s³&lt;64? | p | q |<br>| 1 | 1 | 64 | 32 | 32768 | NIE | 1 | 32 |<br>| 2 | 1 | 32 | 16 | 4096 | NIE | 1 | 16 |<br>| 3 | 1 | 16 | 8 | 512 | NIE | 1 | 8 |<br>| 4 | 1 | 8 | 4 | 64 | NIE | 1 | 4 |<br>| 5 | 1 | 4 | 2 | 8 | TAK | 3 | 4 |<br>| 6 | 3 | 4 | 3 | 27 | TAK | 4 | 4 |</p>\n<p>Kończymy: p = q = <strong>4</strong> ✓.</p>\n<h5>n = 80</h5>\n<p>4³ = 64 &lt; 80, 5³ = 125 ≥ 80 → <strong>p = 5</strong>.</p>\n<p>| iter | p | q | s | s³ | s³&lt;80? | p | q |<br>| 1 | 1 | 80 | 40 | 64000 | NIE | 1 | 40 |<br>| 2 | 1 | 40 | 20 | 8000 | NIE | 1 | 20 |<br>| 3 | 1 | 20 | 10 | 1000 | NIE | 1 | 10 |<br>| 4 | 1 | 10 | 5 | 125 | NIE | 1 | 5 |<br>| 5 | 1 | 5 | 3 | 27 | TAK | 4 | 5 |<br>| 6 | 4 | 5 | 4 | 64 | TAK | 5 | 5 |</p>\n<p>Kończymy: p = q = <strong>5</strong> ✓.</p>\n<h4>Sposób 3 - implementacja Python (weryfikacja)</h4>\n<p>```python<br>def algorytm(n):<br>p, q = 1, n<br>while p &lt; q:<br>s = (p + q) // 2<br>if s ** 3 &lt; n:<br>p = s + 1<br>else:<br>q = s<br>return p</p>\n<p>for n in [28, 64, 80]:<br>print(f&quot;n={n}: p={algorytm(n)}&quot;)</p>\n<p>Wynik:<br>n=28: p=4<br>n=64: p=4<br>n=80: p=5</p>\n<h4>Reference informatyczny - wyszukiwanie binarne</h4>\n<blockquote>Reference - Wyszukiwanie binarne (binary search):<br>- Wyszukuje element/wartość spełniającą warunek monotoniczny.<br>- <strong>Idea</strong>: dzielimy przedział na pół, sprawdzamy środek, kierujemy się w prawą lub lewą połowę.<br>- <strong>Złożoność</strong>: O(log n).<br>- Tu zastosowanie: znalezienie minimalnego p takiego, że p³ ≥ n. Funkcja monotoniczna (p³ rośnie z p) - idealna dla binary search.<br><br>Reference - Pierwiastek całkowity (integer cube root):<br>- <code>⌈∛n⌉</code> to najmniejsze całkowite p z p³ ≥ n.<br>- Można policzyć: <code>p = round(n ** (1/3))</code> lub szukaniem binarnym.<br>- Dla n = 64: ∛64 = 4 (idealny sześcian). Dla n = 27: ∛27 = 3.</blockquote>\n<h4>Schemat oceniania CKE</h4>\n<blockquote>Klucz CKE (zadanie 1.1, max 3 pkt):<br>- <strong>3 pkt</strong> - wszystkie 3 wartości p prawidłowe<br>- <strong>2 pkt</strong> - 2 prawidłowe<br>- <strong>1 pkt</strong> - 1 prawidłowa<br>- <strong>0 pkt</strong> - wszystkie błędne</blockquote>\n<h4>Typowe pułapki</h4>\n<ul><li><strong>Pomyłka warunku <code>&lt;</code> vs <code>≤</code></strong> - wpływa na to, gdzie przesuwa się p i q. Tu jest <code>s³ &lt; n</code> (ostry).</li><li><strong>div = dzielenie całkowite</strong> - <code>(p+q) div 2</code> to floor; w Pythonie <code>//</code>, w C++ <code>/</code> dla int.</li><li><strong>Pomylenie warunku zakończenia</strong> - kończymy gdy <code>p = q</code> (nie <code>p &gt; q</code>).</li><li><strong>Niepoprawne s³</strong> - uważać na 14³ = 2744, 32³ = 32768 (duże liczby, ale w int wystarczy).</li><li><strong>Pomyłka „64³” zamiast „4³”</strong> - czytanie n jako liczby do potęgowania, podczas gdy potęgujemy s.</li><li><strong>Mylenie p i q</strong> - p to dolna granica, q to górna; szukamy minimalnego.</li></ul>\n<h4>Złożoność obliczeniowa</h4>\n<ul><li>W każdej iteracji przedział <code>[p, q]</code> zmniejsza się o połowę.</li><li>Liczba iteracji: O(log n).</li><li>Każda iteracja: stały koszt (mnożenie + porównanie).</li><li><strong>Łącznie: O(log n)</strong> operacji.</li></ul>"}]}