Arkusz maturalny z informatyki rozszerzonej, maj 2025 (Formuła 2023). Rozwiąż zamknięte części zadań online i sprawdź odpowiedzi, pobierz PDF z pełną treścią, dane do zadań oraz klucz CKE.
Arkusz maturalny z informatyki na poziomie rozszerzonym z sesji maj 2025 (Formuła 2023). Egzamin trwał 210 minut, można było zdobyć 50 punktów. Poniżej znajdziesz interaktywne wersje zamkniętych części zadań – uzupełnij puste pola i kliknij Sprawdź, aby od razu sprawdzić poprawność (odpowiedzi pochodzą z klucza CKE).
W zadaniach z konkretną odpowiedzią (liczba, wartość, lista) wpisz swój wynik i kliknij Sprawdź. W zadaniach otwartych (napisz program, algorytm, zapytanie SQL) kliknij Pokaż odpowiedź, aby zobaczyć wzorcowe rozwiązanie z klucza CKE. Pełną treść zadań znajdziesz też w arkuszu PDF.
Dana jest rekurencyjna funkcja przestaw, której parametrem jest nieujemna liczba całkowita:
przestaw(n):
r ← n mod 100
a ← r div 10
b ← r mod 10
n ← n div 100
jeżeli n > 0
w ← a + 10 * b + 100 * przestaw(n)
w przeciwnym razie
jeżeli a > 0
w ← a + 10 * b
w przeciwnym razie
w ← b
wynikiem jest wUwaga: Operator mod oznacza resztę z dzielenia, natomiast div – część całkowitą z dzielenia.
Uzupełnij tabelę – wpisz w drugiej kolumnie wynik funkcji przestaw(n) dla podanych wartości argumentu n oraz wpisz w trzeciej kolumnie liczbę wywołań funkcji przestaw łącznie z pierwszym wywołaniem z parametrem n.
| n | Wynik działania funkcji przestaw | Liczba wywołań funkcji przestaw |
|---|---|---|
| 316498 | 134689 | 3 |
| 43657688 | ||
| 154005710 | ||
| 998877665544321 |
Oceń prawdziwość podanych zdań. Zaznacz P, jeśli zdanie jest prawdziwe, albo F – jeśli jest fałszywe.
Niech n będzie liczbą k-cyfrową, gdzie k > 0. Liczba wywołań funkcji przestaw w zależności od k jest równa:
| Nr | Wzór | P / F |
|---|---|---|
| 1. | k2 | |
| 2. | (k + 1) div 2 (gdzie div oznacza dzielenie całkowite) | |
| 3. | {k2 gdy k jest liczbą parzystąk+12 gdy k jest liczbą nieparzystą | |
| 4. | k+12 |
W postaci pseudokodu lub w wybranym języku programowania napisz nierekurencyjną funkcję przestaw2, która dla danej nieujemnej liczby całkowitej n da taką samą wartość jak przestaw(n).
Uwaga: Twój algorytm może używać wyłącznie zmiennych przechowujących liczby całkowite oraz może operować wyłącznie na liczbach całkowitych. W zapisie możesz wykorzystać tylko operacje arytmetyczne: dodawanie, odejmowanie, mnożenie, dzielenie, dzielenie całkowite, resztę z dzielenia oraz porównywanie liczb, instrukcje sterujące, przypisania do zmiennych lub samodzielnie napisane funkcje, wykorzystujące wyżej wymienione operacje. Zabronione jest używanie funkcji wbudowanych oraz operatorów innych niż wymienione, w tym – funkcji przestaw.
n – nieujemna liczba całkowita
Wynik
w – nieujemna liczba całkowita, wynik działania taki sam jak po wykonaniu przestaw(n)Kliknij Pokaż odpowiedź, aby zobaczyć wzorcowe rozwiązanie z klucza CKE.
funkcja przestaw2(n) w ← 0 p ← 1 dopóki n > 0 wykonuj r ← n mod 100 a ← r div 10 b ← r mod 10 jeżeli n > 9 w ← p * a + 10 * p * b + w w przeciwnym razie w ← p * b + w n ← n div 100 p ← p * 100 zwróć w
W pliku symbole.txt zapisano 2000 napisów. Każdy z nich jest zapisany w osobnym wierszu i składa się z dokładnie 12 znaków spośród: o, +, *.
Napisz program (lub kilka programów) znajdujący(-ch) odpowiedzi do podanych zadań. Każdą odpowiedź zapisz w pliku wyniki2.txt i poprzedź ją numerem oznaczającym zadanie.
Do Twojej dyspozycji jest plik symbole_przyklad.txt, który zawiera 20 wierszy danych spełniających warunki zadania. Odpowiedzi dla pliku symbole_przyklad.txt są podane pod każdym zadaniem.
Pamiętaj, że Twój program musi ostatecznie zadziałać na pliku symbole.txt zawierającym 2000 napisów.
Podaj wszystkie takie napisy z pliku symbole.txt, które są palindromami (czytane od przodu i od tyłu są takie same). Wypisz je po jednym w wierszu, w kolejności takiej jak w pliku symbole.txt.
Odpowiedź dla pliku symbole_przyklad.txt to oooo+**+oooo (w tym pliku jest jeden palindrom).
Poniżej wpisz odpowiedź dla pełnego pliku symbole.txt – każdy napis w osobnym wierszu – i kliknij Sprawdź.
W pliku symbole.txt szukamy „kwadratów" złożonych z dziewięciu sąsiadujących identycznych symboli:
+ + + o o o * * * + + + lub o o o lub * * * + + + o o o * * *
Podaj, ile takich kwadratów występuje w pliku symbole.txt. Jeżeli w pliku występuje jeden taki kwadrat, podaj numer wiersza i numer pozycji w wierszu (licząc od 1) jego środkowego pola. Jeżeli jest więcej takich kwadratów, podaj numer wiersza i numer pozycji w wierszu dla środkowego pola każdego z nich.
Przykład. Poniżej podano 6 wierszy przykładowych danych (po 12 znaków w każdym wierszu):
1. + * * + o * o + + * o + 2. + + + o o o o * o * * * 3. + o * o o o o * * + + + 4. * + * o o o o o o + + + 5. o * * o + + + o + + + + 6. o o o o + + * * + * + o
Mamy tutaj trzy kwadraty złożone z 9 identycznych symboli: pierwszy ma środek w wierszu 3 na pozycji 5, drugi – w wierszu 3 na pozycji 6, a trzeci – w wierszu 4 na pozycji 11.
Odpowiedź dla pliku symbole_przyklad.txt to 1 6 3 (jeden kwadrat, który ma środkowe pole w wierszu 6, na pozycji 3).
Poniżej podaj liczbę kwadratów oraz współrzędne (wiersz, pozycja) środkowego pola każdego z nich dla pełnego pliku symbole.txt, a następnie kliknij Sprawdź.
Informacja do zadań 2.3. i 2.4. Każdy z napisów podanych w pliku symbole.txt będziemy traktować jako liczbę zapisaną w systemie trójkowym, w którym znak o odpowiada cyfrze 0, znak + odpowiada cyfrze 1, a znak * odpowiada cyfrze 2.
Podaj największą liczbę spośród liczb zapisanych w pliku symbole.txt. W odpowiedzi podaj tę liczbę w zapisie dziesiętnym oraz napis jej odpowiadający.
Odpowiedź dla pliku symbole_przyklad.txt to 519789 **+oooo++o.
Poniżej podaj odpowiedź dla pełnego pliku symbole.txt i kliknij Sprawdź.
Oblicz sumę wszystkich liczb z pliku symbole.txt. Podaj jej wartość w zapisie dziesiętnym oraz w zapisie trójkowym z użyciem symboli o, +, *.
Odpowiedź dla pliku symbole_przyklad.txt to 4841542 +oooo****+oo+o+.
Poniżej podaj odpowiedź dla pełnego pliku symbole.txt i kliknij Sprawdź.
Tor lotu pewnego drona składa się z prostych odcinków. Lot rozpoczyna się w punkcie (0, 0), a kończy w punkcie (20000, 0). Dron poza startem i lądowaniem jest zawsze na wysokości większej od zera.
Plik dron.txt zawiera 100 wierszy, w których zapisano dane dotyczące ruchu drona. W każdym wierszu jest zapisana para liczb całkowitych rozdzielonych znakiem spacji. Pierwsza liczba oznacza przemieszczenie drona (odległość) w poziomie od ostatniej pozycji – jest to zawsze liczba dodatnia. Druga liczba oznacza przemieszczenie w pionie od ostatniej pozycji. Jeśli druga liczba jest dodatnia, to dron wykonał ruch w górę, jeśli ujemna – w dół, a jeśli równa 0 – nie zmieniał wysokości.
Przykład 1. Dla przykładowych danych:
3000 2000 2000 9000 5000 -7000 5000 4000 3000 6000 2000 -14000
lot drona można zilustrować na wykresie (zobacz arkusz PDF), gdzie x – odległość w poziomie od punktu startowego, y – wysokość (odległość w pionie od punktu startowego), a [A, B] to umieszczone na wykresie pary liczb oznaczające przemieszczenia drona odpowiednio w poziomie i w pionie.
Napisz program (lub kilka programów), który(-e) znajdzie(-dą) odpowiedzi dla podanych zadań. Każdą odpowiedź zapisz w pliku wyniki3.txt i poprzedź ją numerem oznaczającym zadanie.
Do Twojej dyspozycji jest plik dron_przyklad.txt zawierający 10 wierszy danych w opisanej postaci. Odpowiedzi dla pliku dron_przyklad.txt są podane pod każdym zadaniem. Pamiętaj, że Twój program musi ostatecznie zadziałać na pliku dron.txt zawierającym 100 wierszy danych.
Dla każdego przesunięcia [A, B] zapisanego w pliku dron.txt oblicz największy wspólny dzielnik (NWD) wartości bezwzględnych liczb A i B. Podaj liczbę par [A, B], dla których największy wspólny dzielnik wartości bezwzględnych liczb A i B jest większy od 1.
Uwaga: przyjmujemy, że NWD(A, 0) = A.
Odpowiedź dla pliku dron_przyklad.txt to 6.
Odpowiedź dla pełnego pliku dron.txt:
Rozważamy wszystkie punkty, w których dron znajdował się po wykonaniu kolejnych ruchów (przesunięć).
Dla danych z przykładu 1. będą to punkty: (3000, 2000), (5000, 11000), (10000, 4000), (15000, 8000), (18000, 14000) i (20000, 0).
a) Podaj, ile spośród wszystkich rozważanych punktów znajduje się wewnątrz kwadratu o wierzchołkach (0, 0), (0, 5000), (5000, 5000), (5000, 0). Nie liczymy punktów leżących na krawędziach kwadratu.
Odpowiedź dla pliku dron_przyklad.txt to a) 2. Odpowiedź dla pełnego pliku dron.txt:
b) Spośród wszystkich rozważanych punktów znajdź i podaj trzy różne, takie, że jeden z nich jest środkiem odcinka o końcach w pozostałych dwóch. Jest tylko jedna taka trójka punktów. Uwaga: punkty należące do szukanej trójki nie muszą być trzema kolejnymi punktami, do których przemieszczał się dron.
Odpowiedź dla pliku dron_przyklad.txt to b) (14000, 3014), (16000, 2010), (18000, 1006). Kliknij Pokaż odpowiedź, aby zobaczyć odpowiedź dla pełnego pliku dron.txt.
b) (5832, 1801), (7410, 1990), (8988, 2179)
Dokończ zdanie. Zaznacz właściwą odpowiedź spośród podanych.
Program typu keylogger służy do
Poniżej sposobem pisemnym dodano dwie liczby podane w zapisie binarnym. Uzupełnij brakujące cyfry tak, aby działanie było wykonane poprawnie.
Składnik 1: 1 1 0 1 0 1 1 0 1
Składnik 2: 1 1 0 0 1 0 1 1 1
Suma: 1 0 1 1 0 0 1 1 0
W 2033 roku na Marsie wylądowała automatyczna stacja wydobywcza wyposażona w transporter i w autonomiczny dron pobierający ładunki skał zawierających minerał niewystępujący na Ziemi – martianeum.
Stacja działa według następujących zasad:
dron codziennie przywozi ładunek z pewnego obszaru Marsa
stacja waży ładunek przywieziony przez drona i bada zawartość martianeum
jeśli zawartość martianeum w przywiezionym ładunku wynosi co najmniej 1%, to stacja automatycznie wydobywa cały minerał z tego ładunku
jeśli na koniec dnia (po wydobyciu martianeum) ilość minerału na stacji osiągnie co najmniej 100 kg, to transporter zabiera 100 kg na orbitę, skąd ładunek jest wysyłany na Ziemię, a transporter wraca do stacji (jeśli na stacji zgromadzone jest więcej niż 100 kg, to nadmiar pozostaje na stacji)
początkowy stan magazynu na stacji – 0 kg martianeum.
W pliku tekstowym martianeum.txt w kolejnych wierszach zapisano dane z lat 2033–2038:
| Pole | Opis |
|---|---|
data | data przywozu ładunku w formacie rrrr-mm-dd |
nazwa_obszaru | nazwa obszaru Marsa, z którego ładunek został pobrany |
masa [kg] | masa ładunku drona w kilogramach |
zawartość [%] | zawartość martianeum w próbce w % (nieujemna liczba z jednym miejscem po przecinku, np. 0,1 oznacza 0,1%) |
Dane w pliku rozdzielono znakami tabulacji.
Przykład:
| data | nazwa_obszaru | masa [kg] | zawartość [%] |
|---|---|---|---|
| 2033-03-03 | Cebrenia | 27,8 | 0,2 |
| 2033-03-04 | Amenthes | 11,8 | 1,7 |
| 2033-03-05 | Noachis | 21,0 | 6,0 |
| 2033-03-06 | Coprates | 26,3 | 11,4 |
| 2033-03-07 | Ismenius Lacus | 28,8 | 0,0 |
| 2033-03-08 | Mare Boreum | 29,2 | 0,0 |
Z wykorzystaniem danych zawartych w pliku martianeum.txt oraz dostępnych narzędzi informatycznych wykonaj podane zadania. Wyniki zapisz w pliku tekstowym wyniki6.txt. Odpowiedź do każdego zadania poprzedź numerem tego zadania.
Podaj łączną masę wszystkich ładunków drona oraz łączną masę martianeum wydobytego przez stację.
Łączna masa ładunków [kg]:
Łączna masa martianeum [kg]:
Podaj nazwę obszaru, dla którego średnia masa przywiezionych ładunków jest najmniejsza.
Odpowiedź:
Czas pracy stacji dzielimy na kolejne 7-dniowe okresy. Pierwszy okres obejmuje dni od 03.03.2033 do 09.03.2033, drugi – od 10.03.2033 do 16.03.2033 itd. Podaj największą łączną masę ładunków przywiezionych w ciągu kolejnych 7-dniowych okresów oraz podaj datę początku okresu, w którym przywieziono tę największą masę.
Największa łączna masa [kg]:
Data początku okresu:
Wykonaj zestawienie, w którym dla każdego obszaru podasz, ile razy dron przewoził ładunek z tego obszaru w poszczególnych latach. Na podstawie wykonanego zestawienia utwórz wykres skumulowany kolumnowy. Pamiętaj o czytelnym opisie wykresu: na osi X umieść nazwy obszarów, dodaj opisy osi – „nazwy obszarów" dla osi X i „liczba przewozów ładunku" dla osi Y, tytuł oraz legendę zawierającą kolejne lata.
Kliknij Pokaż odpowiedź, aby zobaczyć wzorcowe rozwiązanie z klucza CKE – zestawienie liczby przewozów oraz gotowy wykres.
Zestawienie liczby przewozów ładunku z każdego obszaru w poszczególnych latach 2033–2038:
| Nazwy obszarów | 2033 | 2034 | 2035 | 2036 | 2037 | 2038 |
|---|---|---|---|---|---|---|
| Aeolis | 5 | 7 | 11 | 2 | 13 | 5 |
| Amazonis | 23 | 20 | 21 | 29 | 20 | 25 |
| Amenthes | 10 | 5 | 9 | 12 | 10 | 10 |
| Arabia | 9 | 10 | 15 | 8 | 10 | 7 |
| Arcadia | 7 | 7 | 11 | 14 | 5 | 9 |
| Argyre | 4 | 4 | 3 | 3 | 10 | 7 |
| Casius | 6 | 10 | 7 | 13 | 7 | 7 |
| Cebrenia | 4 | 5 | 1 | 1 | 1 | 1 |
| Coprates | 21 | 27 | 18 | 33 | 30 | 23 |
| Diacria | 2 | 3 | 2 | 3 | 3 | 2 |
| Elysium | 6 | 9 | 5 | 4 | 8 | 7 |
| Eridania | 8 | 19 | 23 | 20 | 22 | 16 |
| Hellas | 1 | 4 | 2 | 1 | 3 | 4 |
| Iapygia | 47 | 51 | 67 | 53 | 51 | 33 |
| Ismenius Lacus | 6 | 4 | 5 | 3 | 9 | 13 |
| Lunae Palus | 11 | 11 | 9 | 10 | 10 | 3 |
| Mare Acidalium | 8 | 14 | 10 | 8 | 14 | 10 |
| Mare Australe | 2 | 3 | 2 | 3 | 2 | 2 |
| Mare Boreum | 14 | 19 | 8 | 13 | 14 | 12 |
| Mare Tyrrhenum | 2 | 5 | 3 | 2 | 0 | 2 |
| Margaritifer Sinus | 4 | 5 | 5 | 2 | 2 | 7 |
| Memnonia | 11 | 24 | 23 | 19 | 14 | 13 |
| Noachis | 13 | 11 | 11 | 25 | 17 | 14 |
| Oxia Palus | 3 | 3 | 1 | 0 | 4 | 2 |
| Phaethontis | 1 | 7 | 2 | 4 | 5 | 4 |
| Phoenicis Lacus | 25 | 22 | 25 | 22 | 15 | 18 |
| Sinus Sabaeus | 14 | 12 | 19 | 13 | 12 | 6 |
| Syrtis Major | 6 | 2 | 5 | 4 | 6 | 3 |
| Tharsis | 29 | 40 | 38 | 41 | 46 | 39 |
| Thaumasia | 2 | 2 | 4 | 1 | 2 | 3 |
Na podstawie zestawienia tworzymy skumulowany wykres kolumnowy: na osi X – nazwy obszarów, na osi Y – liczba przewozów ładunku, legenda – kolejne lata, wraz z tytułem wykresu.
Uwzględnij zasady działania stacji opisane na początku zadania i podaj, ile razy stacja wysyłała ładunek na orbitę oraz datę pierwszego i datę ostatniego transportu ładunku na orbitę.
Liczba wysyłek na orbitę:
Data pierwszego transportu:
Data ostatniego transportu:
W trzech plikach tekstowych o nazwach laziki.txt, obszary.txt, pomiary.txt zapisano informacje zawierające dane o poszukiwaniu wody na Marsie w latach 2050–2080. Łaziki zasilane energią słoneczną poruszają się po różnych obszarach Marsa i wykonują pomiary georadarowe, na podstawie których szacują ilość wody i głębokość, na której się ona znajduje. Pierwszy wiersz każdego z plików jest wierszem nagłówkowym, a dane w wierszach rozdzielono znakami tabulacji.
Plik o nazwie laziki.txt zawiera informacje o różnych łazikach, które wykonywały pomiary. W każdym wierszu tego pliku znajdują się:
| Pole | Opis |
|---|---|
nr_lazika | co najwyżej trzycyfrowy, unikatowy numer łazika |
nazwa_lazika | nazwa łazika (tekst do 50 znaków) |
rok_wyslania | rok startu z Ziemi |
wsp_ladowania | współrzędne lądowania na Marsie oddzielone znakiem przecinka i spacją |
Przykład:
| nr_lazika | nazwa_lazika | rok_wyslania | wsp_ladowania |
|---|---|---|---|
| 1 | Mariner 3 | 2049 | 50.51N, 70.01E |
| 2 | Mariner 6 | 2050 | 11.90N, 119.49E |
| 3 | Mariner 7 | 2050 | 44.90S, 130.80W |
Plik o nazwie obszary.txt zawiera informacje o obszarach na Marsie. W każdym wierszu tego pliku znajdują się:
| Pole | Opis |
|---|---|
kod_obszaru | pięcioznakowy, unikatowy kod obszaru |
nazwa_obszaru | nazwa obszaru (tekst do 50 znaków) |
Przykład:
| kod_obszaru | nazwa_obszaru |
|---|---|
| MC-01 | Mare Boreum |
| MC-02 | Diacria |
| MC-03 | Arcadia |
Plik o nazwie pomiary.txt zawiera informacje o wynikach badań georadarowych wykonanych przez łaziki. W każdym wierszu tego pliku znajdują się:
| Pole | Opis |
|---|---|
nr_lazika | co najwyżej trzycyfrowy numer łazika |
data_pomiaru | data wykonania pomiaru (w formacie rrrr-mm-dd) |
kod_obszaru | pięcioznakowy kod obszaru, na którym został wykonany pomiar |
wspolrzedne | współrzędne wykonania pomiaru, oddzielone znakiem przecinka i spacją |
glebokosc | szacowana głębokość, na której znajduje się woda (w metrach) |
ilosc | szacowana ilość wody (w m³) |
Przykład:
| nr_lazika | data_pomiaru | kod_obszaru | wspolrzedne | glebokosc | ilosc |
|---|---|---|---|---|---|
| 17 | 2061-06-03 | MC-13 | 13.17N, 77.80E | 344 | 5622 |
| 17 | 2056-06-02 | MC-14 | 14.93N, 106.00E | 43 | 2054 |
| 47 | 2075-10-18 | MC-05 | 45.57N, 3.30E | 9 | 23366 |
Z wykorzystaniem danych zawartych w podanych plikach oraz dostępnych narzędzi informatycznych podaj odpowiedzi do zadań 7.1–7.4. Odpowiedzi zapisz w pliku wyniki7.txt, a każdą z nich poprzedź numerem odpowiedniego zadania.
Podaj nazwę obszaru, na którym znaleziono łącznie we wszystkich pomiarach najwięcej m³ wody na głębokości do 100 metrów włącznie. Jest jeden taki obszar.
Odpowiedź:
Podaj nazwę łazika, który wykonywał pomiary w najdłuższym okresie, licząc od pierwszego (najwcześniejszego) do ostatniego (najpóźniejszego) pomiaru. Podaj datę pierwszego i ostatniego pomiaru wykonanego przez ten łazik.
Nazwa łazika:
Data pierwszego pomiaru:
Data ostatniego pomiaru:
Podaj nazwy obszarów na Marsie, na których żaden z łazików nie wykonał ani jednego pomiaru w tym samym roku, w którym został wysłany z Ziemi.
Wpisz nazwy obszarów – po jednej w wierszu – i kliknij Sprawdź.
Podaj nazwy łazików, które wylądowały na półkuli południowej, ale wykonywały pomiary na obu półkulach: północnej (N) i południowej (S).
Wpisz nazwy łazików – po jednej w wierszu – i kliknij Sprawdź.
Do tabel utworzonych na podstawie opisanych wcześniej plików dołączamy kolejną – o nazwie Producent, w której zapisano informacje o producentach poszczególnych modeli łazików.
Tabela Producent zawiera następujące pola:
| Pole | Opis |
|---|---|
kod_producenta | unikatowy kod producenta |
nazwa | nazwa producenta |
kraj | kraj producenta |
Do tabeli Laziki dodano pole kod_producenta.
Napisz w języku SQL zapytanie, w wyniku którego otrzymasz listę nazw producentów, których łaziki badały obszar Marsa o nazwie Arcadia w roku 2060. Nazwy producentów nie mogą się powtarzać.
Kliknij Pokaż odpowiedź, aby zobaczyć wzorcowe zapytanie z klucza CKE.
SELECT DISTINCT Producent.nazwa FROM Producent INNER JOIN Laziki ON Producent.kod_producenta = Laziki.kod_producenta INNER JOIN Pomiary ON Laziki.nr_lazika = Pomiary.nr_lazika INNER JOIN Obszary ON Obszary.kod_obszaru = Pomiary.kod_obszaru WHERE Obszary.nazwa_obszaru = "Arcadia" and YEAR(Pomiary.data_pomiaru) = 2060;