Matura 2017 (maj). Zadanie 1. Szyfrowanie

Matura 2017 (maj). Zadanie 1. Szyfrowanie

Dany jest algorytm szyfrujący tekst jawny s o następującej specyfikacji:

Dane:

d – długość tekstu do zaszyfrowania, d > 1
s[1..d] – tekst jawny, ciąg znaków o długości d
k – liczba całkowita dodatnia taka, że k < d
n – liczba całkowita dodatnia taka, że n < d

Wynik:

szyfr [1..d] – zaszyfrowany tekst s

Algorytm:

od j=1 do d
 szyfr[j] ← s[j]
 i ← 1
 dopóki i ≤ d – k
 szyfr[i] ↔ szyfr[i+k]
 i ← i+n

Operacja szyfr[a] ↔ szyfr[b] oznacza zamianę w ciągu szyfr znaku z pozycji a na znak z pozycji b – i na odwrót.

Zadanie 1.

Uzupełnij tabelę – wpisz zaszyfrowany tekst, który otrzymasz w wyniku wykonania algorytmu.

s d k n szyfr
ataknadranem 12 4 2 ntdkaaeranam
maturazinformatyki 18 3 5  uatmrnziafarmotyki
stokrotka 9 1 2 tskoorkta 

Rozwiązanie:

Kod w języku programowania c++:

#include <iostream>
#include <string.h>
using namespace std;
int main()
{
 char tekst[]="stokrotka";
 int d=strlen(tekst);
 cout << d << endl;
 char szyfr[d];
 int k=1, n=2;
 cout << "Tekst jawny: " << tekst << endl;
for (int j=0; j<d; j++)
 szyfr[j]=tekst[j];
int i=0;
 while(i<=d-k-1){
 swap(szyfr[i],szyfr[i+k]);
 i+=n;
 }
cout << "Tekst szyfowany: " ;
 for (int j=0; j<d; j++)
 cout << szyfr[j];
return 0;
}

Zadanie 2.

W kolumnie szyfr zapisano zaszyfrowany tekst s. Odszyfruj tekst i zapisz go w kolumnie s.

szyfr d k n s
eiindaezotinwezssyktpo 22 2 2  pieniadzetoniewszystko

Algorytm:

od j=1 do d
 szyfr[j] ← s[j]
 i ← d-n
 dopóki i > 0
 szyfr[i] ↔ szyfr[i-k]
 i ← i-n

Kod w języku programowania c++:

#include <iostream>
#include <string.h>
using namespace std;
int main()
{
 char tekst[]="eiindaezotinwezssyktpo";
 int d=strlen(tekst);
 cout << d << endl;
 char szyfr[d];
 int k=2, n=2;
 cout << "Tekst szyfowany: " << tekst << endl;
for (int j=0; j<d; j++)
 szyfr[j]=tekst[j];
int i=d-n;
 while(i>0){
 swap(szyfr[i],szyfr[i-k]);
 i-=n;
 }
cout << "Tekst jawny: " ;
 for (int j=0; j<d; j++)
 cout << szyfr[j];
return 0;
}

Zadanie 3.

Uzupełnij zapis algorytmu tak, aby w wyniku jego działania otrzymać odszyfrowany tekst s.

Uwaga: W zapisie możesz wykorzystać operacje dodawania, odejmowania, mnożenia, dzielenia, dzielenia całkowitego i brania reszty z dzielenia całkowitego, operację zamiany dwóch znaków ↔ oraz samodzielnie napisane funkcje.

Specyfikacja:

Dane:

d – długość zaszyfrowanego tekstu, d > 1
szyfr [1..d] – zaszyfrowany tekst o długości d
k – liczba całkowita dodatnia taka, że k < d
n – liczba całkowita dodatnia taka, że n < d

Wynik:

s [1..d] – tekst jawny

Algorytm:

od j=1 do d
s[j] ← szyfr[j]
i ← 1
dopóki i <= d-n-k
 i ← i+n
dopóki i >= 1
 s[i] ↔ s[i+k]
 i ← i-n

Matura 2013 (maj). Zadanie 6. Fundusze

