Poziom rozszerzony Formuła 2023

Grudzień 2024

Materiały do pobrania

1_2.py
def J(n):
     i = 1
     while n > 0:
         if n% 2 == 1:
             print(i)
         n = n // 2
         i += 1

print(J(75))
2.py
licznik = 0

def F(x, p):
    global licznik
    licznik += 1

    if x == 0:
        return 0
    else:
        c = x % p
        if c % 2 == 1:
            return F(x // p, p) + c
        else:
            return F(x // p, p) - c

# Do zadania 2_1:
print(F(125, 2))
print(licznik)

# Do zadania 2_2:
# for i in range(1, 100):
#     global p
#     print(F(i, 3))
#
# for i in range(1, 100):
#     global p
#     print(F(i, 4))

3_1.py
licznik = 0
liczby_wynik = []
with open("liczby.txt") as f:
    for line in f:
        x = int(line)
        i = 1

        while i * i < x:
            i += 1

        if i * i == x:
            licznik += 1
            liczby_wynik.append(line)


print(licznik, liczby_wynik[0])
3_2.py
def czy_pierwsza(n):
    if n < 2:
        return False

    for i in range(2, n):
        if n % i == 0:
            return False

    return True

with open("liczby.txt") as f:
    for line in f:
        line = int(line)
        licznik = 0
        for dzielnik in range(1, line + 1):
            if line % dzielnik == 0 and czy_pierwsza(dzielnik):
                licznik += 1

        if licznik >= 5:
                    print(line)

3_3.py
mniejsze = 0
wieksze = 0
rowne = 0
with open("liczby.txt") as f:
    for line in f:
        liczba_str = line.strip()
        liczba = int(liczba_str)

        cyfry = list(liczba_str)

        # print(f"Liczba: {cyfry}")
        # print(f"Najmniejsza: {int("".join(sorted(cyfry)))}")
        # print(f"Najwieksza: {int("".join(sorted(cyfry, reverse = True)))}")

        najmniejsza = int("".join(sorted(cyfry)))
        najwieksza = int("".join(sorted(cyfry, reverse = True)))

        wynik = najwieksza - najmniejsza
        if wynik == liczba:
            rowne += 1
            liczba_rowna = liczba
        elif wynik > liczba:
            wieksze += 1
        elif wynik < liczba:
            mniejsze += 1
    print(f"Równych: {rowne}, jest to {liczba_rowna}")
    print(f"Większych różnic: {wieksze}")
    print(f"Mniejszych różnic: {mniejsze}")
4_1.py
lista_pola = []
with open("prostokaty.txt") as f:
    for line in f:
        parametry_prostokata = "".join(list(line))
        h = int(parametry_prostokata.split()[0])
        s = int(parametry_prostokata.split()[1])

        pole_powierzchni = h * s

        lista_pola.append(pole_powierzchni)
    print(f"Najmniejsze pole: {min(lista_pola)}")
    print(f"Największe pole: {max(lista_pola)}")
4_2.py
lista_wysokosci = []
lista_szerokosci = []
with open("prostokaty.txt") as f:
    for line in f:
        parametry_prostokata = "".join(list(line))
        h = int(parametry_prostokata.split()[0])
        s = int(parametry_prostokata.split()[1])

        lista_wysokosci.append(h)
        lista_szerokosci.append(s)

    licznik_ciagu = 1
    najdluzszy_ciag = 1

    ostatnia_h = lista_wysokosci[0]
    ostatnia_s = lista_szerokosci[0]
    for i in range(0, len(lista_wysokosci) - 1):
        if lista_wysokosci[i] >= lista_wysokosci[i+1] and lista_szerokosci[i] >= lista_szerokosci[i+1]:
            licznik_ciagu += 1

            if licznik_ciagu > najdluzszy_ciag:
                najdluzszy_ciag = licznik_ciagu
                ostatnia_h = lista_wysokosci[i + 1]
                ostatnia_s = lista_szerokosci[i + 1]
        else:
            licznik_ciagu = 1


print(najdluzszy_ciag, ostatnia_h, ostatnia_s)


4_3.py
lista_wysokosci = []
lista_szerokosci = []
with open("prostokaty.txt") as f:
    for line in f:
        parametry_prostokata = "".join(list(line))
        h = int(parametry_prostokata.split()[0])
        s = int(parametry_prostokata.split()[1])

        lista_wysokosci.append(h)
        lista_szerokosci.append(s)


wynik_2 = 0
wynik_3 = 0
wynik_5 = 0

for i in range(len(lista_wysokosci)):
    h = lista_wysokosci[i]
    szerokosci = []

    for j in range(len(lista_wysokosci)):
        if lista_wysokosci[j] == h:
            szerokosci.append(lista_szerokosci[j])

    szerokosci.sort(reverse = True)

    if len(szerokosci) >= 2:
        wynik_2 = max(wynik_2, szerokosci[0] + szerokosci[1])

    if len(szerokosci) >= 3:
        wynik_3 = max(wynik_3, szerokosci[0] + szerokosci[1] + szerokosci[2])

    if len(szerokosci) >= 5:
        wynik_5 = max(wynik_5, szerokosci[0] + szerokosci[1] + szerokosci[2] + szerokosci[3] + szerokosci[4])

print(f"2 prostokąty: {wynik_2}")
print(f"3 prostokąty: {wynik_3}")
print(f"5 prostokątów: {wynik_5}")
8_5.sql
SELECT Wlasciciele.imie, Wlasciciele.nazwisko FROM Wlasciciele
INNER JOIN Samochody ON Wlasciciele.id_wlasciciela = Samochody.id_wlasciciela
WHERE Samochody.nr_rejestracyjny LIKE "SH*" AND Samochody.rok_produkcji = 2020 ORDER BY Wlasciciele.nazwisko;
1_1.txt
Liczba n    Zapis dwójkowy n    J(n)
19          10011               (1, 2, 5)
6           110                 (2, 3)
42          101010              (2, 4, 6)
75          1001011             (1, 2, 4, 7)
2_1.txt
x       p       F(x, p)     Liczba wywołań funkcji F
125     2       6           8
130     3       2           6
220     4       7           5
2_2.txt
p   x
3   96
4   97
5.txt
1. F
2. P
3. F
6.txt
a) 3123
b) 430
wyniki3.txt
3_1:
20 kwadratów
pierwszy: 4489

