{"id":"informatyka-2017-maj-matura-rozszerzona/zad/2.3","paper_id":"informatyka-2017-maj-matura-rozszerzona","number":"2.3","points":2,"ptype":"open","subject":"informatyka","category":"matura","year":2017,"month":"maj","level":"rozszerzona","text":"Zadanie 2.3. (0-2)\nPodaj najmniejszą liczbę całkowitą x większą od 100, dla której wynikiem wywołania\nlicz(x) będzie 0.\nOdpowiedź:\nMiejsce na obliczenia\nWypełnia\negzaminator\nNr zadania\n2.1.\n2.2.\n2.3.\nMaks. liczba pkt.\n2\n2\n2\nUzyskana liczba pkt.\nMIN_1R","answer":null,"answer_text":"Zadanie 2.3. (0-2)\nIII. Rozwiązywanie problemów\ni podejmowanie decyzji […],\nz zastosowaniem podejścia algorytmicznego.\n5) posługuje się podstawowymi technikami\nalgorytmicznymi;\n9) stosuje rekurencję w prostych sytuacjach\nproblemowych\n16) opisuje własności algorytmów na\npodstawie ich analizy;\n17) ocenia zgodność algorytmu ze\nspecyfikacją problemu;\nSchemat punktowania\n2 p. - za prawidłową odpowiedź.\n1 p. - za podanie innej wartości większej od 100, dla której wynikiem działania algorytmu\nbędzie 0.\n0 p. - za podanie innej błędnej odpowiedzi albo brak odpowiedzi.\nPoprawna odpowiedź:\n135","solution":"## Poprawna odpowiedź\n\n**x = 135**\n\n135 w binarnym to **10000111** (8 bitów, 4 jedynki, 4 zera). licz(135) = 4 - 4 = 0.\n\n## Sposób 1 - wykorzystanie wzoru z 2.1\n\nZ zadania 2.1 wiemy: **licz(x) = (liczba jedynek w bin(x)) - (liczba zer w bin(x))**.\n\nlicz(x) = 0 oznacza: **liczba jedynek = liczba zer** w zapisie binarnym x.\n\n**Wniosek:** x musi mieć parzystą liczbę bitów (2k bitów: k jedynek i k zer). Najmłodszy bit może być 0 lub 1, najstarszy zawsze 1.\n\n## Sposób 2 - szukamy najmniejszego x > 100\n\n100 w binarnym = 1100100 (7 bitów). Szukamy x > 100 z równą liczbą 0 i 1.\n\nLiczby 8-bitowe (najmniejsza = 128 = 10000000) zakres: 128-255.\n\nDla x = 128, 129, , 135 sprawdzamy:\n- 128 = 10000000: 1 jedynka, 7 zer → licz = -6\n- 129 = 10000001: 2 j, 6 z → -4\n- 130 = 10000010: 2 j, 6 z → -4\n- 131 = 10000011: 3 j, 5 z → -2\n- 132 = 10000100: 2 j, 6 z → -4\n- 133 = 10000101: 3 j, 5 z → -2\n- 134 = 10000110: 3 j, 5 z → -2\n- **135 = 10000111: 4 j, 4 z → licz = 0** ✓\n\nMniejsze liczby? Sprawdźmy też 7-bitowe (64-127):\n- Liczba 7-bitowa ma 7 bitów; równa liczba 0 i 1 wymaga **parzystej liczby bitów** - niemożliwe!\n- Wszystkie 7-bitowe mają licz(x) parzyste? Tak: 7 = 1 + 6 lub 3 + 4 lub 5 + 2 lub 7 + 0 → różnica nieparzysta. Niemożliwe licz = 0.\n\nWięc x > 100 z licz = 0 musi być co najmniej 8-bitowe, czyli x ≥ 128. Sprawdzone - najmniejsze takie x to **135**.\n\n## Sposób 3 - weryfikacja symulacją (Python)\n\n```python\ndef licz(x):\nif x == 1:\nreturn 1\nw = licz(x // 2)\nif x % 2 == 1:\nreturn w + 1\nelse:\nreturn w - 1\n\nfor x in range(101, 200):\nif licz(x) == 0:\nprint(x)\nbreak\n# wynik: 135\n\nSymulacja licz(135) krok po kroku:\n- licz(135): bit=1 → w = licz(67), wynik = w+1\n- licz(67): bit=1 → w = licz(33), wynik = w+1\n- licz(33): bit=1 → w = licz(16), wynik = w+1\n- licz(16): bit=0 → w = licz(8), wynik = w-1\n- licz(8): bit=0 → w = licz(4), wynik = w-1\n- licz(4): bit=0 → w = licz(2), wynik = w-1\n- licz(2): bit=0 → w = licz(1), wynik = w-1\n- licz(1) = 1\n- licz(2) = 0; licz(4) = -1; licz(8) = -2; licz(16) = -3\n- licz(33) = -3 + 1 = -2\n- licz(67) = -2 + 1 = -1\n- licz(135) = -1 + 1 = **0** ✓\n\n## Reference algorytmiczny - bilans bitów\n\n> Reference - bilans bitów w zapisie binarnym:\n> - Suma j + z = liczba bitów (długość zapisu).\n> - Różnica j - z = licz(x) (z zadania 2.1).\n> - Aby j = z konieczne: parzysta długość zapisu. Najmniejsze x o takiej własności i > 100 to liczba 8-bitowa, najmłodsza spełniająca to 10000111 = 135.\n\n## Schemat oceniania CKE\n\n> Klucz CKE (zadanie 2.3, max 2 pkt):\n> - **2 pkt** - za **135**\n> - **1 pkt** - za inną liczbę x > 100, dla której licz(x) = 0 (np. 139, 141, 142, 147, )\n> - **0 pkt** - błąd lub brak\n\n## Typowe pułapki\n\n- **Próba 100-127** - żadna 7-bitowa liczba nie da licz = 0 (nieparzysta długość).\n- **Pominięcie wymogu „>100\"** - 51 = 110011 daje licz = 0, ale 51 < 100.\n- **Błąd rachunkowy w zliczeniu bitów** - 135 = 128 + 4 + 2 + 1 = 10000111 (bit 7 + bity 0-2).\n\n## Złożoność obliczeniowa\n\n- Bezpośrednie szukanie x w pętli: O((x_wynik - 100) · log x_wynik) ≈ O(35 · 8) = O(280) - trywialne.","image":"img/informatyka-2017-maj-matura-rozszerzona/zad-2.3.webp","solution_image":null,"topics":null,"page_from":5,"source":"ocr","answer_source":null,"answer_text_source":"ocr","solution_source":"maturazai","text_source":"ocr","source_label":"Informatyka · Matura · maj 2017 (rozszerzona)","subject_label":"Informatyka","category_label":"Matura","text_html":"<p>Zadanie 2.3. (0-2)<br>Podaj najmniejszą liczbę całkowitą x większą od 100, dla której wynikiem wywołania<br>licz(x) będzie 0.<br>Odpowiedź:<br>Miejsce na obliczenia<br>Wypełnia<br>egzaminator<br>Nr zadania<br>2.1.<br>2.2.<br>2.3.<br>Maks. liczba pkt.<br>2<br>2<br>2<br>Uzyskana liczba pkt.<br>MIN_1R</p>","answer_text_html":"<p>Zadanie 2.3. (0-2)<br>III. Rozwiązywanie problemów<br>i podejmowanie decyzji […],<br>z zastosowaniem podejścia algorytmicznego.</p>\n<ol><li>posługuje się podstawowymi technikami</li></ol>\n<p>algorytmicznymi;</p>\n<ol><li>stosuje rekurencję w prostych sytuacjach</li></ol>\n<p>problemowych</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;<br>Schemat punktowania<br>2 p. - za prawidłową odpowiedź.<br>1 p. - za podanie innej wartości większej od 100, dla której wynikiem działania algorytmu<br>będzie 0.<br>0 p. - za podanie innej błędnej odpowiedzi albo brak odpowiedzi.<br>Poprawna odpowiedź:<br>135</p>","solutions":[{"source":"maturazai","label":"maturazai.pl (AI)","kind":"text","html":"<h4>Poprawna odpowiedź</h4>\n<p><strong>x = 135</strong></p>\n<p>135 w binarnym to <strong>10000111</strong> (8 bitów, 4 jedynki, 4 zera). licz(135) = 4 - 4 = 0.</p>\n<h4>Sposób 1 - wykorzystanie wzoru z 2.1</h4>\n<p>Z zadania 2.1 wiemy: <strong>licz(x) = (liczba jedynek w bin(x)) - (liczba zer w bin(x))</strong>.</p>\n<p>licz(x) = 0 oznacza: <strong>liczba jedynek = liczba zer</strong> w zapisie binarnym x.</p>\n<p><strong>Wniosek:</strong> x musi mieć parzystą liczbę bitów (2k bitów: k jedynek i k zer). Najmłodszy bit może być 0 lub 1, najstarszy zawsze 1.</p>\n<h4>Sposób 2 - szukamy najmniejszego x &gt; 100</h4>\n<p>100 w binarnym = 1100100 (7 bitów). Szukamy x &gt; 100 z równą liczbą 0 i 1.</p>\n<p>Liczby 8-bitowe (najmniejsza = 128 = 10000000) zakres: 128-255.</p>\n<p>Dla x = 128, 129, , 135 sprawdzamy:</p>\n<ul><li>128 = 10000000: 1 jedynka, 7 zer → licz = -6</li><li>129 = 10000001: 2 j, 6 z → -4</li><li>130 = 10000010: 2 j, 6 z → -4</li><li>131 = 10000011: 3 j, 5 z → -2</li><li>132 = 10000100: 2 j, 6 z → -4</li><li>133 = 10000101: 3 j, 5 z → -2</li><li>134 = 10000110: 3 j, 5 z → -2</li><li><strong>135 = 10000111: 4 j, 4 z → licz = 0</strong> ✓</li></ul>\n<p>Mniejsze liczby? Sprawdźmy też 7-bitowe (64-127):</p>\n<ul><li>Liczba 7-bitowa ma 7 bitów; równa liczba 0 i 1 wymaga <strong>parzystej liczby bitów</strong> - niemożliwe!</li><li>Wszystkie 7-bitowe mają licz(x) parzyste? Tak: 7 = 1 + 6 lub 3 + 4 lub 5 + 2 lub 7 + 0 → różnica nieparzysta. Niemożliwe licz = 0.</li></ul>\n<p>Więc x &gt; 100 z licz = 0 musi być co najmniej 8-bitowe, czyli x ≥ 128. Sprawdzone - najmniejsze takie x to <strong>135</strong>.</p>\n<h4>Sposób 3 - weryfikacja symulacją (Python)</h4>\n<p>```python<br>def licz(x):<br>if x == 1:<br>return 1<br>w = licz(x // 2)<br>if x % 2 == 1:<br>return w + 1<br>else:<br>return w - 1</p>\n<p>for x in range(101, 200):<br>if licz(x) == 0:<br>print(x)<br>break</p>\n<h3>wynik: 135</h3>\n<p>Symulacja licz(135) krok po kroku:</p>\n<ul><li>licz(135): bit=1 → w = licz(67), wynik = w+1</li><li>licz(67): bit=1 → w = licz(33), wynik = w+1</li><li>licz(33): bit=1 → w = licz(16), wynik = w+1</li><li>licz(16): bit=0 → w = licz(8), wynik = w-1</li><li>licz(8): bit=0 → w = licz(4), wynik = w-1</li><li>licz(4): bit=0 → w = licz(2), wynik = w-1</li><li>licz(2): bit=0 → w = licz(1), wynik = w-1</li><li>licz(1) = 1</li><li>licz(2) = 0; licz(4) = -1; licz(8) = -2; licz(16) = -3</li><li>licz(33) = -3 + 1 = -2</li><li>licz(67) = -2 + 1 = -1</li><li>licz(135) = -1 + 1 = <strong>0</strong> ✓</li></ul>\n<h4>Reference algorytmiczny - bilans bitów</h4>\n<blockquote>Reference - bilans bitów w zapisie binarnym:<br>- Suma j + z = liczba bitów (długość zapisu).<br>- Różnica j - z = licz(x) (z zadania 2.1).<br>- Aby j = z konieczne: parzysta długość zapisu. Najmniejsze x o takiej własności i &gt; 100 to liczba 8-bitowa, najmłodsza spełniająca to 10000111 = 135.</blockquote>\n<h4>Schemat oceniania CKE</h4>\n<blockquote>Klucz CKE (zadanie 2.3, max 2 pkt):<br>- <strong>2 pkt</strong> - za <strong>135</strong><br>- <strong>1 pkt</strong> - za inną liczbę x &gt; 100, dla której licz(x) = 0 (np. 139, 141, 142, 147, )<br>- <strong>0 pkt</strong> - błąd lub brak</blockquote>\n<h4>Typowe pułapki</h4>\n<ul><li><strong>Próba 100-127</strong> - żadna 7-bitowa liczba nie da licz = 0 (nieparzysta długość).</li><li><strong>Pominięcie wymogu „&gt;100&quot;</strong> - 51 = 110011 daje licz = 0, ale 51 &lt; 100.</li><li><strong>Błąd rachunkowy w zliczeniu bitów</strong> - 135 = 128 + 4 + 2 + 1 = 10000111 (bit 7 + bity 0-2).</li></ul>\n<h4>Złożoność obliczeniowa</h4>\n<ul><li>Bezpośrednie szukanie x w pętli: O((x_wynik - 100) · log x_wynik) ≈ O(35 · 8) = O(280) - trywialne.</li></ul>"}]}