W pliku historia.txt znajdują się wartości jednostek uczestnictwa różnych funduszy inwestycyjnych w kolejnych dniach roboczych 2008 roku. W każdym wierszu znajduje się 13 danych: data oraz 12 liczb rzeczywistych (zapisanych z dwoma miejscami po przecinku), które są cenami jednostek kolejnych funduszy (A, B, C, D, E, F, G, H, I, J, K, L) w danym dniu. Wszystkie dane rozdzielone są średnikami.

Przykład:
2008-01-02;50,90;51,62;53,12;58,66;58,96;59,26;48,15;48,17;48,19;50,23;50,23;50,23
2008-01-03;50,42;51,13;52,62;57,92;58,22;58,51;48,04;48,06;48,08;50,07;50,07;50,07

Wykorzystując dane zawarte w pliku oraz dostępne narzędzia informatyczne wykonaj poniższe polecenia. Odpowiedzi zapisz w pliku zadanie6.txt, a odpowiedź do każdego podpunktu poprzedź literą oznaczającą ten podpunkt.

Rozwiązanie:
Zaczynamy od pobrania danych do arkusza kalkulacyjnego. Plik gotowy do rozwiązywania zadań jest gotowy do pobrania tu.

a) Dla każdego z funduszy podaj średnią cenę jednostki (z całego roku). Wynik zaokrąglij do dwóch miejsc po przecinku.

Do obliczenia średniej wartości ceny jednostki i zaokrąglenia do dwóch miejsc po przecinku wykonujemy za pomocą funkcji:
=ZAOKR(ŚREDNIA(B2:B252);2)

b) Podaj liczbę dni, w których ceny jednostek wszystkich funduszy były wyższe niż 33 zł. Takimi dniami były między innymi dni przedstawione w powyższym przykładzie.

 

c) Podaj cenę, która w całym roku wystąpiła najczęściej, i napisz, ile razy wystąpiła.

d) Dla każdego z dwunastu funduszy podaj najniższą i najwyższą cenę jednostki, jaką odnotowano w 2008 roku. Sporządź wykres liniowy ilustrujący otrzymane zestawienie. Pamiętaj o prawidłowym i czytelnym opisie wykresu.

Matura 2015 (maj). Zadanie 4. Fabryka samochodów

Fabryka samochodów GAZELA produkuje od 2005 roku samochody osobowe czterech marek: Dama, Granta, Dorkas, Lodera. W pierwszym kwartale 2005 roku wyprodukowano 237 samochodów marki Dama, 198 – Granta, 207 – Dorkas oraz 312 – Lodera.

W każdym kolejnym kwartale, w stosunku do poprzedniego kwartału, aż do końca 2009 roku, produkcja samochodów wzrastała. Dla samochodów marki Dama – o 2%, dla samochodów marki Granta – o 2,7%, dla samochodów marki Dorkas – o 3% i dla samochodów marki Lodera – o 2%.

W wyniku kryzysu w 2010 roku wzrost produkcji został zatrzymany i przez cały 2010 rok liczba wyprodukowanych samochodów była stała – utrzymała się dla wszystkich marek na poziomie produkcji z ostatniego kwartału 2009 roku. W roku 2011 i 2012 produkcja co kwartał malała odpowiednio dla samochodu marki Dama – o 1%, samochodu marki Granta – o 1,2%, samochodu marki Dorkas – o 1,9% i samochodu marki Lodera – 2,5%.

Uwaga: Wszystkie wyliczane wartości produkcji zaokrąglaj w dół do liczb całkowitych.

Wykorzystując dostępne narzędzia informatyczne, na podstawie informacji zapisanych wyżej, wykonaj polecenia. Każdą odpowiedź, z wyjątkiem wykresu w zadaniu 4.5., zapisz w pliku wynik4.txt i poprzedź ją numerem oznaczającym zadanie.

Rozwiązanie:

Należy utworzyć skoroszyt wg szablonu na rysunku. Dane do pierwszego kwartału 2005 uzupełniamy z treści zadania, zaś kolejne kwartały obliczamy ze wzoru:

=ZAOKR.DÓŁ(B4+(B4*C9);0)

gdzie:

B4 – wartość z pierwszego (z poprzedniego) kwartału;
C9 – wartość procentowa wzrostu lub spadku produkcji samochodów;

Zadanie 4.1. (2 pkt)

Ile samochodów poszczególnych marek wyprodukowano w ostatnim kwartale 2011 roku?

Rozwiązanie:

