Professional Documents
Culture Documents
INFORMATOR
O EGZAMINIE MATURALNYM
Z INFORMATYKI
OD ROKU SZKOLNEGO 2014/2015
INFORMATOR
O EGZAMINIE MATURALNYM
Z INFORMATYKI
OD ROKU SZKOLNEGO 2014/2015
Spis treci
Wstp ..
9
9
10
10
13
81
Wstp
Wstp
Informator o egzaminie maturalnym z informatyki od roku szkolnego 2014/2015 jest
podzielony na dwie czci.
CZ PIERWSZA (1.1.1.4.) zawiera oglne informacje dotyczce egzaminu maturalnego
z informatyki, w tym zakres sprawdzanych wiadomoci i umiejtnoci, krtk
charakterystyk arkusza egzaminacyjnego oraz sposobu oceniania odpowiedzi w zadaniach
zamknitych i otwartych.
CZ DRUGA zawiera przykadowe zadania z informatyki, jakie mog pojawi si
w arkuszach egzaminacyjnych w obu czciach egzaminu. Do kadego zadania:
przypisano najwaniejsze wymagania oglne i szczegowe z podstawy programowej
ksztacenia oglnego, do ktrych to zadanie si odnosi,
podano przykadowe rozwizania zada otwartych oraz odpowiedzi do zada
zamknitych.
Zadania w Informatorze:
nie wyczerpuj wszystkich typw zada, ktre mog wystpi w arkuszach
egzaminacyjnych,
nie ilustruj wszystkich wymaga z zakresu informatyki w podstawie programowej,
nie zawieraj wszystkich moliwych rodzajw materiaw rdowych, ktre mog
stanowi obudow zada.
Informator nie moe by zatem jedyn ani nawet gwn wskazwk do planowania procesu
ksztacenia w zakresie informatyki w szkole ponadgimnazjalnej. Tylko realizacja wszystkich
wymaga z podstawy programowej moe zapewni wszechstronne wyksztacenie uczniw
szk ponadgimnazjalnych.
Przed przystpieniem do dalszej lektury Informatora warto zapozna si z oglnymi zasadami
obowizujcymi na egzaminie maturalnym od roku szkolnego 2014/2015. S one okrelone
w rozporzdzeniu Ministra Edukacji Narodowej z dnia 30 kwietnia 2007 r. w sprawie
warunkw i sposobu oceniania, klasyfikowania i promowania uczniw i suchaczy oraz
sposobu przeprowadzania sprawdzianw i egzaminw w szkoach publicznych (Dz.U. nr 83,
poz. 562, z pn. zm.), w tym w szczeglnoci w rozporzdzeniu z 25 kwietnia 2013 r.
zmieniajcym powysze rozporzdzenie (Dz.U. z 2013 r., poz. 520), oraz w skrconej
formie w czci oglnej Informatora o egzaminie maturalnym od roku szkolnego
2014/2015, dostpnej na stronie internetowej Centralnej Komisji Egzaminacyjnej
(www.cke.edu.pl) oraz na stronach internetowych okrgowych komisji egzaminacyjnych.
Opis egzaminu
1.
10
Opis egzaminu
11
Za rozwizanie zadania, ktrego celem jest uoenie i napisanie algorytmu, zdajcy otrzymuje
pen liczb punktw tylko za poprawny i dziaajcy algorytm. W przypadku usterek,
np. niepoprawnej konstrukcji ptli, pominicia niektrych elementw w zliczaniu, bdw
w przeszukiwaniu tablicy, indeksowaniu przyznawana jest tylko cz punktw
(za poprawnie zapisane czynnoci wynikajce z treci zadania).
W zadaniach praktycznych, w drugiej czci egzaminu, oceniane s rzeczywiste efekty
i osignite rezultaty pracy zdajcego, np. wyniki oblicze w arkuszu kalkulacyjnym, wyniki
symulacji, odpowiedzi uzyskane za pomoc kwerend, wyniki uzyskane za pomoc programu
napisanego przez zdajcego. Dane do zada programistycznych mog by tak dobrane,
e uzyskanie wynikw dla danych duych rozmiarw bdzie wymaga zastosowania
w napisanym programie algorytmu o jak najmniejszej zoonoci.
Zdajcy w drugiej czci egzaminu, jako rozwizanie zadania, powinien przekaza do oceny
pliki zawierajce komputerow realizacj rozwizania/oblicze oraz pliki (najczciej
tekstowe) zawierajce odpowiedzi do zadania/zada.
Za cakowicie poprawne rozwizania zada, uwzgldniajce inny tok rozumowania ni
podany w kryteriach oceniania, przyznawana jest pena liczba punktw.
Gdy do jednego polecenia zdajcy podaje kilka rozwiza (prawidowe i bdne),
to egzaminator nie wybiera prawidowego rozwizania i nie przyznaje punktw.
12
13
2.
Zadania 112 zawieraj po cztery odpowiedzi, z ktrych kada jest albo prawdziwa, albo
faszywa. Zdecyduj, ktre z podanych odpowiedzi s prawdziwe (P), a ktre faszywe (F).
Zaznacz znakiem X odpowiedni rubryk w tabeli.
Zadanie 1. (01)
Dana jest tabela:
Sprawdzian
uczen
Abacki
Babacki
Cabacki
Dabacki
klasowka
45
50
100
80
egzamin
0
80
90
70
Abacki, Babacki.
Babacki, Cabacki.
Abacki, Cabacki.
Abacki, Dabacki.
Wymagania oglne
Wymagania szczegowe
Rozwizanie
Schemat punktowania
14
Zadanie 2. (01)
Liczba CB(16) jest rwna liczbie
P
1010101111(2).
313(8).
112011120(3).
203(10).
Wymagania oglne
Wymagania szczegowe
Rozwizanie
Schemat punktowania
Zadanie 3. (01)
W grafice rastrowej
P
Wymagania oglne
Wymagania szczegowe
Rozwizanie
Schemat punktowania
15
Zadanie 4. (01)
Do szyfrowania informacji suy
P
algorytm RSA.
metoda bisekcji.
PGP.
algorytm Huffmana.
Wymagania oglne
Wymagania szczegowe
Rozwizanie
Schemat punktowania
Zadanie 5. (01)
Dynamicznym przydzielaniem numerw IP w sieci zajmuje si serwer
P
DNS.
DHCP.
SMTP.
FTP.
Wymagania oglne
Wymagania szczegowe
Rozwizanie
Schemat punktowania
16
Zadanie 6. (01)
Dane: n liczba naturalna wiksza od zera
Funkcja K(n)
1. dla n 4 wynikiem jest 1
2. dla n 4 wynikiem jest K(n1) K(n3)
Dla funkcji K zachodzi
P
Wymagania oglne
Wymagania szczegowe
Rozwizanie
Schemat punktowania
Zadanie 7. (01)
Rozwa poniszy algorytm, gdzie n jest liczb cakowit nieujemn.
(1) wynik 0;
(2) dopki n 0 wykonuj
(3)
wynikwynik + (n mod 10)
(4)
nn div 10
gdzie: mod to operator reszty z dzielenia,
div to operator dzielenia cakowitego.
Dla podanego algorytmu zachodzi
P
dla n = 36789 wynik = 30.
dla n = 11111111 wynik = 8.
wynik jest rwny sumie cyfr w zapisie dziesitnym liczby n.
dla n = 1234 zmienna wynik w kolejnych iteracjach przyjmuje wartoci
1,3,6,10.
Wymagania oglne
Wymagania szczegowe
Rozwizanie
Schemat punktowania
17
Zadanie 8. (01)
Rozwa poniszy algorytm, gdzie n jest liczb cakowit nieujemn, a[0..n] jest tablic liczb
cakowitych, z liczb rzeczywist.
(1) in;y a[n];
(2) dopki i 0 wykonuj
(3)
ii1
(4)
yy*z + a[i]
Algorytm ten przedstawia realizacj
P
obliczania wartoci wielomianu dla danej wartoci z.
obliczenia NWW dla n liczb naturalnych.
obliczenia NWD dla n liczb naturalnych.
schematu Hornera.
Wymagania oglne
Wymagania szczegowe
Rozwizanie
Schemat punktowania
18
Zadanie 9. (01)
Program komputerowy na licencji freeware mona
P
Wymagania szczegowe
Rozwizanie
Schemat punktowania
Wymagania szczegowe
Rozwizanie
Schemat punktowania
19
podpis elektroniczny.
wpisanie imienia i nazwiska.
zaszyfrowanie dokumentu.
wstawienie zeskanowanego podpisu autora.
Wymagania oglne
Wymagania szczegowe
Rozwizanie
Schemat punktowania
Wymagania oglne
Wymagania szczegowe
Rozwizanie
Schemat punktowania
20
183
1022
Miejsce na obliczenia.
b) U algorytm i zapisz go w wybranej przez siebie notacji (lista krokw lub jzyk
programowania, ktry wybrae na egzamin), ktry dla danej dodatniej liczby cakowitej
n oblicza maksymaln liczb kolejnych jedynek pojawiajcych si w zapisie binarnym tej
liczby.
Specyfikacja
Dane: dodatnia liczba cakowita n
Wynik: dodatnia liczba cakowita m maksymalna liczba kolejnych jedynek w zapisie
binarnym n
Przykad: dla n = 187 wynikiem jest m = 3, poniewa 187 = (10111011)2
21
Algorytm
Wymagania oglne
Wymagania szczegowe
22
Schemat punktowania
Podpunkt
Liczba
punktw
za
podpunkt
Czynno
Liczba
punktw
za
zadanie
W tym zadaniu badamy zapisy binarne dodatnich liczb cakowitych. Rozwaamy nastpujcy
algorytm:
Specyfikacja
Dane: dodatnia liczba cakowita n
Wynik: dodatnia liczba cakowita j rwna liczbie jedynek w zapisie binarnym liczby n
(1) j 0;
(2) powtarzaj
(3)
jeli n mod 2 = 1, to
(4)
jj+1;
(5)
n :n div 2;
(6) a n = 0;
Uwaga: uyte operatory mod i div oznaczaj odpowiednio reszt z dzielenia i dzielenie
cakowite, np. 5 mod 2 = 1, 5 div 2 = 2, 6 mod 2 = 0, 6 div 2 = 3.
a) Przeanalizuj powyszy algorytm i podaj wartoci zmiennej j po zakoczeniu jego
dziaania dla n = 183 oraz dla n = 1022. Uzupenij brakujcy fragment specyfikacji.
n
183
1022
Miejsce na obliczenia.
183 = (10110111)2
1022 = (1111111110)2
23
b) U algorytm i zapisz go w wybranej przez siebie notacji (lista krokw lub jzyk
programowania, ktry wybrae na egzamin), ktry dla danej dodatniej liczby cakowitej
n oblicza maksymaln liczb kolejnych jedynek pojawiajcych si w zapisie binarnym tej
liczby.
Specyfikacja
Dane: dodatnia liczba cakowita n
Wynik: dodatnia liczba cakowita m maksymalna liczba kolejnych jedynek w zapisie
binarnym n
Przykad: dla n = 187 wynikiem jest m = 3, poniewa 187 = (10111011)2
Algorytm
Kady cig kolejnych jedynek w zapisie binarnym liczby, ktry nie mona ju wyduy,
nazywamy blokiem. W zapisie binarnym liczby 187 mamy trzy bloki jedynek o dugociach
jeden, trzy i dwa: (10111011)2. Naszym celem jest policzenie dugoci najduszego bloku.
Modyfikujemy algorytm z podpunktu a), wyznaczajc kolejne cyfry liczby n, od cyfr najmniej
znaczcych do cyfr najbardziej znaczcych. W momencie wykrycia bloku (pierwszej jedynki
w tym bloku) rozpoczynamy zliczanie jedynek w nim zawartych, a w zapisie binarnym
napotkamy zero lub wyznaczymy ju wszystkie cyfry zapisu. Po przetworzeniu bloku
porwnujemy jego dugo z dugoci dotychczas najduszego bloku i jeli policzona
dugo jest wiksza od dotychczas najwikszej, aktualizujemy informacj o dugoci
najduszego bloku.
Oto zapis opisanego sowami algorytmu:
(1) m 0;
(2) powtarzaj
// m dugo dotychczas najduszego bloku
(3)
jeli n mod 2 = 1, to
// nowy blok
(4)
dl_bloku 0; // tu zliczamy liczb jedynek w bloku
(5)
powtarzaj
(6)
dl_blokudl_bloku + 1;
(7)
n n div 2;
(8)
a n mod 2 = 0;
(9)
jeli dl_bloku >m, to
(10)
m dl_bloku;
(11) nn div 2;
(12) a n = 0;
Komentarz
Podpunkt a) w tym zadaniu nie powinien sprawi adnych trudnoci. Przedstawiony w nim
algorytm jest typowym szkolnym algorytmem wyznaczania kolejnych cyfr dodatniej liczby
cakowitej w jej zapisie binarnym, poczynajc od cyfry najmniej znaczcej, a koczc na
cyfrze najbardziej znaczcej. Warto zauway, e w ten sam sposb mona wyznaczy cyfry
w zapisie pozycyjnym przy dowolnej podstawie p, 2 p 10. Wystarczy wykonywa
24
25
Maksymalna liczba
fanw w kwadracie
8
16
32
26
14.2 Potraktuj sal (Rys. 1.) jako ukad kartezjaski, przyjmujc pozycj gwiazdy jako punkt
(0,0), a pozycje fanw jako punkty kratowe o okrelonych wsprzdnych (x,y),
odpowiedz na pytania:
a) W ktrej strefie znajduje si pozycja o wsprzdnych (1718)?
.....
b) Podaj dwie pozycje, najbliej pooone wzgldem pozycji (4,3), zasaniane przez
fana stojcego na tej pozycji.
.....
c) Podaj wsprzdne dwch miejsc, ktrych zajcie przez fanw uniemoliwi
ogldanie gwiazdy przez fana znajdujcego si w polu (8; 12).
.....
d) Czy fan moe stan na kadej pozycji, ktrej jedna ze wsprzdnych jest rwna 1?
.....
e) Czy fan moe stan w miejscu o wsprzdnych (13; 39)? Odpowied uzasadnij.
.....
14.3 Zapisz algorytm (w postaci listy krokw, schematu blokowego lub w wybranym jzyku
programowania) sprawdzajcy, czy fan moe stan w miejscu o danych wsprzdnych
(x,y).
Specyfikacja
Dane: x,y liczby cakowite okrelajce pooenie fana wzgldem gwiazdy
Wynik: Komunikat TAK, jeeli fan widzi gwiazd lub komunikat NIE, jeeli fan gwiazdy nie
widzi.
27
Algorytm
Wymagania oglne
Wymagania szczegowe
28
Schemat punktowania
Nr
podpunktu
14.1.
14.2.
14.3.
Czynno
Za poprawn uzupenienie tabeli 3 punkty.
Za poprawnie uzupenienie kadego wiersza 1 punkt.
Za poprawne podanie odpowiedzi do kadego
podpunktu 1 punkt; razem 4 punkty.
Za poprawny algorytm 2 punkty.
W przypadku algorytmu z bdnymi warunkami
brzegowymi 1 punkt.
Liczba
punktw
za
podpunkt
Liczba
punktw
za
zadanie
3
4
29
Maksymalna liczba
fanw w kwadracie
8
16
32
48
80
96
14.2.Traktujc sal (Rys.1.) jako ukad kartezjaski, przyjmujc pozycj gwiazdy jako punkt
(0,0), a pozycje fanw jako punkty kratowe o okrelonych wsprzdnych (x,y) odpowied
na pytania:
a) W ktrej strefie znajduje si pozycja o wsprzdnych (17; 18)?
XVIII(max z |x| lub |y|)
b) Podaj dwie pozycje, najbliej pooone wzgldem pozycji (4,3), zasaniane przez fana
stojcego na tej pozycji.
(8; 6) oraz (12; 9)
c) Podaj wsprzdne dwch miejsc, ktrych zajcie przez fanw uniemoliwi ogldanie
gwiazdy przez fana znajdujcego si w polu (8; 12).
(2; 3) oraz (4; 6)
d) Czy fan moe stan w kadym punkcie, ktrego jedna ze wsprzdnych jest rwna 1?
TAK
e) Czy fan moe stan w miejscu o wsprzdnych (13; 39)? Odpowied uzasadnij.
NIE. Wsprzdne x i y fana musz by liczbami wzgldnie pierwszymi.
14.3.Zapisz algorytm (w postaci listy krokw, schematu blokowego lub w wybranym jzyku
programowania) sprawdzajcy, czy fan moe stan w miejscu o danych wsprzdnych
(x,y).
Specyfikacja
Dane: x,y liczby cakowite okrelajce pooenie fana wzgldem gwiazdy
Wynik: komunikat TAK, jeeli fan widzi gwiazd lub komunikat NIE jeeli fan gwiazdy nie
widzi
Algorytm
Poniej zamieszczony jest algorytm zapisany w jzyku programowania C:
int nwd(int a, int b)
{ while (a != b)
if (a > b) a -= b; else b -=a;
return a;
}
int main()
{
cin>>x>>y;
30
Komentarz
Kluczem do poprawnego sformuowania algorytmu jest spostrzeenie, e fani mog zaj tylko
te punkty kratowe o wsprzdnych (x, y) , ktre nie zostan przesonite przez aden inny punkt
kratowy. Inaczej, na odcinku, czcym punkt (0, 0) i punkt kratowy (x, y), ktry ma zaj fan,
nie moe wystpi aden inny punkt o wsprzdnych cakowitych. Punktami speniajcymi ten
warunek s punkty, ktrych NWD(x, y)=1, czyli takie, ktrych wsprzdne s liczbami
wzgldnie pierwszymi. Dlaczego? Gdyby wsprzdne (x, y) nie byy wzgldnie pierwsze, to
znaczyoby, e na wymienionym odcinku musiaby si znale punkt o wsprzdnych
cakowitych (x / NWD(x, y), y/ NWD(x, y)), ktry zasaniaby gwiazd.
Dla uproszczenia algorytmu mona sprowadzi warunki zadania do przypadku, gdy x> 0
i y>0, poniewa NWD(x,y)=NWD(|x|,|y|). Jeeli ktrakolwiek wsprzdna jest rwna zero, to
mona wykorzysta fakt, e NWD(x, 0)=|x|.
Punkt 14.1 oraz 14.2 z podpunktami od a) do e) pomagaj w analizie problemu przed
sformuowaniem i zapisaniem algorytmu. Po poprawnym uzasadnieniu odpowiedzi z punktu
14.2.e) zapisanie algorytmu nie powinno przysporzy trudnoci zdajcym.
31
Bbelkowy
Przez wstawianie liniowe
Szybki
b) Dla tablicy a[1..4] = [3,2,4,1] algorytm sortowania przez wstawianie liniowe wykona
dokadnie 4 zamiany ssiednich elementw: (3 z 2), (4 z 1), (3 z 1), (2 z 1). Uzupenij luki
w podanych poniej tablicach rnymi liczbami cakowitymi tak, aby algorytm
sortowania przez wstawianie liniowe wykona na kadej z nich dokadnie 11 zamian
ssiednich elementw.
Tablica 1.
Pozycja
Zawarto
10
Pozycja
Zawarto
10
10
Tablica 2.
8
32
Przykad:
Pocztkowa zawarto tablicy:
a = [10, 2, 8, 4, 6, 5, 7, 9, 3, 1]
Sortowanie ostatnich 9 elementw (Sort(2,10)):
a = [10, 1, 2, 3, 4, 5, 6, 7, 8, 9]
Sortowanie pierwszych 9 elementw (Sort(1,9)):
a = [1, 2, 3, 4, 5, 6, 7, 8, 10, 9]
Sortowanie ostatnich 9 elementw (Sort(2,10)):
a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10].
Zapisz algorytm sortowania tablicy 1000-elementowej w co najwyej 6 krokach, przy
zaoeniu, e w jednym kroku mona posortowa blok zoony z co najwyej 500 elementw.
Kolejne kroki algorytmu:
1.
2.
3.
4.
5.
6.
Wymagania oglne
Wymagania szczegowe
33
Schemat punktowania
Podpunkt
Liczba
punktw
za
podpunkt
Czynno
Za poprawne uzupenienie wszystkich wierszy tabeli
1 punkt.
Za poprawne uzupenienie pierwszej tabeli (pozycja 4
3, pozycja 8 9) 1 punkt.
Za poprawne uzupenienie drugiej tabeli (10,9,8,7,6)
1 punkt.
Za poprawny algorytm 3 punkty.
W przypadku bdnego algorytmu:
ustawienie minimum na pierwszej pozycji 1 punkt.
ustawienie maksimum na ostatniej pozycji 1 punkt.
Liczba
punktw
za
zadanie
2
6
b) Dla tablicy a[1..4] = [3,2,4,1] algorytm sortowania przez wstawianie liniowe wykona
dokadnie 4 zamiany ssiednich elementw. Uzupenij luki w podanych poniej tablicach
rnymi liczbami cakowitymi tak, aby algorytm sortowania przez wstawianie liniowe
wykona na kadej z nich dokadnie 11 zamian ssiednich elementw.
Tablica 1.
Pozycja
Zawarto
1
10
2
1
3
2
4
3
5
4
6
5
7
6
8
9
9
7
10
8
Tablica 2.
Pozycja
Zawarto
1
1
2
2
3
3
4
5
5
4
6
10
7
9
8
8
9
7
10
6
34
Sort(1,500)
Sort(251,750)
Sort(501,1000)
Sort(1,500)
Sort(251,750)
Sort(1,500)
Komentarz
To zadanie sprawdza rozumienie zasad dziaania podstawowych algorytmw sortowania.
Wszystkie trzy algorytmy wymienione w punkcie a), to algorytmy sortujce polegajce na
porwnywaniu wartoci elementw znajdujcych si na rnych pozycjach w tablicy
a i zamianie ich miejscami, jeli element o wikszej wartoci poprzedza w tablicy element
o mniejszej wartoci. W algorytmach sortowania, bbelkowym i przez wstawianie liniowe,
porwnywane i zamieniane s tylko pary ssiednich elementw w tablicy. Tak nie jest
w algorytmie szybkim, poniewa w przeciwnym razie stracilibymy walor szybkoci.
eby rozwiza punkt b) zastanwmy si, ile zamian wykonamy sortujc algorytmem przez
wstawianie tablic a[1..n] o zadanej zawartoci. Oznaczmy przez b[i] liczb elementw
w tablicy a znajdujcych si na pozycjach o indeksach mniejszych od i, ale o wartociach
wikszych od wartoci elementu a[i]. Nietrudno zauway, e podczas wstawiania elementu
a[i] do uporzdkowanego ju fragmentu tablicy a[1..i-1], zostanie on zamieniony ze
wszystkimi elementami o wartociach wikszych, a jest ich dokadnie b[i]. Zatem czna
liczba zamian wykonywanych w algorytmie sortowania przez wstawianie tablicy a wyniesie
b[1]+b[2]+ +b[n]. Poniej pokazujemy zawarto tablicy b dla przykadw z punktu b).
35
Tablica 1.
pozycja
Zawarto
tablica b
1
10
0
2
1
1
3
2
1
4
3
1
5
4
1
6
5
1
7
6
1
8
9
1
9
7
2
10
8
2
1
1
0
2
2
0
3
3
0
4
5
0
5
4
1
6
10
0
7
9
1
8
8
2
9
7
3
10
6
4
Tablica 2.
pozycja
zawarto
tablica b
36
[epsilon].
2
Specyfikacja
Dane: liczby a i b takie, e a b oraz f a f b 0
liczba 0
Wynik: liczba rzeczywista x z przedziau a, b taka, e f x 0 dla pewnego takiego,
e
2
2
Funkcja Mzer a, b,
1. jeeli b a , to wykonaj:
a. s a b / 2
b. jeeli f s 0 , to podaj s jako wynik
c. jeeli f a f s 0 , to podaj Mzer a, s, jako wynik
w przeciwnym przypadku podaj Mzer s, b, jako wynik
2. w przeciwnym przypadku podaj a b / 2 jako wynik
a)
Poniej prezentujemy fragment wykresu funkcji f , dla ktrej wywoujemy funkcj Mzer:
Wykres funkcji f w przedziale <0,128>
100
80
60
40
20
0
0
-20
-40
37
10
32
25
5
1
5
Miejsce na obliczenia
b)
Algorytm:
1. dopki b a wykonuj
a) s .............................
b) jeeli f s 0 , to podaj s jako wynik i zakocz wykonywanie algorytmu
c) jeeli f a f s 0 , to b ....................
w przeciwnym przypadku .............................
2. podaj a b / 2 jako wynik
38
Wymagania oglne
Wymagania szczegowe
Schemat punktowania
Podpunkt
a
b
Liczba
punktw
za
podpunkt
Czynno
Za wszystkie poprawne odpowiedzi 3 punkty.
Za trzy poprawne odpowiedzi 2 punkty.
Za dwie poprawne odpowiedzi 1 punkt.
Za kade poprawne uzupenienie brakujcego
elementu 1 punkt.
Liczba
punktw
za
zadanie
3
6
3
[epsilon].
2
Specyfikacja:
Dane: liczby a i b takie, e a b oraz f a f b 0
liczba 0
Wynik: liczba rzeczywista x z przedziau a, b taka, e f x 0 dla pewnego
takiego, e
2
2
Funkcja Mzer a, b,
1. jeeli b a , to wykonaj:
ab
a. s
2
b. jeeli f s 0 , to podaj s jako wynik
c. jeeli f a f s 0 , topodaj Mzer a, s, jako wynik
w przeciwnym przypadku podaj Mzer s, b, jako wynik
a)
-20
-40
10
32
25
5
1
5
b)
Algorytm
1. dopki b a wykonuj
ab
2
b) jeeli f s 0 , to podaj s jako wynik i zakocz wykonywanie algorytmu
a)
39
40
c) jeeli f a f s 0 , to b s
w przeciwnym przypadku a s
2. podaj a b / 2 jako wynik
Komentarz
Podpunkt a
Aby obliczy liczb kolejnych rekurencyjnych wywoa funkcji Mzer dla kadej podanej
wartoci , naley ustali wartoci zmiennych z jakimi bdzie ona wywoywana w kolejnych
krokach. Funkcja zakoczy dziaanie w momencie, gdy b a .
Dla kadej dokadnoci startujemy od wywoania funkcji Mzer 0,128, , za kolejne
wywoania to:
Dla 32 mamy dwa wywoania:
Mzer 64,128,32
Mzer 64,96,32
Dla
1
mamy dziesi wywoa:
5
1
Mzer 64,128,
5
Mzer 64,80,
5
Mzer 72,80,
5
41
Podpunkt b
Aby uzupeni luki w przedstawionej nierekurencyjnej wersji funkcji Mzer, naley zauway
prost wasno: w kolejnych krokach zawsze ustalamy rodek aktualnego przedziau, tzn.
ab
s
, a nastpnie sprawdzamy czy miejsce zerowe funkcji ley na lewo od punktu s
2
(wtedy b s ), czy na prawo od punktu s(as).
Podpunkt a) sprowadza si do przeanalizowania algorytmu zaprezentowanego w treci
zadania na konkretnych danych i wyznaczenia liczby wywoa funkcji rekurencyjnej. Funkcja
Mzer opisuje podrcznikowy algorytm znajdowania miejsca zerowego funkcji cigej f
metod bisekcji. Zadaniem zaprezentowanej implementacji tego algorytmu jest podanie
przy zaoeniu, e
2
f a f b 0 (zauwamy, e cigo funkcji f w powizaniu z warunkiem f a f b 0
42
43
44
Wymagania oglne
Wymagania szczegowe
Schemat punktowania
Podpunkt
Czynno
a
b
Liczba
punktw
za
podpunkt
2
2
Liczba
punktw
za
zadanie
3
11
2
w ktrym rano zapas kostki granitowej jest mniejszy ni ten zuywany codziennie przez cay
zesp 20 pracownikw (90 m2). Wwczas poowa pracownikw zostaje oddelegowana
do pracy z kostk bazaltow (10*3,8 m2=38 m2), a poowa ukada nadal kostk granitow
(10*4,5m2=45 m2). Kiedy zapas kostki granitowej zostanie uzupeniony, wszyscy ponownie
ukadaj tylko kostk granitow. Powyszy opis odpowiada formule w arkuszu
kalkulacyjnym:
=JEELI(C6>=$A$1*$F$2;$A$1*$F$2;$A$1/2*$F$2),
ktra jest rwnie przedstawiona na poniszym rysunku.
Po pracy brukarzy sytuacja stanu kostki si zmienia. Od stanu porannego naley odj
liczb uoonych metrw kwadratowych. Bdzie to dla granitu formua: =C6-E6, a dla
bazaltu formua: =D6-F6.
Przeanalizujmy dostawy kostki. Uzupenianie zapasw nastpuje wieczorem, po pracy
brukarzy. Jeeli po pracy zapas kostki granitowej jest mniejszy ni 40 m2 to przyjedaj
3 samochody z dostaw, jeeli zapas wynosi od 40 m2 do 100 m2 wcznie przyjeda
1 samochd, jeeli zapas kostki jest wikszy ni 100 m2, wwczas nie ma dostawy. Dla
obliczenia wielkoci dostawy zastosujemy funkcj jeeli:
=JEELI(G6<40;3*$F$3;JEELI(G6<=100;1*$F$3;0))
Zapas kostki bazaltowej jest uzupeniany w kady poniedziaek i rod z uyciem jednego
samochodu, co moemy zapisa za pomoc funkcji jeeli i zagniedonej funkcji LUB:
=JEELI(LUB(B6=3;B6=1);28;0)
Jak bdzie wyglda stan kostki w nastpnym dniu roboczym rano? Pozostaje nam
uwzgldni wieczorne dostawy. Dla granitu bdzie to formua: =G6+I6, a dla bazaltu:
=H6+J6.
Wykonalimy w ten sposb ca symulacj dobowych dziaa firmy Bruker. Teraz wystarczy
wpisane formuy i funkcje skopiowa a do dnia 30.11.2013 roku.
Aby odpowiedzie na polecenie a), naley sprawdzi liczb dostaw bazaltu, czyli liczb
poniedziakw i rd w okresie od 1.03.2013 roku do 30.11.2013 roku, stosujc funkcj
LICZ.JEELI.
Polecenie b) sprawdza czy prawidowo zbudowalimy formu dotyczc pracy z granitem.
Do dnia 7.03.2013 stan kostki jest powyej 100 m2 i dopiero po pracy w tym dniu spada do
45
46
500
400
300
rano granit
rano baz
200
100
0
2013-03-01 2013-04-01 2013-05-01 2013-06-01 2013-07-01 2013-08-01 2013-09-01 2013-10-01 2013-11-01
Jeeli podsumujemy liczb uoonej kostki granitowej oraz uoonej kostki bazaltowej,
otrzymamy liczb metrw kwadratowych, ktre firma uoya do tego wanie dnia wcznie.
Okazuje si, e w dniu 19.11.2013 zostanie pokryta caa powierzchnia rynku starego miasta
i firma Bruker zakoczy prac.
Na kocu musimy wspomnie, e to zadanie niemal w caoci mona rwnie rozwiza,
piszc odpowiedni program. Jedyn problematyczn rzecz jest utworzenie wykresu, ktry
mona wykona w arkuszu kalkulacyjnym, zapisujc wczeniej potrzebne dane do plikw
tekstowych.
47
48
Wymagania oglne
Wymagania szczegowe
Schemat punktowania
Podpunkt
c
d
e
Czynno
Za podanie poprawnej liczby odpowiedzi "Tak" oraz
poprawnej liczby odpowiedzi "Nie" 1 punkt.
Za poprawny wykres 2 punkty, w tym:
poprawny dobr danych i typ wykresu 1 punkt,
czytelny opis wykresu 1 punkt.
Za podanie poprawnej liczby numerw telefonw dla
czterech grup 2 punkty.
Za podanie poprawnej liczby numerw telefonw dla
co najmniej dwch grup 1 punkt.
Za podanie poprawnego numeru telefonu 1 punkt.
Za podanie poprawnej sumy cyfr dla poprawnego
numeru 1 punkt.
Za podanie poprawnych trzech numerw 3 punkty,
po 1 punkcie za kady poprawny numer.
Za podanie poprawnej liczby 1 punkt.
Liczba
punktw
za
podpunkt
Liczba
punktw
za
zadanie
2
3
1
11
49
50
51
Podpunkt b
Aby zliczy liczb numerw telefonw zaczynajcych si od wskazanej cyfry, wykorzystamy
fakt, e w kolumnie D wydzielilimy pierwsze cyfry numerw telefonw. Aby uzyska liczb
numerw zaczynajcych si od 5, moemy uy formuy: =LICZ.JEELI(A2:A2001;5).
Aby unikn kilkukrotnego rcznego wpisywania formuy wg powyszego schematu,
moemy zastosowa adresowanie porednie i wskaza jako kryterium komrki, w ktrych
kolejno umiecimy liczby 5, 6, 7 i 8. Poniej zamieszczamy przykadowe rozwizanie
zapisane w komrkach A9..B12 drugiego arkusza.
Podpunkt c
Aby rozwiza podpunkt c, wystarczy zsumowa wartoci z kolumn DL w kadym wierszu,
wyznaczy najwiksz z tych sum i wyszuka numer odpowiadajcy tej sumie.
52
Podpunkt d
W podpunkcie d) zapiszemy przy pomocy formu nastpujcy algorytm wyznaczania dugoci
najduszego cigu malejcego, bdcego pocztkiem wskazanego cigu c1, c2,,ck:
Krok 1: Jeli c1c2 to r2 1
w przeciwnym przypadku r2 0
Krok 2: Powtarzaj dla i=3,4,,k:
Jeli (ci 1c i) oraz (ri 1=1) to ri 1
w przeciwnym przypadku ri 0
Krok 3: Zwr (1 + r2 + r3 + + rk )
W naszym przypadku warto k z powyszego algorytmu to 9, a pierwszy cig znajduje si
w komrkach D2, E2, , L2. Formuy wyznaczajce wartoci r2,,r9 w komrkach
N2,,U2 realizujce powyszy algorytm mog wyglda nastpujco:
unikalna formua w komrce N2:
=JEELI(D2>E2;1;0)
formua w komrce O2, ktr kopiujemy do P2,,U2:
=JEELI(N2=1;JEELI(E2>F2;1;0);0)
Nastpnie moemy:
skopiowa powysze formuy do kolejnych wierszy arkusza,
w kolumnie V kadego wiersza wyliczy warto jeden plus najwiksza z wartoci r2, r3,
, r9 (czyli maksimum wartoci z kolumn N, M,,U tego wiersza),
wybra najwiksz warto z kolumny V,
wyszuka numery telefonw z wierszy, w ktrych pojawia si ta najwiksza warto
w kolumnie V.
Podpunkt e
Po raz kolejny zastosujemy funkcj LICZ.JEELI, umiejtnie wykorzystujc te
adresowanie porednie. Jeli w komrce C2 arkusza z danymi wpiszemy formu
=LICZ.JEELI($A$2:$A$2001;A2), wwczas uzyskamy nie tylko liczb wystpie
pierwszego numeru (znajdujcego si w komrce A2) w bloku A2:A2001, ale po
skopiowaniu tej formuy do kolejnych komrek kolumny C wyznaczymy liczby wystpie
kolejnych numerw.
Podpunkty a) i e) zadania nie wymagaj wydzielania elementw (cyfr) numerw telefonw,
mona je wic zaliczy do klasycznych wicze z zakresu analizowania i filtrowania danych,
ktre bez wikszych trudnoci mona zrealizowa w wybranym arkuszu kalkulacyjnym.
W pozostaych punktach zadania uzyskanie wyniku zasadniczo wymaga dostpu do
poszczeglnych cyfr numerw telefonw. Co prawda wyniki punktu b) zale jedynie od
pierwszych cyfr a zatem moliwe jest rozwizanie w oparciu o porwnania caych numerw
(np. numery zaczynajce si od 5 s nie mniejsze ni 500000000 i nie wiksze ni
599999999), jednak w punktach c) i d) wyniki zale od wszystkich cyfr w numerach
telefonw. Dlatego rozwizanie z wykorzystaniem jzyka programowania wydaje si bardziej
naturalne. Zaprezentowalimy jednak rwnie rozwizanie w arkuszu kalkulacyjnym, aby
zademonstrowa, e stosujc odpowiednie formuy mona implementowa proste
algorytmy, gdzie komrki arkusza su do przechowywania wartoci zmiennych w kolejnych
etapach oblicze. Niemniej szczeglnie w podpunkcie d) (gdzie konieczne byo ustalanie
najduszego malejcego cigu pocztkowych cyfr numeru), nasze rozwizanie wymagao
niestandardowych i do nienaturalnych pomysw.
53
54
Id_produktu
p34
p87
p86
p20
Data_zakupu
2012-08-09
2012-08-07
2012-08-03
2012-01-05
Ilosc
9
12
26
2
Nazwa
Especial_Big
Toledo_Natural
Toledo_Red
Cena
24,99
23,99
23,99
Jednostka
m2
m2
m2
Id_kategoria
k1
k1
k1
Nazwa
korek_scienny
podklad_korkowy
granulat_korkowy
55
Wymagania oglne
Wymagania szczegowe
Schemat punktowania
Podpunkt
Czynno
Za podanie poprawnego zestawienia zawierajcego
informacje o liczbie zakupw w kadym miesicu
1 punkt.
Za posortowanie otrzymanego zestawienia ze wzgldu
na liczb zakupw 1 punkt.
Za podanie poprawnego zestawienia zawierajcego
nazwy kategorii i czn warto sprzedanego towaru dla
kadej kategorii 2 punkty.
Za podanie zestawienia zawierajcego poprawne
wartoci dla co najmniej 10 kategorii 1 punkt.
Za posortowanie otrzymanego zestawienia
alfabetycznie 1 punkt.
Za podanie poprawnej nazwy produktu 1 punkt.
Za podanie poprawnej liczby sprzedanego produktu
1 punkt.
Za poprawne zestawienie zawierajce czn liczb
sprzedanych produktw w kadej z podanych kategorii
3 punkty.
Za zestawienie zawierajce bdny jeden wiersz albo
jedn kolumn 1 punkt.
Liczba
punktw
za
podpunkt
Liczba
punktw
za
zadanie
3
10
56
57
58
Podpunkt b
Zanim bdziemy mogli sumowa wartoci sprzeday w obrbie kategorii produktw, musimy
wyznaczy warto kadej sprzeday, co wymaga dostpu do tabel Sprzedaz i Produkt.
W tym celu tworzymy pomocnicz kwerend, w ktrej korzystamy z powizania obu tabel
i tworzymy pole wyliczane, w ktrym warto Ilosc z kadej sprzeday mnoymy przez
warto Cena z tabeli Produkt:
Podpunkt c
Aby ustali ilo jednostek sprzeday kadego produktu, wystarczyoby pogrupowa tabel
Sprzedaz wg pola Id_produktu i wyznaczy sum wartoci pola Ilosc w kadej
grupie. Moglibymy te posortowa zestawienie wg wyliczonych sum.
Takie rozwizanie nie daje jednak dostpu do nazw produktw, nie pozwala te wydzieli
produktw z kategorii wyroby_korkowe. Dlatego do rozwizania punktu c) wykorzystamy
wszystkie trzy tabele wraz z czcymi je relacjami. Aby w wyniku uzyska tylko produkty
z kategorii wyroby_korkowe, zastosujemy filtrowanie wpisujc fraz wyroby_korkowe
w wierszu kryteriw dla nazwy kategorii. Przykadowy projekt kwerendy zaczamy poniej.
59
60
Podpunkt d
Chcielibymy uzyska zestawienie, w ktrego wierszach znajduj si nazwy kategorii,
w kolumnach nazwy produktw, a na przeciciach wierszy i kolumn wielkoci sprzeday
odpowiednich produktw. Zastosujemy w tym celu kwerend krzyow, ktrej funkcjonalno
jest podobna do tabel przestawnych w MS Excel. Poniej prezentujemy nasze rozwizanie dla
punktu d), w ktrym chcielibymy zwrci uwag na nastpujce elementy:
w wierszu o nazwie Krzyowe wskazujemy rol poszczeglnych pl w kwerendzie
krzyowej: nagwkw kolumn, nagwkw wierszy, wartoci uwzgldnianych
w obliczeniach,
w wierszach Kryteria kolumny Kategoria wpisane zostay kategorie, do ktrych
ograniczone miay by wyniki punktu d) zadania.
61
62
Podpunkt a
Aby rozwiza podpunkt a), dodamy do zestawienia kolumn Miesic, w ktrej wyznaczymy
miesic kadej sprzeday, korzystajc z funkcji wbudowanej (=MIESIC(C2)). Nastpnie
tworzymy i sortujemy tabel przestawn dla tabeli sprzedaz, grupujc dane wg miesicy
i sumujc liczb zakupw w kadym miesicu. Poniej prezentujemy projekt ukadu dla
tworzonej tabeli:
Podpunkty b d
Poniewa podpunkty b d zadania wymagaj powiza midzy poszczeglnymi tabelami,
sprbujemy zbudowa jedn tabel kumulujc wszystkie te powizania. W tym celu
tworzymy kopi tabeli sprzedaz w nowym arkuszu (B) i dodajemy do niej kolumny:
Produkt_nazwa, Id_kategorii, Cena, Kategoria_nazwa, Warto.
Poszczeglne pola uzupeniamy korzystajc z nastpujcych zalenoci:
63
Aby moliwe byo utworzenia opisanej powyej tabeli, potrzebna jest nam metoda na
wyszukiwanie w tabeli wierszy z ustalon wartoci pewnego pola i wybieranie z takich
wierszy wartoci innych pl. Wykorzystalimy do tego funkcj WYSZUKAJ.PIONOWO
o czterech parametrach:
pierwszy okrela wyszukiwan warto,
drugi definiuje obszar przeszukiwania (warto szukana jest w pierwszej kolumnie
obszaru),
trzeci parametr wskazuje, z ktrej kolumny obszaru naley pobra wynikow warto,
czwarty parametr okrela czy wyszukiwanie ma by dokadne czy te przedziaowe
(w naszym przypadku wpisujemy warto FASZ oznaczajc dokadne wyszukiwanie).
Dziaanie funkcji zilustrujemy na przykadzie. Zamy, e w kolumnie B znajduj si wartoci
Id_produktu z kolejnych wierszy tabeli sprzedaz. Aby w kolumnie C uzyska nazw
produktu, wpisujemy nastpujce parametry funkcji WYSZUKAJ.PIONOWO (w wierszu 2):
B2 jako wyszukiwan warto;
obszar zajmowany przez tabel produktw (w naszym przykadzie
produkt!$A$2:$E$100); stosujemy adresowanie bezporednie, aby obszar nie
zmienia si przy kopiowaniu;
liczb 2 jako trzeci parametr, gdy nazwy produktw znajduj si w drugiej kolumnie
tabeli produkt.
Poniej zaczamy ilustracj tego przykadu:
64
65
nazwisko
Pastuszak
Siudut
Konopka
imie
Joanna
Anna
Kamil
miejscowosc
Szczecin
Jaworzno
Tarnowskie Gory
liczba_osob
2
2
2
standard
S
S
S
cena
220
220
220
data_wyjazdu
2013-07-12
2013-07-11
2013-07-13
nr_dowodu
JAA932190
SIS395155
RMS452742
nr_pokoju
501
108
113
uslugi
2020
1010
0030
66
1130 oznacza, e go zjad jeden raz niadanie w hotelu (1*20 z), jeden raz skorzysta
z basenu (1*30 z) i przez 3 doby parkowa samochd na hotelowym parkingu (3*15 z) oraz
nie oddawa ubrania do czyszczenia. Gociowi do kosztu noclegu dopisuje si koszt
dodatkowych usug w wysokoci 95 z.
Uwaga: adna z usug nie bya zamawiana wicej ni 9 razy.
Korzystajc z danych zawartych w tych plikach oraz z dostpnych narzdzi informatycznych,
wykonaj ponisze polecenia. Kad odpowied umie w pliku wyniki.txt, poprzedzajc
j oznaczeniem odpowiedniego podpunktu od a) do e).
a) Podaj imi i nazwisko gocia, ktry skorzysta z najwikszej liczby noclegw podczas
jednorazowego pobytu w hotelu Panorama. Podaj liczb tych noclegw.
b) Podaj zestawienie (imi i nazwisko) osb z Krakowa goszczcych w hotelu Panorama,
ktrzy korzystali z parkingu.
c) Utwrz list miejscowoci, z ktrych co najmniej 15 rnych osb nocowao cho raz
w hotelu Panorama. Zestawienie posortuj alfabetycznie.
d) Podaj kwot uzyskan z tytuu wynajmu pokoi oraz kwot uzyskan z opat za korzystanie
przez goci z dodatkowych usug w okresie od 1.07.2013 do 31.08.2013.
e) Podaj numery pokoi o podwyszonym standardzie, z ktrych nigdy nie korzystali gocie
z Krakowa.
Do oceny oddajesz plik(i) o nazwie(ach) ,
tu wpisz nazw(y) pliku(w)
Wymagania oglne
Wymagania szczegowe
67
Schemat punktowania
Podpunkt
Czynno
Za poprawn odpowied 2 punkty,
w tym za:
imi i nazwisko 1 punkt.
liczb noclegw 1 punkt.
Za poprawn odpowied 2 punkty.
W przypadku powtrze 1 punkt.
Za poprawn odpowied 2 punkty,
w tym za:
podanie listy 1 punkt.
za prawidowe posortowanie 1 punkt.
Za poprawn odpowied 2 punkty,
w tym za:
kwot uzyskan z tytuu wynajmu pokoi 1 punkt.
kwot uzyskan z opat za korzystania przez goci
z dodatkowych usug 1 punkt.
Za poprawn odpowied 2 punkty.
W przypadku braku jednego numeru lub wystpienia
jednego numeru nieprawidowego 1 punkt.
Liczba
Liczba
punktw punktw
za
za
podpunkt zadanie
2
2
10
68
W Accessie import plikw z danymi jest prosty. Ambitni maturzyci mog utworzy baz
i zapytania w jzyku SQL:
-- utworzenie bazy danych hotel
create database hotel;
-- ustawienie bazy hotel jako domylnej
use hotel;
-- utworzenie tabeli noclegi
CREATE TABLE `noclegi` (
`id_noc` int NOT NULL,
`data_przyjazdu` date NOT NULL,
`data_wyjazdu` date NOT NULL,
`nr_dowodu` char(9) NOT NULL,
`nr_pokoju` int NOT NULL,
`uslugi` int(1) NOT NULL,
PRIMARY KEY (`id_noc`)
);
-- zaladowanie danych do tabeli noclegi
LOAD DATA INFILE
"C:\\Dane_hotel\\noclegi.csv" INTO TABLE `noclegi` FIELDS
TERMINATED BY ',' ENCLOSED BY '"' ESCAPED BY '\\' LINES
TERMINATED BY '\n' (id_noc,data_przyjazdu,data_wyjazdu,nr_dowodu,nr_pokoju,uslugi);
-- utworzenie tabeli klienci
CREATE TABLE `klienci` (
`nr_dowodu` char(9) NOT NULL,
`nazwisko` char(20) NOT NULL,
`imie`
char(20) NOT NULL,
`miejscowosc` char(20) NOT NULL,
PRIMARY KEY (`nr_dowodu`)
);
-- zaladowanie danych do tabeli klienci
LOAD DATA INFILE
"C:\\Dane_hotel\\klienci.csv" INTO TABLE `klienci` FIELDS
TERMINATED BY ',' ENCLOSED BY '"' ESCAPED BY '\\' LINES
TERMINATED BY '\n' (nr_dowodu,nazwisko,imie,miejscowosc);
-- utworzenie tabeli pokoje
CREATE TABLE `pokoje` (
`nr_pokoju` int(11) NOT NULL,
`liczba_osob` int(11) NOT NULL,
`standard` char(1) NOT NULL,
`cena`
int(11) NOT NULL,
PRIMARY KEY (`nr_pokoju`)
);
69
70
71
Wymagania oglne
Wymagania szczegowe
72
Liczba
punktw
za zadanie
9
73
74
75
Wymagania oglne
Wymagania szczegowe
76
Liczba
punktw
za zadanie
12
77
Jedyn dobr cech powyszego rozwizania jest jego prostota i to, e w ogle mamy
jakiekolwiek rozwizanie. Poza tym przedstawione rozwizanie ma same wady.
Po pierwsze musimy pamita o tym, eby arytmetyka jzyka programowania, ktrego
uywamy, umoliwiaa operowanie na liczbach pojawiajcych si w obliczeniach.
Zauwamy, e najwiksza liczba jaka mogaby si w obliczeniach dla opisanych danych
wynosi 1 000 000 * 9 999 = 9 999 000 000. W jzyku programowania C++ najwiksza
liczba typu int ze znakiem ma warto 2 147 483 647, a bez znaku 4 294 967 295. Tak jest,
gdy typ int jest 32-bitowy. Dla 16-bitowego typu int odpowiednie wielkoci s znaczco
mniejsze. Oczywicie mona by uy typw pozwalajcych na operowanie na duo wikszych
liczbach, ale za chwil okae si, e nie jest to konieczne.
Drug wad powyszego rozwizania jest to, e musimy wielokrotnie przeglda te same
elementu cigu, a co za tym idzie najlepiej byoby cay cig wczyta do tablicy. To
w przypadku najwikszego pliku wymaga tablicy o 1 000 000 elementw. W przypadku
jzyka programowania C++ i 32-bitowego typu int wymaga to 4 000 000 bajtw, czyli okoo
4 gigabajtw pamici. Nie jest to moe duo dla wspczesnych komputerw, ale co gdyby
dane liczyy nie milion, a miliard, bilion elementw?
Trzeci wad, chyba najistotniejsz, jest powolno zaproponowanego algorytmu.
Zastanwmy si, ile cznie dodawa wykonamy w kroku (*). Nietrudno zauway, e tych
dodawa jest tyle, ile wynosi czna suma dugoci wszystkich przedziaw. T wielko
atwo oszacowa z dou. Przedziaw o dugoci co najmniej n/3 jest co najmniej (n/3)2. A
zatem czna suma wszystkich przedziaw wynosi co najmniej (n/3)3. To dla n = 1 000 000
daje wicej ni 3*1016. Komputer wykonujcy 109 dodawa na sekund spdzaby na
rozwizywaniu naszego zadania wicej ni 3*107 sekund, a to jest wicej ni 8 tysicy
godzin. To jest troch za dugo jak na czas przeznaczony na rozwizywanie zada
maturalnych!
Jeden ze sposobw poszukiwania lepszych, szybszych algorytmw polega na przyjrzeniu si
rozwizaniu, ktre ju mamy w rku i zastanowieniu si, czy nie prowadzi ono do
wykonywania wielu zbdnych operacji. Tak jest wanie w tym przypadku. Zauwamy, e dla
kadych dwch blokw b(i,j-1) i b(i,j), rnicych si tylko jednym elementem aj, liczymy
niezalenie dwie sumy ai+ ai+1 + ... + aj-1 oraz ai+ ai+1 + ... + aj, a przecie, eby dosta
drug sum wystarczy do pierwszej doda tylko aj. Jaki zysk! Zamiast j-i+1 dodawa
wykonujemy tylko jedno. Ten pomys pozwala nam natychmiast zaproponowa nastpujcy
algorytm:
najdluzszy = 0; // dugo najduszego z dotychczas
//przejrzanych blokw trjkowych
for (i = 1; i <= n; i++){
//liczymy sumy elementw w blokach o pocztkach na pozycji i
//wartoci suma bdzie suma elementw ostatniego
//przetworzonego bloku; inicjalnie suma == 0
suma = 0;
for (j = i; j <= n; j++){
// obliczamy sum elementw w bloku b(i,j)
// suma jest rwna sumie elementw w bloku b(i,j-1)
// plus aj
suma = suma + aj; // (*)
78
79
Powysze spostrzeenie daje bardzo proste rozwizanie naszego zadania. Dla kadej
wartoci w = 0, 1, 2 poszukujemy pierwszej i ostatniej pozycji, dla ktrej wartoci sum s s
takie same. Najbardziej odlege pozycje wyznaczaj dugo najduszego bloku trjkowego.
Pozostaje jeszcze pytanie, czy zawsze taki blok istnieje. Osobom o zainteresowaniach
bardziej matematycznych proponujemy wykazanie, e w kadym cigu o dugoci co najmniej
3 taki blok musi istnie. Dla naszych potrzeb przyjmijmy, e blok dugoci 0 jest blokiem
trjkowym. Wwczas, jeli wynikiem dziaania naszego algorytmu jest 0, oznacza to, e
aden blok w danym cigu nie jest trjkowy.
Poniej przedstawiamy program napisany w jzyku C++, ktry konkretyzuje opisane
powyej idee.
#include <iostream>
#include <algorithm>
using namespace std;
int najdluzszy_blok(){
int poczatki = {0,-1,-1};
//poczatki[w] - pierwsza pozycja, dla ktrej suma s jest
//rwna w
// -1 oznacza, e takiej pozycjijeszcze nie
// znaleziono
int suma_mod_3 = 0;
int liczba_wczytanych = 0;
int element;
int najdluzszy;
while (cin>> element){
liczba_wczytanych++;
suma_mod_3 = (suma_mod_3 + element) % 3; //(*)
if (poczatki[suma_mod_3] == -1)
poczatki[suma_mod_3] = liczba_wczytanych;
else
najdluzszy = max(najdluzszy, liczba_wczytanych
poczatki[suma_mod_3])
}
return najdluzszy;
}
int main(){
cout << "Dl bloku: " << najdluzszy_blok() << endl;
return 0;
}
Na koniec zauwamy, e w tym algorytmie liczba dodawa (*) wynosi tylko n i na dodatek
nie musielimy najpierw wczyta caego cigu do tablicy.
80
81
w zakresie historii:
-
82
w zakresie matematyki:
-
w zakresie fizyki:
-
w zakresie geografii:
-
Przewodniczcy KRASP
prof. zw. dr hab. Wiesaw Bany