3_2:
2730
8190
2310
4620
7770
8610
4830
4290
6930
6630

3_3:
Równych: 1, jest to 6174
Większych różnic: 1052
Mniejszych różnic: 947
wyniki4.txt
4_1:
Najmniejsze pole: 10425
Największe pole: 1545605418

4_2:
najdłuższy ciąg:10
ostatnia para: 1001 627

4_3:
2 prostokąty: 79506
3 prostokąty: 118786
5 prostokątów: 180895
wyniki7.txt
7_1:
Max_Zrodla_Wiatrowe:			Dzień:	02/04/2024
			
Max_Zrodla_Fotowoltaiczne:		Dzień:	30/04/2024

7_2:
Godzina_w_dniu_kwietnia	Zaokrąglone
1						0
2						0
3						0
4						0
5						0.03
6						64.67
7						491.3
8						1723.63
9						3492.93
10						5164.23
11						6246.15
12						6623.02
13						6658.38
14						6489.51
15						6099.17
16						5410.74
17						4338.69
18						2796.16
19						1240.49
20						311.03
21						15.68
22						0
23						0
24						0

7_3:
Datą i godziną początku przedziału jest 2024-04-02 godz. 1:00, a datą I godziną końca przedziału jest 2024-04-02 godz. 16:00.

7_4:
179736 MWh
wyniki8.txt
8_1:
177

8_2:
Wymiana płynu chłodniczego 29 razy

marka
bmw
daewoo
honda
kia
lancia
mazda
nissan
saab
volkswagen

8_3:
Najwięcej zapłacił: 897

nr_rejestracyjny	usluga
SB 3799			wymiana sprzegla
SB 3799			wymiana amortyzatora tyl
SB 9213			felga stalowa do 16 cali
SB 9213			ozonowanie ukladu klimatyzacji i kabiny
SB 5822			wymiana oleju silnikowego z filtrem
SB 5822			wymiana paska rozrzadu

8_4:
Listopad: 150530
Grudzień: 105860