Uzupełniamy tabelę wg lat, aż do roku 2012. Spisujemy wartości z ostatniego kwartału roku 2011. Wartości przepisujemy do pliku tekstowego.

Zadanie 4.2. (2 pkt) 

Zakładając, że spadek produkcji samochodów w następnych latach będzie wyglądał tak samo jak w roku 2011 i 2012, wskaż markę samochodu, którego kwartalna produkcja najwcześniej będzie mniejsza od produkcji tej marki z pierwszego kwartału 2005 roku. Podaj markę samochodu, liczbę wyprodukowanych samochodów oraz kwartał i rok, kiedy to nastąpi.

Rozwiązanie:

Do rozwiązania zastosowałem formatowanie warunkowe zmieniające kolor komórek z warunkiem mniejsze niż wartość komórki w pierwszym kwartale 2005 roku.

Zadanie 4.3. (2 pkt)

Podaj – dla każdej marki – w ilu kwartałach, w okresie od początku 2005 roku do końca 2012 roku, produkcja przekraczała 300 sztuk?

Rozwiązanie:

Należy utworzyć tabelę pomocniczą zawierająca nazwy modeli samochodów oraz dla każdej utworzyć formułę:

=LICZ.JEŻELI(B4:AG4;”>300″)

Zakres komórek jest podawany od początku roku 2005 do końca roku 2012. Powtórz tę instrukcję dla wszystkich aut.

Zadanie 4.4. (1 pkt)

Podaj, ile samochodów łącznie wyprodukowano w fabryce GAZELA do końca 2010 roku.

Rozwiązanie:

To zadanie jest bardzo nietypowe, należy wykorzystać funkcję

=SUMA(zakres)

Wynik działania funkcji na rysunku.

Zadanie 4.5. (3 pkt)

Utwórz wykres kolumnowy 3D prezentujący wielkość produkcji każdej marki samochodu w kolejnych latach od roku 2005 do roku 2012. Zadbaj o czytelność wykresu.

Rozwiązanie:

Utwórz nową tabelę z kolumnami sumującymi produkcję każdego auta w każdym kolejnym roku wg tabelki poniżej.

 

Matura 2013 (maj). Zadanie 5 – Znajomi i ich zainteresowania

Baltazar spisuje informacje o swoich znajomych i ich hobby, które przechowuje w plikach. W każdym pliku informacje zapisane w wierszach są rozdzielone pojedynczymi znakami odstępu.

Plik Osoby.txt zawiera 200 wierszy z informacjami o znajomych: Id_osoba, Imię, Nazwisko.
Przykład:
o001 Jan Nadolicki
o002 Anna Augustowska

Plik Hobby.txt zawiera 50 wierszy z informacjami o rodzajach hobby: Id_hobby, Hobby.
Przykład:
h001 numizmatyka
h002 historia

Plik Ma_Hobby.txt przechowuje w 400 wierszach informacje o tym, czym interesują się znajomi Baltazara: Id, Id_osoba, Id_hobby.
Przykład:
1 o152 h005
2 o065 h043

Wykorzystując dane zawarte w tych plikach oraz dostępne narzędzia informatyczne, wykonaj poniższe polecenia. Odpowiedzi zapisz w pliku zadanie5.txt, a odpowiedź do każdego podpunktu poprzedź literą oznaczającą ten podpunkt.

Narzędziem jakim się posłużymy będzie MS Access. W pierwszym kroku musimy pobrać dane z plików tekstowych do programu. Wykonujemy to realizując poniższe kroki:

Krok 1:
Pobieramy dane z pliku tekstowego wybierając Dane zewnętrzne → Plik tekstowy.

Krok 2:
Przechodzimy kreator Pobieranie danych zewnętrznych. Przykładowe pobieranie danych znajduje się poniżej.

Krok 3:
Tworzymy relację wg rysunku poniżej. Tak przygotowaną bazę możemy używać do rozwiązania zadań, do pobrania tu.

  1. Podaj wszystkie rodzaje hobby rozpoczynające się od litery „k”.

Rozwiązanie:
Wybieramy wstążkę tworzenie → projekt kwerendy. Wybieramy tabelę hobby i dodajemy do nowej kwerendy. Następnie dodajemy pole hobby z tabeli Hobby do kwerendy. Kryteria jakie musimy dodać to jest wpisanie like „k*” i ostatnim krokiem jest uruchom kwerendę.
Zapisujemy kwerendę jako A.
Wynik kwerendy należy skopiować do pliku tekstowego jako rozwiązanie.

  1. Podaj, ile osób interesuje się majsterkowaniem.

Rozwiązanie:
Wybieramy wstążkę tworzenie → projekt kwerendy. Wybieramy tabelę hobby, Ma_Hobby, Osoby, które mamy dodać do kwerendy. Z wybranych tabel dodajemy pola: Hobby z tabeli Hobby oraz Id_osoba z tabeli Osoby.
Zapisujemy kwerendę pod nazwą B. Wyniku działania kwerendy mam 7 rekordów, ale jeśli chcielibyśmy teraz policzyć nasze rekordy to jest ich 8, ponieważ jeden rekord się powtarza.
Tworzymy kwerendę B – wynik, aby policzyć ile jest rekordów wyświetlanych w kwerendzie B. Robimy to wybierając ikonę Sumy. Dodajemy pole ID_osoby z kwerendy B do nowej kwerendy i podsumowanie wybieramy Policz i dajemy uruchom. Na koniec zapisujemy zmiany w kwerendzie.

  1. Utwórz zestawienie imion i nazwisk tych osób, których zainteresowaniem jest programowanie. Zestawienie posortuj niemalejąco, alfabetycznie według nazwisk.

Rozwiązanie:
Wybieramy wstążkę tworzenie → projekt kwerendy. Do kwerendy dodajemy table: hobby, Ma_Hobby, Osoby. Z tabel dodajemy pola: Imię i nazwisko z tabli Osoby i Hobby z tabeli Hobby. W polu nazwisko ustawiamy sortuj na rosnąco. Odznaczamy Pole hobby, aby nie wyświetlało się w wynikach, zaś do tego pola dodajemy kryterium „programowanie”. Uruchamiamy kwerendę. Zapisujemy kwerendę, jako C.

  1. Utwórz zestawienie imion i nazwisk tych osób, które mają więcej niż 4 rodzaje hobby. Zestawienie posortuj niemalejąco, alfabetycznie według nazwisk, a tam, gdzie nazwiska się powtarzają – według imion.

Rozwiązanie:
Wybieramy wstążkę tworzenie → projekt kwerendy. Wybieramy pola imię i nazwisko z tabeli Osoby i pole Hobby z tabeli Hobby. Ustawiamy sortowanie Nazwisk i imion na rosnąco, Włączamy sumę, w hobby podsumowanie ustawiamy na policz, odznaczamy pokaż i kryteria ustawiamy na większe od 4. Zapisujemy kwerendę, jako D.

  1. Podaj wszystkie rodzaje hobby, którymi interesuje się największa liczba osób.

Rozwiązanie:
Wybieramy wstążkę tworzenie → projekt kwerendy. Wybieramy tabele: hobby, Ma_Hobby, Osoby. Dodajemy pola na Hobby oraz Id_osoba z tabeli Osoby. Odznaczamy pokaż dla pola Id_osoba oraz dodajemy Sortowanie ustawiając na malejąco. Włączamy Sumę, w podsumowaniu dajemy policz dla pola Id_osoba. Wartość zwróć ustawiamy na 5 i dajemy uruchom. Kwerendę zapisujemy, jako podpunkt E.

Uwaga:
Wszystkie wyniki kwerend zapisz w pliku tekstowym zadanie5.txt.

 

Gotowe rozwiązanie 

 

 

Matura 2012 (maj). Zadanie 2. Diamenty

Matura 2012 (maj). Zadanie 2. Diamenty

W sejfie jubilera znajduje się n diamentów wycenionych odpowiednio na d1, …, dn złotych, przy czym żadne dwa diamenty nie są w tej samej cenie. Jubiler nie ujawnia cen diamentów, co oznacza, że tylko on zna ceny d1, …, dn.
Dla zainteresowanych klientów jubiler wykonuje operację porównania cen diamentów: dla wskazanych numerów i oraz j podaje, czy diament o numerze i ma wyższą cenę, niż diament o numerze j.
Przyjmijmy następujący sposób oznaczania wyniku operacji porównania cen:
większe( i , j ) = prawda, gdy d1 > d
większe( i , j ) = fałsz, gdy d1 < d

  1. Poniżej prezentujemy pewien algorytm korzystający z operacji porównania cen:
 Krok 1. j ← 0
 Krok 2. i ← 1
 Krok 3. dopóki i < n
   jeżeli większe(i, i i + 1) to j ← j + 1
   i ← i + 1
 Krok 4. wypisz j

Uzupełnij poniższą tabelę, podając wyniki działania powyższego algorytmu po jego wykonaniu dla wskazanych danych.

n d1, …, dn Wynik algorytmu
4 5 2 1 6 2
4 2 5 1 2 1
4 1 2 3 4 0
4 4 3 2 1 3

Komentarz:
Musimy podać wartość zmiennej j. Zmienna j jest zwiększona o jeden pod warunkiem, że funkcja większe(i,j) zwróci prawdą (true). Prawda jest wtedy, kiedy element i tablicy jest większy od elementów i+1, czyli element sprawdzany jest większe od elementu następnego.

Algorytm

#include <iostream>
#define N 4
using namespace std;
int d[N] = {1,2,3,4};
bool wieksze(int i, int j) {
  if (d[i]>d[j]) return true;
  else return false;
}
int main()
{
  int j=0;
  int i=0;
  while (i<N-1) {
    if (wieksze(i,i+1)) j++;
    i++;
  }
  cout << j << endl;
  return 0;
}

 

  1. Zapisz algorytm (w postaci listy kroków, schematu blokowego lub w wybranym języku programowania), który dla podanego ciągu cen diamentów znajduje numer diamentu o najwyższej cenie. W algorytmie zastosuj operację większe porównania cen dwóch diamentów.

Specyfikacja:

Dane:

n – liczba naturalna większa od zera oznaczająca liczbę diamentów
d1, …, d– ceny diamentów o kolejnych numerach 1, 2, …, n; ceny dwóch różnych diamentów są różne

Wynik:

i – numer diamentu o najwyższej cenie

Algorytm:

#include <iostream>
#define N 4
using namespace std;
int d[N] = {2,5,1,2};
bool wieksze(int i, int maks) {
  if (d[i]>d[maks]) return true;
  else return false;
}
int main()
{
  int maks=0;
  int i=0;
  while (i<N-1) {
  if (wieksze(i,maks)) maks = i;
  i++;
 }
  cout << maks << endl;
  return 0;
}

 

Matura 2009 (maj). Zadanie 2. Ceny w systemach dziesiętnym i dwójkowym

Matura 2009 (maj). Zadanie 2. Ceny w systemach dziesiętnym i dwójkowym

W Dwójkolandii tradycyjnie ceny w sklepach są podawane w systemie dwójkowym. Ze względu na rosnący ruch turystów z innych krajów, gdzie wciąż obowiązuje system dziesiętny, rząd Dwójkolandii postanowił, że handlowcy mają obowiązek umieszczania cen w obu systemach.

  1. Pomóż właścicielowi baru szybkiej obsługi uzupełnić obowiązujący cennik:
artykuł cena w systemie dwójkowym cena w systemie dziesiętnym
kakao 111,11 7,75
herbata czarna 100,01  4,25
herbata owocowa  100,10 4,50
capuccino 101,00 5,00
kawa espresso 110,00 6,00

Wyjaśnienie:

  1. Rozdzielamy liczbę na część całkowitą i część ułamokową.
  2. Najpierw zajmiemy się częścią całkowitą, na przykładzie ceny:
    kakao
    111(2) = 1 * 20 + 1 * 21 + 1 * 22 =  1 + 2 + 4 = 7(10)
    kawa espresso:
    110(2) = 0 * 20 + 1 * 21 + 1 * 22 = 0 + 2 + 4 = 6(10)

Zamiana części całkowitej odbywa się za pomocą algorytmu:

Zamiana ceny w systemie binarnym na cenę w systemie dziesiętnym.
System dwójkowy jest najprostszym systemem pozycyjnym, w którym podstawa p = 2. System posiada dwie cyfry 0 i 1, zatem można je kodować bezpośrednio jednym bitem informacji. Wartość dziesiętna liczby zapisanej w naturalnym kodzie binarnym dana jest wzorem:
bn-1bn-2…b2b1b0 = bn-12n-1 + bn-22n-2 + … + b222 + b121 + b020
gdzie :
b – bit, cyfra dwójkowa 0 lub 1
n – liczba bitów w zapisie liczby
101011(2) = 25 + 23 + 21 + 20 = 32 + 8 + 2 + 1 = 43(10)

Zamiana ceny w systemie dziesiętnym na cenę w systemie binarnym.
W jednym kroku algorytmu wykonujemy czynności wyznaczenie reszty (%) z dzielenia przez dwa przekształcanej liczby oraz wykonujemy dzielenie całkowite przez dwa. Tę czynność wykonujemy tak długo, aż liczba dziesiętna będzie większa od 0 (zera).

  1. Kolejnym krokiem jest zamiana części ułamkowej, na przykładzie ceny:

kakao
0,11(2) = 1 * 2-1 + 1 * 2-2 = 1/2 + 1/4 = 0,5 + 0,25 = 0,75(10)

Zamiana ceny w systemie dziesiętnym na cenę w systemie binarnym w części ułamkowej.
Wykonujemy w taki sam sposób części całkowitej, z zapisem po przecinku.

Zamiana ceny w systemie binarnym na cenę w systemie dziesiętnym w części ułamkowej.
Obliczamy wartość części ułamkowej w następujący sposób:
0,111011(2) = 1 * 2-1 + 1 * 2-2 + 0 * 2-3 + 1 * 2-4 + 1 * 2-5 + 1 * 2-6 =  1/2 + 1/4 + 1/8 + 1/32 + 1/64 = 32/64 + 16/64 + 8/64 + 2/64 + 1/64 = 59/64
lub
0,111011(2) = 1 * 2-1 + 1 * 2-2 + 0 * 2-3 + 1 * 2-4 + 1 * 2-5 + 1 * 2-6 = 0,5 + 0,25 + 0,125 + 0,03125 + 0,015325 = 0,921875
Liczymy od pierwszej liczby po przecinku, mnożymy 1 lub 0 z 2 podniesioną do potęgi minusowej o odpowiedniej wartości, w zależności od pozycji danej liczby. pozycję liczymy od przecinka zaczynając od -1, -2, itd.

Liczbę należy zaokrąglić do dwóch miejsc po przecinku.

  1. Ostatnim krokiem jest połączenie dwóch części w całość (części całkowitej i ułamkowej).
  1. Zaproponuj handlowcom metodę przeliczania cen z systemu dwójkowego na dziesiętny i zapisz ją w postaci algorytmu w wybranej przez siebie notacji (lista kroków, schemat blokowy lub język programowania, który wybrałeś/aś na egzamin). Uwzględnij, że ceny są podawane z dokładnością do dwóch miejsc po przecinku. 

Specyfikacja:

Dane: s – napis złożony z ciągu zer i jedynek, przecinka oraz dwóch cyfr po przecinku (każda cyfra to 0 lub 1). Napis przed przecinkiem nie jest pusty.

Wynik: w – liczba oznaczająca wartość w systemie dziesiętnym liczby podanej w systemie dwójkowym w postaci napisu s.

#include <iostream>
#include <conio.h>
#include <math.h>
#include <iomanip>

using namespace std;

int main()
{
 string cenaB, cenaB2="", cenaB3="";
 int cenaD=0;
 cout << "Podaj cene w systemie binarnym: ";
 cin >> cenaB;
 // pobieranie czesci calosci
 int a=0;
 while (cenaB[a] != ','){
 cenaB2 += cenaB[a];
 a++;
 }
 // pobieranie częsci ulamku
 a++; // przesuniecie o przecinek
 for (a;a<cenaB.length();a++) cenaB3 += cenaB[a];

// zamiana na dziesietna liczbe
 int podstawa = 2;
 int tmp = 1;
 int x;
 for (int i=cenaB2.length()-1; i>=0; i--) {
 x = cenaB2[i]-48;
 cenaD += x*tmp;
 tmp *= podstawa;
 }

// zamiana ulamku
 double wynik=0, s=1;
 for (int z=0; z<cenaB3.length(); z++){
 if (cenaB3[z]=='1') {
 wynik = wynik + pow(2,-s);
 }
 s++;
 }

// wyswietlenie wyniku
 cout << "Cena w systemie dziesietnym: ";
 cout << fixed;
 cout << setprecision(2);
 cout << wynik+cenaD << endl;
 return 0;
}