<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.universitas.ro/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=AndorGiulia</id>
	<title>Bitnami MediaWiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.universitas.ro/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=AndorGiulia"/>
	<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/wiki/Special:Contributions/AndorGiulia"/>
	<updated>2026-05-01T02:39:57Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.42.1</generator>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=1748_-_Cursa&amp;diff=5394</id>
		<title>1748 - Cursa</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=1748_-_Cursa&amp;diff=5394"/>
		<updated>2023-04-29T11:31:40Z</updated>

		<summary type="html">&lt;p&gt;AndorGiulia: Pagină nouă: Sursă: [https://www.pbinfo.ro/probleme/1748/cursa] == Cerință == Costică este alergător la un maraton. El parcurge un traseu sub forma unei matrice cu &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039; linii şi &amp;#039;&amp;#039;&amp;#039;m&amp;#039;&amp;#039;&amp;#039; coloane linie cu linie şi pe fiecare linie, de la stânga la dreapta. Matricea conţine numere naturale. Dacă Costică întâlneşte un număr prim, el este penalizat, fiind trimis pe linia şi coloana anterioară, iar dacă acesta întâlneşte un număr perfect, poate avansa pe linia şi coloa...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Sursă: [https://www.pbinfo.ro/probleme/1748/cursa]&lt;br /&gt;
== Cerință ==&lt;br /&gt;
Costică este alergător la un maraton. El parcurge un traseu sub forma unei matrice cu &#039;&#039;&#039;n&#039;&#039;&#039; linii şi &#039;&#039;&#039;m&#039;&#039;&#039; coloane linie cu linie şi pe fiecare linie, de la stânga la dreapta. Matricea conţine numere naturale.&lt;br /&gt;
Dacă Costică întâlneşte un număr prim, el este penalizat, fiind trimis pe linia şi coloana anterioară, iar dacă acesta întâlneşte un număr perfect, poate avansa pe linia şi coloana următoare. Dacă mişcarea pe linie şi pe coloană depăşeşte limitele matricei, atunci se va efectua numai mişcarea care nu trece de aceste limite sau nu se va efectua nici o mişcare.&lt;br /&gt;
Afişaţi timpul &#039;&#039;&#039;t&#039;&#039;&#039; în care parcurge Costică traseul, ştiind că deplasarea dintr-un element al matricei în oricare altul durează o secundă, iar fiecare penalizare sau avansare durează o secundă.&lt;br /&gt;
Un număr este perfect dacă suma cifrelor lui este un număr prim.&lt;br /&gt;
Dacă un număr este şi prim şi perfect, atunci el va fi considerat prim.&lt;br /&gt;
După penalizare sau avansare, numerele prime sau perfecte îşi pierd proprietățile.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Programul citește de la tastatură numerele &#039;&#039;&#039;n&#039;&#039;&#039; şi &#039;&#039;&#039;m&#039;&#039;&#039;, iar apoi &#039;&#039;&#039;&#039;n*m&#039;&#039;&#039; numere naturale, separate prin spații.&lt;br /&gt;
== Date de ieșire == &lt;br /&gt;
Dacă datele sunt introduse corect, pe ecran se va afișa: &amp;quot;Datele sunt corecte.&amp;quot;. Programul va afișa pe ecran numărul &#039;&#039;&#039;t&#039;&#039;&#039;, reprezentând timpul în care Costică parcurge traseul. În caz contrar, se va afișa pe ecran: &amp;quot;Datele nu sunt comform restricțiilor impuse.&amp;quot;.&lt;br /&gt;
== Restricții și precizări ==&lt;br /&gt;
* &#039;&#039;&#039;1 ≤ n,m ≤ 500&#039;&#039;&#039;&lt;br /&gt;
* cele n numere citite vor fi mai mici decât &#039;&#039;&#039;1.000.000&#039;&#039;&#039;&lt;br /&gt;
== Exemple ==&lt;br /&gt;
=== Exemplu 1 ===&lt;br /&gt;
; Date de intrare&lt;br /&gt;
: 4 5&lt;br /&gt;
: 6 9 3 2 1&lt;br /&gt;
: 8 3 12 4 0&lt;br /&gt;
: 1 1 34 8 7&lt;br /&gt;
: 5 3 5 9 8&lt;br /&gt;
; Date de ieșire&lt;br /&gt;
: 28 &lt;br /&gt;
==== Explicatie ====&lt;br /&gt;
&#039;&#039;&#039;2 3 5 7&#039;&#039;&#039; sunt numere prime, iar &#039;&#039;&#039;2 3 5 7 12 34&#039;&#039;&#039; sunt numere perfecte.&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
def citire_matrice():&lt;br /&gt;
    try:&lt;br /&gt;
        n = int(input(&amp;quot;Introduceti numarul de linii: &amp;quot;))&lt;br /&gt;
        m = int(input(&amp;quot;Introduceti numarul de coloane: &amp;quot;))&lt;br /&gt;
        if 2 &amp;lt;= n &amp;lt;= 500 and 2 &amp;lt;= m &amp;lt;= 500:&lt;br /&gt;
            print(&amp;quot;Datele sunt corecte.&amp;quot;)&lt;br /&gt;
        else:&lt;br /&gt;
            print(&amp;quot;Datele nu sunt conform restrictiilor impuse.&amp;quot;)&lt;br /&gt;
            exit()&lt;br /&gt;
    except ValueError:&lt;br /&gt;
        print(&amp;quot;Trebuie introduse doar numere intregi.&amp;quot;)&lt;br /&gt;
        exit()&lt;br /&gt;
&lt;br /&gt;
    matrice = []&lt;br /&gt;
    for linie in range(n):&lt;br /&gt;
        matrice.append([])&lt;br /&gt;
        for coloana in range(m):&lt;br /&gt;
            for i in range(3):&lt;br /&gt;
                try:&lt;br /&gt;
                    valoare = int(input(f&amp;quot;Introduceti un numar pentru linia {linie+1}, coloana {coloana+1}: &amp;quot;))&lt;br /&gt;
                    if 0 &amp;lt;= valoare &amp;lt;= 10**6:&lt;br /&gt;
                        print(&amp;quot;Datele sunt corecte.&amp;quot;)&lt;br /&gt;
                        matrice[linie].append(valoare)&lt;br /&gt;
                        break&lt;br /&gt;
                    else:&lt;br /&gt;
                        print(&amp;quot;Datele nu sunt conform restrictiilor impuse.&amp;quot;)&lt;br /&gt;
                except ValueError:&lt;br /&gt;
                    print(&amp;quot;Trebuie introduse doar numere intregi.&amp;quot;)&lt;br /&gt;
            else:&lt;br /&gt;
                print(&amp;quot;Prea multe incercari esuate.&amp;quot;)&lt;br /&gt;
                exit()&lt;br /&gt;
&lt;br /&gt;
    return matrice&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def este_prim(numar):&lt;br /&gt;
    if numar &amp;lt; 2:&lt;br /&gt;
        return False&lt;br /&gt;
    for i in range(2, int(numar**0.5)+1):&lt;br /&gt;
        if numar % i == 0:&lt;br /&gt;
            return False&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def este_perfect(numar):&lt;br /&gt;
    suma_cifre = sum(int(cifra) for cifra in str(numar))&lt;br /&gt;
    return este_prim(suma_cifre)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def Cursa(matrice):&lt;br /&gt;
    n = len(matrice)&lt;br /&gt;
    m = len(matrice[0])&lt;br /&gt;
    timp = 0&lt;br /&gt;
    linie = 0&lt;br /&gt;
    coloana = 0&lt;br /&gt;
    while True:&lt;br /&gt;
        if linie &amp;lt; 0 or linie &amp;gt;= n or coloana &amp;lt; 0 or coloana &amp;gt;= m:&lt;br /&gt;
            break&lt;br /&gt;
        valoare = matrice[linie][coloana]&lt;br /&gt;
        if este_prim(valoare) or (este_perfect(valoare) and este_prim(sum(int(cifra) for cifra in str(valoare)))):  # adăugare verificare pentru suma cifrelor&lt;br /&gt;
            timp += 1&lt;br /&gt;
            if linie == 0 and coloana == 0:&lt;br /&gt;
                break&lt;br /&gt;
            else:&lt;br /&gt;
                linie, coloana = linie - 1, coloana - 1&lt;br /&gt;
                if linie &amp;lt; 0 or coloana &amp;lt; 0:  # adăugare verificare pentru depășirea matricei&lt;br /&gt;
                    break&lt;br /&gt;
                valoare = matrice[linie][coloana]&lt;br /&gt;
                este_prim(valoare)&lt;br /&gt;
                este_perfect(valoare)&lt;br /&gt;
        else:&lt;br /&gt;
            timp += 1&lt;br /&gt;
            if este_perfect(valoare):&lt;br /&gt;
                linie, coloana = linie + 1, coloana + 1&lt;br /&gt;
                if linie &amp;gt;= n or coloana &amp;gt;= m:  # adăugare verificare pentru depășirea matricei&lt;br /&gt;
                    break&lt;br /&gt;
                valoare = matrice[linie][coloana]&lt;br /&gt;
                este_prim(valoare)&lt;br /&gt;
                este_perfect(valoare)&lt;br /&gt;
            else:&lt;br /&gt;
                coloana += 1&lt;br /&gt;
    return timp&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if _name_ == &amp;quot;_main_&amp;quot;:&lt;br /&gt;
    matrice = citire_matrice()&lt;br /&gt;
    t = Cursa(matrice)&lt;br /&gt;
    print(f&amp;quot;Costica a parcurs traseul in {t} secunde.&amp;quot;)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
== Explicatie ==&lt;br /&gt;
Acest cod începe prin definirea a trei funcții: citire_matrice(), este_prim(numar) și este_perfect(numar), urmate de funcția Cursa(matrice) care este apelată în if _name_ == &amp;quot;_main_&amp;quot;:.&lt;br /&gt;
&lt;br /&gt;
 Funcția citire_matrice() citeste numarul de linii și coloane ale matricei de la tastatură, verifică dacă acestea respectă condițiile impuse și apoi citeste elementele matricei de la tastatură. Pentru fiecare element introdus, se verifică dacă îndeplinește condițiile impuse și se reia citirea de la tastatură până când se introduce un număr valid. Matricea este stocată într-o listă de liste și este returnată la sfârșitul funcției.&lt;br /&gt;
 &lt;br /&gt;
 Funcția este_prim(numar) primește un număr întreg și verifică dacă este prim sau nu. Verificarea se face prin împărțirea numărului la toate numerele întregi de la 2 la rădăcina pătrată a numărului. Dacă numărul se divide fără rest la unul dintre aceste numere, atunci nu este prim.&lt;br /&gt;
&lt;br /&gt;
 Funcția este_perfect(numar) primește un număr întreg și verifică dacă suma cifrelor sale este un număr prim. În interiorul funcției, mai întâi se calculează suma cifrelor numărului, apoi se verifică dacă aceasta este primă, folosind funcția este_prim(numar).&lt;br /&gt;
&lt;br /&gt;
 Funcția Cursa(matrice) primește o matrice și calculează timpul necesar pentru a parcurge traseul descris în enunțul problemei. Se începe de la primul element al primei linii și se deplasează în sus și în stânga, la fiecare pas verificându-se dacă elementul curent îndeplinește condițiile impuse. Dacă da, se incrementează timpul și se deplasează în sus și în stânga, altfel se incrementează timpul și se deplasează în dreapta. Se continuă acest proces până când se ajunge la primul element al primei linii sau se depășește limita matricei. Timpul total este returnat la sfârșitul funcției.&lt;br /&gt;
&lt;br /&gt;
 În blocul if _name_ == &amp;quot;_main_&amp;quot;:, se citește matricea de la tastatură, se calculează timpul necesar pentru a parcurge traseul folosind funcția Cursa(matrice) și se afișează rezultatul.&lt;/div&gt;</summary>
		<author><name>AndorGiulia</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=0231_-_Exista&amp;diff=5393</id>
		<title>0231 - Exista</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=0231_-_Exista&amp;diff=5393"/>
		<updated>2023-04-29T11:27:09Z</updated>

		<summary type="html">&lt;p&gt;AndorGiulia: Pagină nouă: Sursă: [https://www.pbinfo.ro/probleme/231/exista] == Cerință == Scrieţi un program care citeşte un tablou bidimensional cu &amp;#039;&amp;#039;&amp;#039;m&amp;#039;&amp;#039;&amp;#039; linii şi &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039; coloane şi un număr &amp;#039;&amp;#039;&amp;#039;k&amp;#039;&amp;#039;&amp;#039; şi determină suma indicilor coloanelor care conţin valoarea &amp;#039;&amp;#039;&amp;#039;k&amp;#039;&amp;#039;&amp;#039;. == Date de intrare == Fişierul de intrare &amp;#039;&amp;#039;&amp;#039;exista.in&amp;#039;&amp;#039;&amp;#039; conţine pe prima linie numerele &amp;#039;&amp;#039;&amp;#039;k, m&amp;#039;&amp;#039;&amp;#039; şi &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039;, iar pe următoarele &amp;#039;&amp;#039;&amp;#039;m&amp;#039;&amp;#039;&amp;#039; linii câte &amp;#039;&amp;#039;&amp;#039;nv numere naturale separate prin spaţii, reprezentând elemente...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Sursă: [https://www.pbinfo.ro/probleme/231/exista]&lt;br /&gt;
== Cerință ==&lt;br /&gt;
Scrieţi un program care citeşte un tablou bidimensional cu &#039;&#039;&#039;m&#039;&#039;&#039; linii şi &#039;&#039;&#039;n&#039;&#039;&#039; coloane şi un număr &#039;&#039;&#039;k&#039;&#039;&#039; şi determină suma indicilor coloanelor care conţin valoarea &#039;&#039;&#039;k&#039;&#039;&#039;.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Fişierul de intrare &#039;&#039;&#039;exista.in&#039;&#039;&#039; conţine pe prima linie numerele &#039;&#039;&#039;k, m&#039;&#039;&#039; şi &#039;&#039;&#039;n&#039;&#039;&#039;, iar pe următoarele &#039;&#039;&#039;m&#039;&#039;&#039; linii câte &#039;&#039;&#039;nv numere naturale separate prin spaţii, reprezentând elementele tabloului.&lt;br /&gt;
== Date de ieșire == &lt;br /&gt;
Dacă datele sunt introduse corect, pe ecran se va afișa: &amp;quot;Datele sunt corecte.&amp;quot;. Fişierul de ieşire &#039;&#039;&#039;exista.out&#039;&#039;&#039; va conţine pe prima linie suma cerută. Dacă nu există în matrice valoarea &#039;&#039;&#039;k&#039;&#039;&#039;, se va afişa mesajul &#039;&#039;&#039;NU EXISTA&#039;&#039;&#039;. În caz contrar, se va afișa pe ecran: &amp;quot;Datele nu sunt comform restricțiilor impuse.&amp;quot;.&lt;br /&gt;
== Restricții și precizări ==&lt;br /&gt;
* &#039;&#039;&#039;2≤m,n≤10&#039;&#039;&#039;;&lt;br /&gt;
* valoarea lui &#039;&#039;&#039;k&#039;&#039;&#039; şi elementele matricei sunt numere întregi cu cel mult &#039;&#039;&#039;4&#039;&#039;&#039; cifre;&lt;br /&gt;
* liniile sunt numerotate de la &#039;&#039;&#039;1&#039;&#039;&#039; la &#039;&#039;&#039;m&#039;&#039;&#039;, iar coloanele de la &#039;&#039;&#039;1&#039;&#039;&#039; la &#039;&#039;&#039;n&#039;&#039;&#039;.&lt;br /&gt;
== Exemple ==&lt;br /&gt;
=== Exemplu 1 ===&lt;br /&gt;
; &#039;&#039;&#039;exista.in&#039;&#039;&#039;&lt;br /&gt;
: 3 5 4&lt;br /&gt;
: 2 4 5 -8&lt;br /&gt;
: 1 3 7 9&lt;br /&gt;
:  -2 3 10&lt;br /&gt;
: 5 4 2 37&lt;br /&gt;
: 6 7 3 13&lt;br /&gt;
; &#039;&#039;&#039;exista.in&#039;&#039;&#039;&lt;br /&gt;
: 5&lt;br /&gt;
==== Explicatie ====&lt;br /&gt;
Coloana &#039;&#039;&#039;2&#039;&#039;&#039; şi coloana &#039;&#039;&#039;3&#039;&#039;&#039; conţin valoarea &#039;&#039;&#039;3&#039;&#039;&#039;, iar suma lor este &#039;&#039;&#039;5&#039;&#039;&#039;.&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
def citire_matrice():&lt;br /&gt;
    # Deschide fișierul de intrare și citește k, m și n&lt;br /&gt;
    with open(&amp;quot;exista.in&amp;quot;, &amp;quot;r&amp;quot;) as fin:&lt;br /&gt;
        line = fin.readline().split()&lt;br /&gt;
        if len(line) != 3:&lt;br /&gt;
            print(&amp;quot;Datele nu sunt conform restrictiilor impuse.&amp;quot;)&lt;br /&gt;
            exit()&lt;br /&gt;
        k = float(line[0])&lt;br /&gt;
        m, n = map(int, line[1:])&lt;br /&gt;
        if not (2 &amp;lt;= m &amp;lt;= 10 and 2 &amp;lt;= n &amp;lt;= 10):&lt;br /&gt;
            print(&amp;quot;Datele nu sunt conform restrictiilor impuse.&amp;quot;)&lt;br /&gt;
            exit()&lt;br /&gt;
        matrice = []&lt;br /&gt;
        # Citește matricea din fișierul de intrare&lt;br /&gt;
        for i in range(m):&lt;br /&gt;
            row = list(map(float, fin.readline().split()))&lt;br /&gt;
            # Verifică dacă elementele matricei sunt conform cerințelor&lt;br /&gt;
            if not all(isinstance(x, float) for x in row):&lt;br /&gt;
                print(&amp;quot;Datele nu sunt conform restrictiilor impuse.&amp;quot;)&lt;br /&gt;
                exit()&lt;br /&gt;
            matrice.append(row)&lt;br /&gt;
        return k, m, n, matrice&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def calculeaza_suma(k, m, n, matrice):&lt;br /&gt;
    suma = 0.0&lt;br /&gt;
    coloane_cu_k = []&lt;br /&gt;
    for j in range(n):&lt;br /&gt;
        coloana_j = [matrice[i][j] for i in range(m)]&lt;br /&gt;
        if k in coloana_j:&lt;br /&gt;
            suma += j + 1&lt;br /&gt;
            coloane_cu_k.append(j + 1)&lt;br /&gt;
    if not coloane_cu_k:&lt;br /&gt;
        print(&amp;quot;NU EXISTA&amp;quot;)&lt;br /&gt;
        exit()&lt;br /&gt;
    return suma&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if _name_ == &amp;quot;_main_&amp;quot;:&lt;br /&gt;
    k, m, n, matrice = citire_matrice()&lt;br /&gt;
    suma = calculeaza_suma(k, m, n, matrice)&lt;br /&gt;
    with open(&amp;quot;exista.out&amp;quot;, &amp;quot;w&amp;quot;) as fout:&lt;br /&gt;
        fout.write(str(suma) + &amp;quot;\n&amp;quot;)&lt;br /&gt;
    print(&amp;quot;Suma indicilor coloanelor care contin valoarea k este:&amp;quot;, suma)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
== Explicatie ==&lt;br /&gt;
 Acest cod rezolvă problema de a calcula suma indicilor coloanelor care conțin o anumită valoare k într-o matrice bidimensională dată.&lt;br /&gt;
&lt;br /&gt;
 Funcția citire_matrice deschide fișierul de intrare exista.in și citește valoarea k, dimensiunile matricei (m și n), și matricea în sine. Dacă datele de intrare nu respectă condițiile impuse (de exemplu, dimensiunile matricei sunt în afara intervalului [2,10]), se afișează un mesaj de eroare și programul se încheie cu exit(). Funcția returnează k, m, n și matricea.&lt;br /&gt;
&lt;br /&gt;
 Funcția calculeaza_suma primește k, m, n și matricea, și calculează suma indicilor coloanelor care conțin valoarea k. Pentru fiecare coloană, extrage toate elementele acelei coloane și verifică dacă k se află printre acele elemente. Dacă da, adaugă indicele coloanei (indexul începe de la 1, nu de la 0) la lista coloane_cu_k și adaugă indicele la variabila suma. Dacă nu există nicio coloană care să conțină valoarea k, afișează mesajul &amp;quot;NU EXISTA&amp;quot; și programul se încheie cu exit(). Funcția returnează suma.&lt;br /&gt;
&lt;br /&gt;
 În blocul principal, se apelează funcțiile citire_matrice și calculeaza_suma pentru a obține suma și se scrie aceasta în fișierul de ieșire exista.out. Se afișează, de asemenea, valoarea sumei în consolă.&lt;/div&gt;</summary>
		<author><name>AndorGiulia</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=3389_-_Colturi_DR&amp;diff=5392</id>
		<title>3389 - Colturi DR</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=3389_-_Colturi_DR&amp;diff=5392"/>
		<updated>2023-04-29T11:20:48Z</updated>

		<summary type="html">&lt;p&gt;AndorGiulia: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Sursă: [https://www.pbinfo.ro/probleme/3389/colturi-dr]&lt;br /&gt;
== Cerință ==&lt;br /&gt;
Se dă o matrice cu &#039;&#039;&#039;n&#039;&#039;&#039; linii și &#039;&#039;&#039;m&#039;&#039;&#039; coloane cu valori de &#039;&#039;&#039;0&#039;&#039;&#039; și &#039;&#039;&#039;1&#039;&#039;&#039;. Numim &#039;&#039;&#039;dreptunghi de extrem&#039;&#039;&#039; un dreptunghi ale cărui vârfuri au valori egale. Determinați numărul acestor dreptunghiuri, aria dreptunghiului de arie maximă și câte dreptunghiuri au aceeași valoare a vârfurilor ca și dreptunghiul de arie maximă.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Fișierul de intrare &#039;&#039;&#039;colturi_dr.in&#039;&#039;&#039; conține pe prima linie numărul &#039;&#039;&#039;n&#039;&#039;&#039; de linii, numărul &#039;&#039;&#039;m&#039;&#039;&#039; de coloane, iar pe următoarele linii se află cele &#039;&#039;&#039;n * m&#039;&#039;&#039; numere naturale.&lt;br /&gt;
== Date de ieșire == &lt;br /&gt;
Dacă datele sunt introduse corect, pe ecran se va afișa: &amp;quot;Datele sunt corecte.&amp;quot;. Fișierul de ieșire &#039;&#039;&#039;colturi_dr.out&#039;&#039;&#039; va conține pe prima linie numerele &#039;&#039;&#039;nr, A si cnt&#039;&#039;&#039; reprezentând cele trei numere specificate în cerință. În caz contrar, se va afișa pe ecran: &amp;quot;Datele nu sunt comform restricțiilor impuse.&amp;quot;.&lt;br /&gt;
== Restricții și precizări ==&lt;br /&gt;
* &#039;&#039;&#039;1 ≤ n, m ≤ 100&#039;&#039;&#039;&lt;br /&gt;
* numărul de dreptunghiuri de extrem cu vârfuri de &#039;&#039;&#039;1&#039;&#039;&#039; este diferit de numărul de dreptunghiuri de extrem cu vârfuri de &#039;&#039;&#039;0&#039;&#039;&#039;.&lt;br /&gt;
* un &#039;&#039;&#039;dreptunghi de extrem&#039;&#039;&#039; are cel puțin două linii și două coloane&lt;br /&gt;
== Exemple ==&lt;br /&gt;
=== Exemplu 1 ===&lt;br /&gt;
; &#039;&#039;&#039;colturi_dr.in&#039;&#039;&#039;&lt;br /&gt;
: 5 5&lt;br /&gt;
: 1  1  1  1  0&lt;br /&gt;
: 0  1  1  0  1&lt;br /&gt;
: 0  1  0  0  1&lt;br /&gt;
: 1  0  1  0  1&lt;br /&gt;
; &#039;&#039;&#039;colturi_dr.out&#039;&#039;&#039;&lt;br /&gt;
: 11 25 9&lt;br /&gt;
==== Explicatie ====&lt;br /&gt;
Sunt &#039;&#039;&#039;9&#039;&#039;&#039; dreptunghiuri de extrem a cărui vârfuri sunt &#039;&#039;&#039;1&#039;&#039;&#039;, respectiv &#039;&#039;&#039;2&#039;&#039;&#039; ale cărui vârfuri sunt &#039;&#039;&#039;0&#039;&#039;&#039;. Dreptunghiul de extrem de arie maximă are colțul stânga sus la &#039;&#039;&#039;(0,0)&#039;&#039;&#039; și colțul dreapta jos la &#039;&#039;&#039;(5,5)&#039;&#039;&#039;.&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
def citire_matrice():&lt;br /&gt;
    # Deschide fișierul de intrare și citește n, m și p&lt;br /&gt;
    with open(&amp;quot;colturi_dr.in&amp;quot;, &amp;quot;r&amp;quot;) as fin:&lt;br /&gt;
        line = fin.readline().split()&lt;br /&gt;
        if len(line) != 2:&lt;br /&gt;
            print(&amp;quot;Datele nu sunt conform restrictiilor impuse.&amp;quot;)&lt;br /&gt;
            exit()&lt;br /&gt;
        n, m = map(int, line)&lt;br /&gt;
        if not (1 &amp;lt;= n &amp;lt;= 100 and 1 &amp;lt;= m &amp;lt;= 100):&lt;br /&gt;
            print(&amp;quot;Datele nu sunt conform restrictiilor impuse.&amp;quot;)&lt;br /&gt;
            exit()&lt;br /&gt;
        matrice = []&lt;br /&gt;
        # Citește matricea din fișierul de intrare&lt;br /&gt;
        for i in range(n):&lt;br /&gt;
            row = list(map(int, fin.readline().split()))&lt;br /&gt;
            # Verifică dacă elementele matricei sunt conform cerințelor&lt;br /&gt;
            if not all(x in [0, 1] for x in row):&lt;br /&gt;
                print(&amp;quot;Datele nu sunt conform restrictiilor impuse.&amp;quot;)&lt;br /&gt;
                exit()&lt;br /&gt;
            matrice.append(row)&lt;br /&gt;
        return n, m, matrice&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def colturi_dr(n, m, matrice):&lt;br /&gt;
    nr = 0  # Numărul dreptunghiurilor de extrem&lt;br /&gt;
    max_area = 0  # Aria maximă a dreptunghiului de extrem&lt;br /&gt;
    max_cnt = 0  # Numărul dreptunghiurilor cu aceeași arie maximă&lt;br /&gt;
    for i in range(n - 1):&lt;br /&gt;
        for j in range(m - 1):&lt;br /&gt;
            if matrice[i][j] == matrice[i][j + 1] == matrice[i + 1][j] == matrice[i + 1][j + 1]:&lt;br /&gt;
                nr += 1&lt;br /&gt;
                area = (i + 2) * (j + 2)&lt;br /&gt;
                if area &amp;gt; max_area:&lt;br /&gt;
                    max_area = area&lt;br /&gt;
                    max_cnt = 1&lt;br /&gt;
                elif area == max_area:&lt;br /&gt;
                    max_cnt += 1&lt;br /&gt;
    return nr, max_area, max_cnt&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if _name_ == &amp;quot;_main_&amp;quot;:&lt;br /&gt;
    n, m, matrice = citire_matrice()&lt;br /&gt;
    nr, max_area, cnt = colturi_dr(n, m, matrice)&lt;br /&gt;
    with open(&amp;quot;colturi_dr.out&amp;quot;, &amp;quot;w&amp;quot;) as fout:&lt;br /&gt;
        fout.write(str(nr) + &amp;quot; &amp;quot; + str(max_area) + &amp;quot; &amp;quot; + str(cnt) + &amp;quot;\n&amp;quot;)&lt;br /&gt;
    print(&amp;quot;Numărul de dreptunghiuri de extrem este:&amp;quot;, nr)&lt;br /&gt;
    print(&amp;quot;Aria maximă a unui dreptunghi de extrem este:&amp;quot;, max_area)&lt;br /&gt;
    print(&amp;quot;Numărul de dreptunghiuri cu aceeași arie maximă este:&amp;quot;, cnt)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
== Explicatie ==&lt;br /&gt;
 Acest cod implementează o funcție numită citire_matrice() care citește datele de intrare dintr-un fișier colturi_dr.in. Datele de intrare conțin trei valori: n și m, reprezentând dimensiunile unei matrici de dimensiune nxm, și o matrice binară cu n linii și m coloane. Matricea este formată din 0-uri și 1-uri, și reprezintă un tip special de matrice numit &amp;quot;matrice de extrem&amp;quot; (dreptunghiurile de extrem), care conține doar dreptunghiuri cu colțurile de aceeași valoare.&lt;br /&gt;
&lt;br /&gt;
 Funcția citire_matrice() validează datele de intrare și returnează o tuplă formată din n, m și matricea citită.&lt;br /&gt;
&lt;br /&gt;
 Funcția colturi_dr() primește dimensiunile matricei și matricea în sine și calculează numărul de dreptunghiuri de extrem, aria maximă a unui dreptunghi de extrem și numărul de dreptunghiuri cu aceeași arie maximă.&lt;br /&gt;
&lt;br /&gt;
 În final, programul scrie datele de ieșire în fișierul colturi_dr.out și le afișează pe ecran.&lt;/div&gt;</summary>
		<author><name>AndorGiulia</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=3389_-_Colturi_DR&amp;diff=5391</id>
		<title>3389 - Colturi DR</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=3389_-_Colturi_DR&amp;diff=5391"/>
		<updated>2023-04-29T11:20:11Z</updated>

		<summary type="html">&lt;p&gt;AndorGiulia: Pagină nouă: Sursă: [pbinfo.ro/probleme/3389/colturi-dr] == Cerință == Se dă o matrice cu &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039; linii și &amp;#039;&amp;#039;&amp;#039;m&amp;#039;&amp;#039;&amp;#039; coloane cu valori de &amp;#039;&amp;#039;&amp;#039;0&amp;#039;&amp;#039;&amp;#039; și &amp;#039;&amp;#039;&amp;#039;1&amp;#039;&amp;#039;&amp;#039;. Numim &amp;#039;&amp;#039;&amp;#039;dreptunghi de extrem&amp;#039;&amp;#039;&amp;#039; un dreptunghi ale cărui vârfuri au valori egale. Determinați numărul acestor dreptunghiuri, aria dreptunghiului de arie maximă și câte dreptunghiuri au aceeași valoare a vârfurilor ca și dreptunghiul de arie maximă. == Date de intrare == Fișierul de intrare &amp;#039;&amp;#039;&amp;#039;colturi_dr.in&amp;#039;&amp;#039;&amp;#039; conține...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Sursă: [pbinfo.ro/probleme/3389/colturi-dr]&lt;br /&gt;
== Cerință ==&lt;br /&gt;
Se dă o matrice cu &#039;&#039;&#039;n&#039;&#039;&#039; linii și &#039;&#039;&#039;m&#039;&#039;&#039; coloane cu valori de &#039;&#039;&#039;0&#039;&#039;&#039; și &#039;&#039;&#039;1&#039;&#039;&#039;. Numim &#039;&#039;&#039;dreptunghi de extrem&#039;&#039;&#039; un dreptunghi ale cărui vârfuri au valori egale. Determinați numărul acestor dreptunghiuri, aria dreptunghiului de arie maximă și câte dreptunghiuri au aceeași valoare a vârfurilor ca și dreptunghiul de arie maximă.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Fișierul de intrare &#039;&#039;&#039;colturi_dr.in&#039;&#039;&#039; conține pe prima linie numărul &#039;&#039;&#039;n&#039;&#039;&#039; de linii, numărul &#039;&#039;&#039;m&#039;&#039;&#039; de coloane, iar pe următoarele linii se află cele &#039;&#039;&#039;n * m&#039;&#039;&#039; numere naturale.&lt;br /&gt;
== Date de ieșire == &lt;br /&gt;
Dacă datele sunt introduse corect, pe ecran se va afișa: &amp;quot;Datele sunt corecte.&amp;quot;. Fișierul de ieșire &#039;&#039;&#039;colturi_dr.out&#039;&#039;&#039; va conține pe prima linie numerele &#039;&#039;&#039;nr, A si cnt&#039;&#039;&#039; reprezentând cele trei numere specificate în cerință. În caz contrar, se va afișa pe ecran: &amp;quot;Datele nu sunt comform restricțiilor impuse.&amp;quot;.&lt;br /&gt;
== Restricții și precizări ==&lt;br /&gt;
* &#039;&#039;&#039;1 ≤ n, m ≤ 100&#039;&#039;&#039;&lt;br /&gt;
* numărul de dreptunghiuri de extrem cu vârfuri de &#039;&#039;&#039;1&#039;&#039;&#039; este diferit de numărul de dreptunghiuri de extrem cu vârfuri de &#039;&#039;&#039;0&#039;&#039;&#039;.&lt;br /&gt;
* un &#039;&#039;&#039;dreptunghi de extrem&#039;&#039;&#039; are cel puțin două linii și două coloane&lt;br /&gt;
== Exemple ==&lt;br /&gt;
=== Exemplu 1 ===&lt;br /&gt;
; &#039;&#039;&#039;colturi_dr.in&#039;&#039;&#039;&lt;br /&gt;
: 5 5&lt;br /&gt;
: 1  1  1  1  0&lt;br /&gt;
: 0  1  1  0  1&lt;br /&gt;
: 0  1  0  0  1&lt;br /&gt;
: 1  0  1  0  1&lt;br /&gt;
; &#039;&#039;&#039;colturi_dr.out&#039;&#039;&#039;&lt;br /&gt;
: 11 25 9&lt;br /&gt;
==== Explicatie ====&lt;br /&gt;
Sunt &#039;&#039;&#039;9&#039;&#039;&#039; dreptunghiuri de extrem a cărui vârfuri sunt &#039;&#039;&#039;1&#039;&#039;&#039;, respectiv &#039;&#039;&#039;2&#039;&#039;&#039; ale cărui vârfuri sunt &#039;&#039;&#039;0&#039;&#039;&#039;. Dreptunghiul de extrem de arie maximă are colțul stânga sus la &#039;&#039;&#039;(0,0)&#039;&#039;&#039; și colțul dreapta jos la &#039;&#039;&#039;(5,5)&#039;&#039;&#039;.&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
def citire_matrice():&lt;br /&gt;
    # Deschide fișierul de intrare și citește n, m și p&lt;br /&gt;
    with open(&amp;quot;colturi_dr.in&amp;quot;, &amp;quot;r&amp;quot;) as fin:&lt;br /&gt;
        line = fin.readline().split()&lt;br /&gt;
        if len(line) != 2:&lt;br /&gt;
            print(&amp;quot;Datele nu sunt conform restrictiilor impuse.&amp;quot;)&lt;br /&gt;
            exit()&lt;br /&gt;
        n, m = map(int, line)&lt;br /&gt;
        if not (1 &amp;lt;= n &amp;lt;= 100 and 1 &amp;lt;= m &amp;lt;= 100):&lt;br /&gt;
            print(&amp;quot;Datele nu sunt conform restrictiilor impuse.&amp;quot;)&lt;br /&gt;
            exit()&lt;br /&gt;
        matrice = []&lt;br /&gt;
        # Citește matricea din fișierul de intrare&lt;br /&gt;
        for i in range(n):&lt;br /&gt;
            row = list(map(int, fin.readline().split()))&lt;br /&gt;
            # Verifică dacă elementele matricei sunt conform cerințelor&lt;br /&gt;
            if not all(x in [0, 1] for x in row):&lt;br /&gt;
                print(&amp;quot;Datele nu sunt conform restrictiilor impuse.&amp;quot;)&lt;br /&gt;
                exit()&lt;br /&gt;
            matrice.append(row)&lt;br /&gt;
        return n, m, matrice&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def colturi_dr(n, m, matrice):&lt;br /&gt;
    nr = 0  # Numărul dreptunghiurilor de extrem&lt;br /&gt;
    max_area = 0  # Aria maximă a dreptunghiului de extrem&lt;br /&gt;
    max_cnt = 0  # Numărul dreptunghiurilor cu aceeași arie maximă&lt;br /&gt;
    for i in range(n - 1):&lt;br /&gt;
        for j in range(m - 1):&lt;br /&gt;
            if matrice[i][j] == matrice[i][j + 1] == matrice[i + 1][j] == matrice[i + 1][j + 1]:&lt;br /&gt;
                nr += 1&lt;br /&gt;
                area = (i + 2) * (j + 2)&lt;br /&gt;
                if area &amp;gt; max_area:&lt;br /&gt;
                    max_area = area&lt;br /&gt;
                    max_cnt = 1&lt;br /&gt;
                elif area == max_area:&lt;br /&gt;
                    max_cnt += 1&lt;br /&gt;
    return nr, max_area, max_cnt&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if _name_ == &amp;quot;_main_&amp;quot;:&lt;br /&gt;
    n, m, matrice = citire_matrice()&lt;br /&gt;
    nr, max_area, cnt = colturi_dr(n, m, matrice)&lt;br /&gt;
    with open(&amp;quot;colturi_dr.out&amp;quot;, &amp;quot;w&amp;quot;) as fout:&lt;br /&gt;
        fout.write(str(nr) + &amp;quot; &amp;quot; + str(max_area) + &amp;quot; &amp;quot; + str(cnt) + &amp;quot;\n&amp;quot;)&lt;br /&gt;
    print(&amp;quot;Numărul de dreptunghiuri de extrem este:&amp;quot;, nr)&lt;br /&gt;
    print(&amp;quot;Aria maximă a unui dreptunghi de extrem este:&amp;quot;, max_area)&lt;br /&gt;
    print(&amp;quot;Numărul de dreptunghiuri cu aceeași arie maximă este:&amp;quot;, cnt)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
== Explicatie ==&lt;br /&gt;
 Acest cod implementează o funcție numită citire_matrice() care citește datele de intrare dintr-un fișier colturi_dr.in. Datele de intrare conțin trei valori: n și m, reprezentând dimensiunile unei matrici de dimensiune nxm, și o matrice binară cu n linii și m coloane. Matricea este formată din 0-uri și 1-uri, și reprezintă un tip special de matrice numit &amp;quot;matrice de extrem&amp;quot; (dreptunghiurile de extrem), care conține doar dreptunghiuri cu colțurile de aceeași valoare.&lt;br /&gt;
&lt;br /&gt;
 Funcția citire_matrice() validează datele de intrare și returnează o tuplă formată din n, m și matricea citită.&lt;br /&gt;
&lt;br /&gt;
 Funcția colturi_dr() primește dimensiunile matricei și matricea în sine și calculează numărul de dreptunghiuri de extrem, aria maximă a unui dreptunghi de extrem și numărul de dreptunghiuri cu aceeași arie maximă.&lt;br /&gt;
&lt;br /&gt;
 În final, programul scrie datele de ieșire în fișierul colturi_dr.out și le afișează pe ecran.&lt;/div&gt;</summary>
		<author><name>AndorGiulia</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=0667_-_Nr_Prime_1&amp;diff=5389</id>
		<title>0667 - Nr Prime 1</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=0667_-_Nr_Prime_1&amp;diff=5389"/>
		<updated>2023-04-29T11:09:24Z</updated>

		<summary type="html">&lt;p&gt;AndorGiulia: Pagină nouă: Sursă: [https://www.pbinfo.ro/probleme/667/nrprime1] == Cerință == Se dă o matrice cu &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039; linii și &amp;#039;&amp;#039;&amp;#039;m&amp;#039;&amp;#039;&amp;#039; coloane și elemente numere naturale. Să se determine câte dintre elementele situate pe coloane cu indici impari sunt prime. == Date de intrare == Programul citește de la tastatură numerele &amp;#039;&amp;#039;&amp;#039;n m&amp;#039;&amp;#039;&amp;#039;, iar apoi &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039; șiruri cu câte &amp;#039;&amp;#039;&amp;#039;m&amp;#039;&amp;#039;&amp;#039; numere naturale, reprezentând elementele matricei. == Date de ieșire ==  Dacă datele sunt introduse corect, pe ecr...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Sursă: [https://www.pbinfo.ro/probleme/667/nrprime1]&lt;br /&gt;
== Cerință ==&lt;br /&gt;
Se dă o matrice cu &#039;&#039;&#039;n&#039;&#039;&#039; linii și &#039;&#039;&#039;m&#039;&#039;&#039; coloane și elemente numere naturale. Să se determine câte dintre elementele situate pe coloane cu indici impari sunt prime.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Programul citește de la tastatură numerele &#039;&#039;&#039;n m&#039;&#039;&#039;, iar apoi &#039;&#039;&#039;n&#039;&#039;&#039; șiruri cu câte &#039;&#039;&#039;m&#039;&#039;&#039; numere naturale, reprezentând elementele matricei.&lt;br /&gt;
== Date de ieșire == &lt;br /&gt;
Dacă datele sunt introduse corect, pe ecran se va afișa: &amp;quot;Datele sunt corecte.&amp;quot;. Programul va afișa pe ecran numărul &#039;&#039;&#039;C&#039;&#039;&#039;, reprezentând valoarea căutată.  În caz contrar, se va afișa pe ecran: &amp;quot;Datele nu sunt comform restricțiilor impuse.&amp;quot;.&lt;br /&gt;
== Restricții și precizări ==&lt;br /&gt;
* &#039;&#039;&#039;1 ≤ n , m ≤ 600&#039;&#039;&#039;&lt;br /&gt;
* elementele matricei sunt numere naturale mai mici decât &#039;&#039;&#039;1.000.000&#039;&#039;&#039;&lt;br /&gt;
* liniile matricei sunt numerotate de &#039;&#039;&#039;1&#039;&#039;&#039; la &#039;&#039;&#039;n&#039;&#039;&#039;, iar coloanele de la &#039;&#039;&#039;1&#039;&#039;&#039; la &#039;&#039;&#039;m&#039;&#039;&#039;&lt;br /&gt;
== Exemple ==&lt;br /&gt;
=== Exemplu 1 ===&lt;br /&gt;
; Date de intrare&lt;br /&gt;
: 4 3&lt;br /&gt;
: 5 2 10&lt;br /&gt;
: 3 9 1&lt;br /&gt;
: 7 10 1&lt;br /&gt;
: 10 19 3&lt;br /&gt;
; Date de ieșire&lt;br /&gt;
: 4&lt;br /&gt;
==== Explicatie ====&lt;br /&gt;
Cele &#039;&#039;&#039;4&#039;&#039;&#039; valori prime determinate sunt cele evidențiate mai jos:&lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;&#039;5&#039;&#039;&#039;	2	10&lt;br /&gt;
: &#039;&#039;&#039;3&#039;&#039;&#039;	9	1&lt;br /&gt;
: &#039;&#039;&#039;7&#039;&#039;&#039;	10	1&lt;br /&gt;
: 10	19	&#039;&#039;&#039;3&#039;&#039;&#039;&lt;br /&gt;
Observăm că matricea conține și alte elemente prime, dar ele nu sunt situate pe coloane cu indici impari.&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
def citire_lin_col():&lt;br /&gt;
    try:&lt;br /&gt;
        n = int(input(&amp;quot;Introduceti numarul de linii: &amp;quot;))&lt;br /&gt;
        m = int(input(&amp;quot;Introduceti numarul de coloane: &amp;quot;))&lt;br /&gt;
        if 1 &amp;lt;= n &amp;lt;= 600 and 1 &amp;lt;= m &amp;lt;= 600:&lt;br /&gt;
            print(&amp;quot;Datele sunt corecte.&amp;quot;)&lt;br /&gt;
            return n, m&lt;br /&gt;
        else:&lt;br /&gt;
            print(&amp;quot;Datele nu sunt conform restrictiilor impuse.&amp;quot;)&lt;br /&gt;
            exit()&lt;br /&gt;
    except ValueError:&lt;br /&gt;
        print(&amp;quot;Trebuie introduse doar numere intregi.&amp;quot;)&lt;br /&gt;
        exit()&lt;br /&gt;
&lt;br /&gt;
def citeste_valori_matrice(lin, col):&lt;br /&gt;
    matrice = []&lt;br /&gt;
    for linie in range(lin):&lt;br /&gt;
        matrice.append([])&lt;br /&gt;
        for coloana in range(col):&lt;br /&gt;
            try:&lt;br /&gt;
                n = int(input(f&amp;quot;Introduceti un numar pentru linia {linie+1}, coloana {coloana+1}: &amp;quot;))&lt;br /&gt;
                if n &amp;lt;= 1000000:&lt;br /&gt;
                    print(&amp;quot;Datele sunt corecte.&amp;quot;)&lt;br /&gt;
                    matrice[linie].append(n)&lt;br /&gt;
                else:&lt;br /&gt;
                    print(&amp;quot;Datele nu sunt conform restrictiilor impuse.&amp;quot;)&lt;br /&gt;
                    exit()&lt;br /&gt;
            except ValueError:&lt;br /&gt;
                print(&amp;quot;Trebuie introduse doar numere intregi.&amp;quot;)&lt;br /&gt;
                exit()&lt;br /&gt;
    return matrice&lt;br /&gt;
&lt;br /&gt;
def prim(n):&lt;br /&gt;
    if n &amp;lt; 2:&lt;br /&gt;
        return False&lt;br /&gt;
    if n== 2:&lt;br /&gt;
        return True&lt;br /&gt;
    if n % 2 == 0:&lt;br /&gt;
        return False&lt;br /&gt;
    for i in range(3, int(n ** 0.5) + 1, 2):&lt;br /&gt;
        if n % i == 0:&lt;br /&gt;
            return False&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
def NrPrime1(n, m, a):&lt;br /&gt;
    cnt = 0&lt;br /&gt;
    for i in range(n):&lt;br /&gt;
        for j in range(m):&lt;br /&gt;
            if j % 2 == 0 and prim(a[i][j]):&lt;br /&gt;
                cnt += 1&lt;br /&gt;
    print(cnt)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if _name_ == &amp;quot;_main_&amp;quot;:&lt;br /&gt;
    n, m = citire_lin_col()&lt;br /&gt;
    matrice = citeste_valori_matrice(n, m)&lt;br /&gt;
    NrPrime1(n, m, matrice)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
== Explicatie ==&lt;br /&gt;
 Acest cod implementează o funcție numită &amp;quot;NrPrime1&amp;quot; care primește trei argumente: n (numărul de linii al matricei), m (numărul de coloane al matricei) și a (matricea însăși). Funcția calculează și afișează numărul de numere prime din matrice care se află pe poziții pare de coloană.&lt;br /&gt;
&lt;br /&gt;
 Pentru a face asta, mai întâi sunt definite următoarele funcții:&lt;br /&gt;
&lt;br /&gt;
 &amp;quot;citire_lin_col&amp;quot; care citește de la utilizator numărul de linii și de coloane și verifică dacă valorile introduse sunt în intervalul permis (1-600). Dacă valorile sunt corecte, ele sunt returnate. În caz contrar, programul se termină.&lt;br /&gt;
&lt;br /&gt;
 &amp;quot;citeste_valori_matrice&amp;quot; care primește numărul de linii și coloane și citește de la utilizator valorile matricei. În timp ce valorile sunt citite, funcția verifică dacă fiecare valoare este mai mică sau egală cu 1000000. Dacă nu este cazul, programul se termină. Matricea este returnată la final.&lt;br /&gt;
&lt;br /&gt;
 &amp;quot;prim&amp;quot; care primește un număr și returnează adevărat dacă numărul este prim sau fals altfel. Această funcție este folosită de funcția &amp;quot;NrPrime1&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
 Funcția &amp;quot;NrPrime1&amp;quot; iterază prin fiecare element al matricei și verifică dacă numărul este prim și dacă coloana este număr par. Dacă da, numărătorul este crescut cu 1. La final, numărătorul este afișat.&lt;/div&gt;</summary>
		<author><name>AndorGiulia</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=0565_-_Acoperire&amp;diff=5388</id>
		<title>0565 - Acoperire</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=0565_-_Acoperire&amp;diff=5388"/>
		<updated>2023-04-29T11:04:16Z</updated>

		<summary type="html">&lt;p&gt;AndorGiulia: Pagină nouă: Sursă: [https://www.pbinfo.ro/probleme/565/acoperire] == Cerință == Gigel deține un teren de formă dreptunghiulară, împărțite în &amp;#039;&amp;#039;&amp;#039;n•m&amp;#039;&amp;#039;&amp;#039; sectoare, dispuse pe &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039; linii și &amp;#039;&amp;#039;&amp;#039;m&amp;#039;&amp;#039;&amp;#039; coloane. În anumite sectoare sunt instalate camere de luat vederi. Fiecare cameră acoperă anumite sectoare ale terenului, pe diagonală și are o anumită putere &amp;#039;&amp;#039;&amp;#039;k&amp;#039;&amp;#039;&amp;#039; reprezentând numărul de sectoare pe care le acoperă pe fiecare din cele &amp;#039;&amp;#039;&amp;#039;4&amp;#039;&amp;#039;&amp;#039; direcții, inclusiv sector...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Sursă: [https://www.pbinfo.ro/probleme/565/acoperire]&lt;br /&gt;
== Cerință ==&lt;br /&gt;
Gigel deține un teren de formă dreptunghiulară, împărțite în &#039;&#039;&#039;n•m&#039;&#039;&#039; sectoare, dispuse pe &#039;&#039;&#039;n&#039;&#039;&#039; linii și &#039;&#039;&#039;m&#039;&#039;&#039; coloane. În anumite sectoare sunt instalate camere de luat vederi. Fiecare cameră acoperă anumite sectoare ale terenului, pe diagonală și are o anumită putere &#039;&#039;&#039;k&#039;&#039;&#039; reprezentând numărul de sectoare pe care le acoperă pe fiecare din cele &#039;&#039;&#039;4&#039;&#039;&#039; direcții, inclusiv sectorul în care se află camera.&lt;br /&gt;
Determinați câte sectoare ale terenului nu sunt acoperite de nici o cameră.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Programul citește de la tastatură numerele &#039;&#039;&#039;n m k&#039;&#039;&#039;, reprezentând dimensiunile terenului și numărul de camere, apoi &#039;&#039;&#039;k&#039;&#039;&#039; triplete &#039;&#039;&#039;i j p&#039;&#039;&#039;, reprezentând coordonatele fiecărei camere șî puterea ei.&lt;br /&gt;
== Date de ieșire == &lt;br /&gt;
Dacă datele sunt introduse corect, pe ecran se va afișa: &amp;quot;Datele sunt corecte.&amp;quot;. Programul va afișa pe ecran numărul &#039;&#039;&#039;C&#039;&#039;&#039;, reprezentând numărul de sectoare neacoperite. În caz contrar, se va afișa pe ecran: &amp;quot;Datele nu sunt comform restricțiilor impuse.&amp;quot;.&lt;br /&gt;
== Restricții și precizări ==&lt;br /&gt;
* &#039;&#039;&#039;1 ≤ n , m ≤ 1000&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;1 ≤ p ≤ 1000&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;1 ≤ j ≤ m&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;1 ≤ p ≤ min(n,m)&#039;&#039;&#039;&lt;br /&gt;
* o cameră poate acoperi un sector în care se află o altă cameră&lt;br /&gt;
== Exemple ==&lt;br /&gt;
=== Exemplu 1 ===&lt;br /&gt;
; Date de intrare&lt;br /&gt;
: 1 7 2		&lt;br /&gt;
: 4 2 3		&lt;br /&gt;
: 4 5 4	&lt;br /&gt;
; Date de ieșire&lt;br /&gt;
: 16&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
def citeste_n_m_k():&lt;br /&gt;
    while True:&lt;br /&gt;
        try:&lt;br /&gt;
            n = int(input(&amp;quot;Introduceti numarul n: &amp;quot;))&lt;br /&gt;
            m = int(input(&amp;quot;Introduceti numarul m: &amp;quot;))&lt;br /&gt;
            k = int(input(&amp;quot;Introduceti numarul k: &amp;quot;))&lt;br /&gt;
            if 1 &amp;lt;= n &amp;lt;= 1000 and 1 &amp;lt;= m &amp;lt;= 1000 and 1 &amp;lt;= k &amp;lt;= 1000:&lt;br /&gt;
                print(&amp;quot;Datele sunt corecte.&amp;quot;)&lt;br /&gt;
                return n,m,k&lt;br /&gt;
            else:&lt;br /&gt;
                print(&amp;quot;Datele nu sunt conform restrictiilor impuse.&amp;quot;)&lt;br /&gt;
        except ValueError:&lt;br /&gt;
            print(&amp;quot;Trebuie introduse doar numere intregi.&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def citeste_triplet(n, m):&lt;br /&gt;
    valori = []&lt;br /&gt;
    for i in range(n):&lt;br /&gt;
        while True:&lt;br /&gt;
            try:&lt;br /&gt;
                i,j,p = map(int, input(&amp;quot;Introduceti tripletul de valori separate prin spatiu: &amp;quot;).split())&lt;br /&gt;
                if 1 &amp;lt;= i &amp;lt;= n and 1 &amp;lt;= j &amp;lt;= m and 1 &amp;lt;= p &amp;lt;= min(n,m):&lt;br /&gt;
                    print(&amp;quot;Datele sunt corecte.&amp;quot;)&lt;br /&gt;
                    valori.append((i,j,p))&lt;br /&gt;
                    break&lt;br /&gt;
                else:&lt;br /&gt;
                    print(&amp;quot;Datele nu sunt conform restrictiilor impuse.&amp;quot;)&lt;br /&gt;
            except ValueError:&lt;br /&gt;
                print(&amp;quot;Trebuie introduse doar valori numerice.&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    return valori&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def Acoperire(valori, n, m):&lt;br /&gt;
    a = [[-1 for j in range(m+1)] for i in range(n+1)]&lt;br /&gt;
    cnt = 0&lt;br /&gt;
    for i,j,p in valori:&lt;br /&gt;
        a[i][j] = p&lt;br /&gt;
        for l in range(1, p+1):&lt;br /&gt;
            if i + l &amp;lt;= n and j + l &amp;lt;= m:&lt;br /&gt;
                a[i+l][j+l] = p&lt;br /&gt;
            if i + l &amp;lt;= n and j - l &amp;gt; 0:&lt;br /&gt;
                a[i+l][j-l] = p&lt;br /&gt;
            if i - l &amp;gt; 0 and j + l &amp;lt;= m:&lt;br /&gt;
                a[i-l][j+l] = p&lt;br /&gt;
            if i - l &amp;gt; 0 and j - l &amp;gt; 0:&lt;br /&gt;
                a[i-l][j-l] = p&lt;br /&gt;
    for i in range(1, n+1):&lt;br /&gt;
        for j in range(1, m+1):&lt;br /&gt;
            if a[i][j] == -1:&lt;br /&gt;
                cnt += 1&lt;br /&gt;
    return cnt&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if _name_ == &#039;_main_&#039;:&lt;br /&gt;
    n, m, k = citeste_n_m_k()&lt;br /&gt;
    valori = citeste_triplet(k, m)&lt;br /&gt;
    cnt = Acoperire(valori, n, m)&lt;br /&gt;
    print(&amp;quot;Numarul de sectoare neacoperite este:&amp;quot;, cnt)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
== Explicatie ==&lt;br /&gt;
 Acest cod este o implementare a unui algoritm care calculează numărul de sectoare neacoperite de o matrice dată, folosind informații despre un set de triplete formate din trei valori întregi (i, j, p) care semnifică: linia i, coloana j și raza de acoperire p a unui sector circular centrare în (i,j).&lt;br /&gt;
&lt;br /&gt;
 Funcția citeste_n_m_k() citește de la tastatură valorile pentru n, m și k, reprezentând dimensiunile matricei și numărul de triplete, iar apoi verifică dacă valorile sunt conforme cu restricțiile impuse: n, m și k trebuie să fie între 1 și 1000. Dacă valorile sunt corecte, funcția le returnează.&lt;br /&gt;
&lt;br /&gt;
 Funcția citeste_triplet(n, m) primește numărul de triplete k și dimensiunea m și citește de la tastatură k triplete (i, j, p), reprezentând coordonatele centrului sectorului circular și raza de acoperire a acestuia. După citire, funcția verifică dacă tripletele sunt conforme cu restricțiile impuse: i și j trebuie să fie între 1 și n și respectiv între 1 și m, iar p trebuie să fie între 1 și min(n,m). Tripletele valide sunt adăugate la o listă de valori și apoi returnate.&lt;br /&gt;
&lt;br /&gt;
 Funcția Acoperire(valori, n, m) primește lista de valori citite anterior și dimensiunile matricei și calculează numărul de sectoare neacoperite. Înainte de a începe procesul de acoperire, se creează o matrice a de dimensiuni n+1 x m+1, inițializată cu valoarea -1 pentru toate elementele, pentru a putea verifica mai ușor dacă un sector a fost acoperit sau nu. Apoi, pentru fiecare triplet de valori citite, se actualizează matricea a, setând valoarea razei p pentru fiecare element de pe cercul centrat în (i,j). Se actualizează de asemenea și elementele din interiorul cercului, mărind raza de la 1 la p. La final, se numără câte elemente din matricea a au valoarea -1, semnificând sectoarele neacoperite, și se returnează acest număr.&lt;br /&gt;
&lt;br /&gt;
 Funcția main() apelează funcțiile citeste_n_m_k(), citeste_triplet(k, m) și Acoperire(valori, n, m) și afișează numărul de sectoare neacoperite.&lt;/div&gt;</summary>
		<author><name>AndorGiulia</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=4183_-_Bac_Eroziune&amp;diff=5382</id>
		<title>4183 - Bac Eroziune</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=4183_-_Bac_Eroziune&amp;diff=5382"/>
		<updated>2023-04-29T10:38:03Z</updated>

		<summary type="html">&lt;p&gt;AndorGiulia: Pagină nouă: Sursă: [https://www.pbinfo.ro/probleme/4183/bac-eroziune] == Enunt == Pentru prevenirea eroziunii la Marea Neagră, autoritățile au hotărât înnisiparea unei plaje. Plaja a fost împărțită în parcele de formă pătrată cu latura de 1 metru, dispuse ca elementele unui tablou bidimensional, reținându-se nivelul fiecărei parcele, măsurat în metri, de la nivelul mării. Înnisiparea se realizează doar pe acele parcele care au nivelul strict mai mic decât al celei...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Sursă: [https://www.pbinfo.ro/probleme/4183/bac-eroziune]&lt;br /&gt;
== Enunt ==&lt;br /&gt;
Pentru prevenirea eroziunii la Marea Neagră, autoritățile au hotărât înnisiparea unei plaje. Plaja a fost împărțită în parcele de formă pătrată cu latura de 1 metru, dispuse ca elementele unui tablou bidimensional, reținându-se nivelul fiecărei parcele, măsurat în metri, de la nivelul mării. Înnisiparea se realizează doar pe acele parcele care au nivelul strict mai mic decât al celei mai joase dintre parcelele vecine cu ea, adăugând nisip, astfel încât cele două să aibă același nivel. Două parcele sunt vecine dacă au o latură comună.&lt;br /&gt;
== Cerință ==&lt;br /&gt;
Scrieți un program C/C++ care citește de la tastatură două numere naturale &#039;&#039;&#039;L&#039;&#039;&#039; și &#039;&#039;&#039;C&#039;&#039;&#039;, apoi elementele unui tablou bidimensional cu &#039;&#039;&#039;L&#039;&#039;&#039; linii şi &#039;&#039;&#039;C&#039;&#039;&#039; coloane reprezentând nivelurile parcelelor, în ordinea dispunerii acestora pe plajă și determină cantitatea totală de nisip adăugată, măsurată în metri cubi.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Programul citește de la tastatură două numere naturale &#039;&#039;&#039;L&#039;&#039;&#039; și &#039;&#039;&#039;C&#039;&#039;&#039;, apoi elementele unui tablou bidimensional cu &#039;&#039;&#039;L&#039;&#039;&#039; linii şi &#039;&#039;&#039;C&#039;&#039;&#039; coloane reprezentând nivelurile parcelelor.&lt;br /&gt;
== Date de ieșire == &lt;br /&gt;
Dacă datele sunt introduse corect, pe ecran se va afișa: &amp;quot;Datele sunt corecte.&amp;quot;&#039;. Programul va afișa pe ecran numărul &#039;&#039;&#039;S&#039;&#039;&#039;, reprezentând cantitatea totală de nisip adăugată, măsurată în metri cubi. În caz contrar, se va afișa pe ecran: &amp;quot;Datele nu sunt comform restricțiilor impuse.&amp;quot;.&lt;br /&gt;
== Restricții și precizări ==&lt;br /&gt;
* &#039;&#039;&#039;1 ≤ L, C ≤ 100&#039;&#039;&#039;&lt;br /&gt;
* Elementele tabloului bidimensional sunt numere naturale cuprinse între &#039;&#039;&#039;1&#039;&#039;&#039; și &#039;&#039;&#039;10&#039;&#039;&#039;&lt;br /&gt;
== Exemple ==&lt;br /&gt;
=== Exemplu 1 ===&lt;br /&gt;
; Date de intrare&lt;br /&gt;
: 5 4 &lt;br /&gt;
: 5 3 4 6&lt;br /&gt;
: 7 5 9 3&lt;br /&gt;
: 6 8 3 9&lt;br /&gt;
: 4 5 2 3&lt;br /&gt;
: 3 1 4 4&lt;br /&gt;
; Date de ieșire&lt;br /&gt;
: 7&lt;br /&gt;
==== Explicatie ====&lt;br /&gt;
Se vor înnisipa parcelele de la pozițiile &#039;&#039;&#039;(1,2)&#039;&#039;&#039;, &#039;&#039;&#039;(2,4)&#039;&#039;&#039;, &#039;&#039;&#039;(4,3)&#039;&#039;&#039;, &#039;&#039;&#039;(5,2)&#039;&#039;&#039; pentru a fi aduse la nivelul parcelelor vecine corespunzătoare și se va afișa valoarea &#039;&#039;&#039;7 (1 + 3 + 1 + 2)&#039;&#039;&#039;.&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
def citire_matrice():&lt;br /&gt;
    try:&lt;br /&gt;
        n = int(input(&amp;quot;Introduceti numarul de linii: &amp;quot;))&lt;br /&gt;
        m = int(input(&amp;quot;Introduceti numarul de coloane: &amp;quot;))&lt;br /&gt;
        if 1 &amp;lt;= n &amp;lt;= 100 and 1 &amp;lt;= m &amp;lt;= 100:&lt;br /&gt;
            print(&amp;quot;Datele sunt corecte.&amp;quot;)&lt;br /&gt;
        else:&lt;br /&gt;
            print(&amp;quot;Datele nu sunt conform restrictiilor impuse.&amp;quot;)&lt;br /&gt;
            exit()&lt;br /&gt;
    except ValueError:&lt;br /&gt;
        print(&amp;quot;Trebuie introduse doar numere intregi.&amp;quot;)&lt;br /&gt;
        exit()&lt;br /&gt;
&lt;br /&gt;
    matrice = []&lt;br /&gt;
    for linie in range(n):&lt;br /&gt;
        matrice.append([])&lt;br /&gt;
        for coloana in range(m):&lt;br /&gt;
            for i in range(3):&lt;br /&gt;
                try:&lt;br /&gt;
                    valoare = int(input(f&amp;quot;Introduceti un numar pentru linia {linie+1}, coloana {coloana+1}: &amp;quot;))&lt;br /&gt;
                    if valoare &amp;lt;= 1000000:&lt;br /&gt;
                        print(&amp;quot;Datele sunt corecte.&amp;quot;)&lt;br /&gt;
                        matrice[linie].append(valoare)&lt;br /&gt;
                        break&lt;br /&gt;
                    else:&lt;br /&gt;
                        print(&amp;quot;Datele nu sunt conform restrictiilor impuse.&amp;quot;)&lt;br /&gt;
                except ValueError:&lt;br /&gt;
                    print(&amp;quot;Trebuie introduse doar numere intregi.&amp;quot;)&lt;br /&gt;
            else:&lt;br /&gt;
                print(&amp;quot;Prea multe incercari esuate.&amp;quot;)&lt;br /&gt;
                exit()&lt;br /&gt;
&lt;br /&gt;
    return n, m, matrice&lt;br /&gt;
&lt;br /&gt;
def bac_eroziune(valori, n):&lt;br /&gt;
    nisip_total = 0&lt;br /&gt;
    for i in range(n):&lt;br /&gt;
        for j in range(len(valori[i])):&lt;br /&gt;
            vecini = []&lt;br /&gt;
            nivel = valori[i][j]&lt;br /&gt;
            if i &amp;gt; 0:&lt;br /&gt;
                vecini.append(valori[i-1][j])&lt;br /&gt;
            if j &amp;gt; 0:&lt;br /&gt;
                vecini.append(valori[i][j-1])&lt;br /&gt;
            if i &amp;lt; n-1:&lt;br /&gt;
                vecini.append(valori[i+1][j])&lt;br /&gt;
            if j &amp;lt; len(valori[i])-1:&lt;br /&gt;
                vecini.append(valori[i][j+1])&lt;br /&gt;
            vecini.sort()&lt;br /&gt;
            if nivel &amp;lt; vecini[0]:&lt;br /&gt;
                nisip = vecini[0] - nivel&lt;br /&gt;
                valori[i][j] += nisip&lt;br /&gt;
                nisip_total += nisip&lt;br /&gt;
    return nisip_total&lt;br /&gt;
&lt;br /&gt;
if _name_ == &#039;_main_&#039;:&lt;br /&gt;
    n, m, matrice = citire_matrice()&lt;br /&gt;
    print(&amp;quot;Cantitatea totala de nisip adaugata: &amp;quot;, bac_eroziune(matrice, n))&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
== Explicatie ==&lt;br /&gt;
 Acest cod este scris in limbajul Python si contine doua functii: citire_matrice() si bac_eroziune(). De asemenea, se verifica si se afiseaza rezultatul.&lt;br /&gt;
&lt;br /&gt;
 Functia citire_matrice() solicita de la utilizator numarul de linii si coloane ale matricei, apoi verifica daca valorile introduse se incadreaza in intervalul permis (1-100). Daca valorile sunt valide, se solicita utilizatorului sa introduca valorile matricei. De asemenea, se verifica daca valorile introduse se incadreaza in intervalul permis (&amp;lt;= 1000000). Daca valorile sunt valide, acestea sunt stocate intr-o matrice si returnate impreuna cu dimensiunile matricei.&lt;br /&gt;
&lt;br /&gt;
 Functia bac_eroziune() primeste ca argumente matricea si dimensiunea acesteia. Aceasta parcurge matricea si pentru fiecare element verifica daca este mai mic decat cel mai mic vecin. Daca este indeplinita aceasta conditie, se aduna o cantitate de nisip egala cu diferenta dintre valoarea celui mai mic vecin si valoarea curenta si se actualizeaza valoarea curenta. Cantitatea totala de nisip adaugata este returnata la sfarsit.&lt;br /&gt;
&lt;br /&gt;
 In if _name_ == &#039;_main_&#039;:, se apeleaza functia citire_matrice() pentru a citi matricea de la utilizator si se afiseaza cantitatea totala de nisip adaugata prin apelarea functiei bac_eroziune().&lt;/div&gt;</summary>
		<author><name>AndorGiulia</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=2810_-_Inserare_1&amp;diff=5069</id>
		<title>2810 - Inserare 1</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=2810_-_Inserare_1&amp;diff=5069"/>
		<updated>2023-04-27T18:52:38Z</updated>

		<summary type="html">&lt;p&gt;AndorGiulia: Pagină nouă: Sursa: [https://www.pbinfo.ro/probleme/2810/inserare1] ---- == Cerinţa == Scrieți un program care citește de la tastatură un număr natural par &amp;#039;&amp;#039;&amp;#039;n (n∈[2,50])&amp;#039;&amp;#039;&amp;#039; și elementele unui tablou bidimensional cu &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039; linii și &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039; coloane, numere reale, apoi transformă tabloul în memorie, inserând o linie nouă, la mijlocul său, valoarea fiecărui element al acesteia fiind egală cu media aritmetică a elementelor aflate pe coloana corespunzătoare lui în tabloul...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Sursa: [https://www.pbinfo.ro/probleme/2810/inserare1]&lt;br /&gt;
----&lt;br /&gt;
== Cerinţa ==&lt;br /&gt;
Scrieți un program care citește de la tastatură un număr natural par &#039;&#039;&#039;n (n∈[2,50])&#039;&#039;&#039; și elementele unui tablou bidimensional cu &#039;&#039;&#039;n&#039;&#039;&#039; linii și &#039;&#039;&#039;n&#039;&#039;&#039; coloane, numere reale, apoi transformă tabloul în memorie, inserând o linie nouă, la mijlocul său, valoarea fiecărui element al acesteia fiind egală cu media aritmetică a elementelor aflate pe coloana corespunzătoare lui în tabloul citit. Tabloul obținut se afișează pe ecran, câte o linie a tabloului pe câte o linie a ecranului, elementele fiecărei linii fiind separate prin câte un spațiu.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Programul citește de la tastatură numărul &#039;&#039;&#039;n&#039;&#039;&#039;, iar apoi cele &#039;&#039;&#039;n • n&#039;&#039;&#039; elemente ale tabloului.&lt;br /&gt;
== Date de ieșire == &lt;br /&gt;
Pe ecran se va afișa mesajul: &amp;quot;Datele de intrare corespund restricțiilor impuse.&amp;quot;/ Programul va afișa pe ecran elementele tabloului modificat, conform cerinței. În cazul în care datele introduse de la tastatură nu îndeplinesc cerințele enunțate, programul va afișa &amp;quot;Datele de intrare nu corespund restricțiilor impuse.&amp;quot;.&lt;br /&gt;
== Restricţii şi precizări ==&lt;br /&gt;
* valorile afișate sunt considerate corecte dacă diferența în valoare absolută dintre fiecare element afișat și cel corect este mai mică decât &#039;&#039;&#039;0.001&#039;&#039;&#039;&lt;br /&gt;
== Exemple ==&lt;br /&gt;
=== Exemplu 1 ===&lt;br /&gt;
; Intrare&lt;br /&gt;
: 4&lt;br /&gt;
: 1.5 0.75 3 1.2&lt;br /&gt;
: 2.75 1.25 2.25 1.5&lt;br /&gt;
: 4.5 1.15 3 4.5&lt;br /&gt;
: 0.25 0.85 1.75 3&lt;br /&gt;
; Ieșire&lt;br /&gt;
: 1.5 0.75 3 1.2 &lt;br /&gt;
: 2.75 1.25 2.25 1.5 &lt;br /&gt;
: 2.25 1 2.5 2.55 &lt;br /&gt;
: 4.5 1.15 3 4.5 &lt;br /&gt;
: 0.25 0.85 1.75 3 &lt;br /&gt;
== Rezolvare == &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
def citire_lin_col():&lt;br /&gt;
    try:&lt;br /&gt;
        n = int(input(&amp;quot;Introduceti numarul: &amp;quot;))&lt;br /&gt;
        if 2 &amp;lt;= n &amp;lt;= 50:&lt;br /&gt;
            print(&amp;quot;Datele sunt corecte.&amp;quot;)&lt;br /&gt;
            return n&lt;br /&gt;
        else:&lt;br /&gt;
            print(&amp;quot;Datele nu sunt conform restrictiilor impuse.&amp;quot;)&lt;br /&gt;
            exit()&lt;br /&gt;
    except ValueError:&lt;br /&gt;
        print(&amp;quot;Trebuie introduse doar numere intregi.&amp;quot;)&lt;br /&gt;
        exit()&lt;br /&gt;
&lt;br /&gt;
def citeste_valori_matrice(lin, col):&lt;br /&gt;
    matrice = []&lt;br /&gt;
    for linie in range(lin):&lt;br /&gt;
        matrice.append([])&lt;br /&gt;
        for coloana in range(col):&lt;br /&gt;
            for i in range(3):&lt;br /&gt;
                try:&lt;br /&gt;
                    n = float(input(f&amp;quot;Introduceti un numar pentru linia {linie+1}, coloana {coloana+1}: &amp;quot;))&lt;br /&gt;
                    print(&amp;quot;Datele sunt corecte.&amp;quot;)&lt;br /&gt;
                    matrice[linie].append(n)&lt;br /&gt;
                    break&lt;br /&gt;
                except ValueError:&lt;br /&gt;
                    print(&amp;quot;Trebuie introduse doar numere reale.&amp;quot;)&lt;br /&gt;
            else:&lt;br /&gt;
                print(&amp;quot;Prea multe incercari esuate.&amp;quot;)&lt;br /&gt;
                exit()&lt;br /&gt;
    return matrice&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def Inserare1(matrice, n):&lt;br /&gt;
    v = [0] * 51&lt;br /&gt;
    for i in range(1, n + 1):&lt;br /&gt;
        for j in range(1, n + 1):&lt;br /&gt;
            v[j] += (matrice[i-1][j-1] * 100000)&lt;br /&gt;
    for i in range(1, n + 1):&lt;br /&gt;
        v[i] /= (n * 100000)&lt;br /&gt;
&lt;br /&gt;
    for i in range(1, n // 2 + 1):&lt;br /&gt;
        print(*matrice[i-1][0:n])&lt;br /&gt;
&lt;br /&gt;
    print(*v[1:n + 1])&lt;br /&gt;
&lt;br /&gt;
    for i in range(n // 2 + 1, n + 1):&lt;br /&gt;
        print(*matrice[i-1][0:n])&lt;br /&gt;
&lt;br /&gt;
if _name_ == &amp;quot;_main_&amp;quot;:&lt;br /&gt;
    n = citire_lin_col()&lt;br /&gt;
    matrice = citeste_valori_matrice(n, n)&lt;br /&gt;
    Inserare1(matrice, n)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
== Explicații ==&lt;br /&gt;
 Acest cod Python citeste dimensiunea unei matrici (linii si coloane) de la utilizator, apoi citeste valorile matricei ca numere reale si le stocheaza intr-o lista bidimensionala. Dupa aceea, calculeaza o lista de valori medii pe coloana, dupa care afiseaza matricea originala cu primele jumatate de linii, lista de valori medii si restul matricei. Funcția citire_lin_col() se asigură că dimensiunile introduse de utilizator respectă cerințele (numere între 2 și 50), în timp ce funcția citeste_valori_matrice() primește dimensiunile matricei și cere utilizatorului să introducă valorile matricei. Dacă utilizatorul introduce o valoare invalidă, i se vor oferi trei încercări de a introduce o valoare corectă. Dacă utilizatorul depășește numărul de încercări, programul se va încheia cu un mesaj de eroare. Funcția Inserare1() primește matricea și dimensiunea acesteia și calculează lista de valori medii pe coloană folosind o variabilă auxiliară v. După aceea, afișează matricea originală împărțită în trei părți: primele jumătate de linii, lista de valori medii și restul matricei.&lt;/div&gt;</summary>
		<author><name>AndorGiulia</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=1007_-_Matrice_7&amp;diff=5067</id>
		<title>1007 - Matrice 7</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=1007_-_Matrice_7&amp;diff=5067"/>
		<updated>2023-04-27T18:48:40Z</updated>

		<summary type="html">&lt;p&gt;AndorGiulia: Pagină nouă: Sursa: [https://www.pbinfo.ro/probleme/1007/matrice7] ---- == Cerinţa == Se consideră o matrice cu &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039; linii şi &amp;#039;&amp;#039;&amp;#039;m&amp;#039;&amp;#039;&amp;#039; coloane şi elemente numere naturale. Să se modifice matricea în felul următor: toate elementele egale cu valoarea maximă din matrice se înlocuiesc cu valoarea minimă de pe coloana lor. == Date de intrare == Fișierul de intrare &amp;#039;&amp;#039;&amp;#039;matrice7.in&amp;#039;&amp;#039;&amp;#039; conține pe prima linie numerele &amp;#039;&amp;#039;&amp;#039;n m&amp;#039;&amp;#039;&amp;#039;, iar următoarele &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039; linii câte &amp;#039;&amp;#039;&amp;#039;m&amp;#039;&amp;#039;&amp;#039; numere natu...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Sursa: [https://www.pbinfo.ro/probleme/1007/matrice7]&lt;br /&gt;
----&lt;br /&gt;
== Cerinţa ==&lt;br /&gt;
Se consideră o matrice cu &#039;&#039;&#039;n&#039;&#039;&#039; linii şi &#039;&#039;&#039;m&#039;&#039;&#039; coloane şi elemente numere naturale. Să se modifice matricea în felul următor: toate elementele egale cu valoarea maximă din matrice se înlocuiesc cu valoarea minimă de pe coloana lor.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Fișierul de intrare &#039;&#039;&#039;matrice7.in&#039;&#039;&#039; conține pe prima linie numerele &#039;&#039;&#039;n m&#039;&#039;&#039;, iar următoarele &#039;&#039;&#039;n&#039;&#039;&#039; linii câte &#039;&#039;&#039;m&#039;&#039;&#039; numere naturale, reprezentând elementele matricei.&lt;br /&gt;
== Date de ieșire == &lt;br /&gt;
Pe ecran se va afișa mesajul: &amp;quot;Datele de intrare corespund restricțiilor impuse.&amp;quot;. Fișierul de ieșire &#039;&#039;&#039;matrice7.out&#039;&#039;&#039; va conține matricea modificată, câte o linie a matricei pe o linie a fişierului, elementele fiecărei linii fiind separate prin exact un spaţiu. În cazul în care datele introduse de la tastatură nu îndeplinesc cerințele enunțate, programul va afișa &amp;quot;Datele de intrare nu corespund restricțiilor impuse.&amp;quot;.&lt;br /&gt;
== Restricţii şi precizări ==&lt;br /&gt;
* &#039;&#039;&#039;1 ≤ n, m ≤ 100&#039;&#039;&#039;&lt;br /&gt;
* elementele matricei vor fi mai mici decât &#039;&#039;&#039;1 000 000 000&#039;&#039;&#039;&lt;br /&gt;
== Exemple ==&lt;br /&gt;
=== Exemplu 1 ===&lt;br /&gt;
; &#039;&#039;&#039;matrice7.in&#039;&#039;&#039;&lt;br /&gt;
: 3 4&lt;br /&gt;
: 2 6 7 3&lt;br /&gt;
: 7 1 7 1&lt;br /&gt;
: 5 3 1 2&lt;br /&gt;
; &#039;&#039;&#039;matrice7.out&#039;&#039;&#039;&lt;br /&gt;
: 2 6 1 3 &lt;br /&gt;
: 2 1 1 1 &lt;br /&gt;
: 5 3 1 2 &lt;br /&gt;
== Rezolvare == &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
import math&lt;br /&gt;
&lt;br /&gt;
def citire_matrice():&lt;br /&gt;
    try:&lt;br /&gt;
        with open(&amp;quot;matrice7.in&amp;quot;, &amp;quot;r&amp;quot;) as fin:&lt;br /&gt;
            n, m = map(int, fin.readline().split())&lt;br /&gt;
            if 1 &amp;lt;= n &amp;lt;= 100 and  1 &amp;lt;= m &amp;lt;= 100:&lt;br /&gt;
                print(&amp;quot;Datele sunt corecte.&amp;quot;)&lt;br /&gt;
            else:&lt;br /&gt;
                print(&amp;quot;Datele nu sunt conform restrictiilor impuse.&amp;quot;)&lt;br /&gt;
                exit()&lt;br /&gt;
&lt;br /&gt;
            matrix = []&lt;br /&gt;
            for linie in range(n):&lt;br /&gt;
                linie_matrice = []&lt;br /&gt;
                valori = fin.readline().split()&lt;br /&gt;
                for coloana in range(m):&lt;br /&gt;
                    try:&lt;br /&gt;
                        valoare = int(valori[coloana])&lt;br /&gt;
                        if valoare &amp;lt;= 1000000000:&lt;br /&gt;
                            print(&amp;quot;Datele sunt corecte.&amp;quot;)&lt;br /&gt;
                            linie_matrice.append(valoare)&lt;br /&gt;
                        else:&lt;br /&gt;
                            print(&amp;quot;Datele nu sunt conform restrictiilor impuse.&amp;quot;)&lt;br /&gt;
                            exit()&lt;br /&gt;
                    except ValueError:&lt;br /&gt;
                        print(&amp;quot;Trebuie introduse doar numere intregi.&amp;quot;)&lt;br /&gt;
                        exit()&lt;br /&gt;
                matrix.append(linie_matrice)&lt;br /&gt;
&lt;br /&gt;
            return n, m, matrix&lt;br /&gt;
    except FileNotFoundError:&lt;br /&gt;
        print(&amp;quot;Fisierul matrice7.in nu exista.&amp;quot;)&lt;br /&gt;
        exit()&lt;br /&gt;
&lt;br /&gt;
def matrice7(n, m, matrix):&lt;br /&gt;
    max_val = -1&lt;br /&gt;
    for i in range(n):&lt;br /&gt;
        for j in range(m):&lt;br /&gt;
            if matrix[i][j] &amp;gt; max_val:&lt;br /&gt;
                max_val = matrix[i][j]&lt;br /&gt;
&lt;br /&gt;
    min_col = [math.inf] * m&lt;br /&gt;
    for j in range(m):&lt;br /&gt;
        for i in range(n):&lt;br /&gt;
            if matrix[i][j] &amp;lt; min_col[j]:&lt;br /&gt;
                min_col[j] = matrix[i][j]&lt;br /&gt;
&lt;br /&gt;
    for i in range(n):&lt;br /&gt;
        for j in range(m):&lt;br /&gt;
            if matrix[i][j] == max_val:&lt;br /&gt;
                matrix[i][j] = min_col[j]&lt;br /&gt;
&lt;br /&gt;
    with open(&amp;quot;matrice7.out&amp;quot;, &amp;quot;w&amp;quot;) as fout:&lt;br /&gt;
        for i in range(n):&lt;br /&gt;
            for j in range(m):&lt;br /&gt;
                fout.write(str(matrix[i][j]) + &amp;quot; &amp;quot;)&lt;br /&gt;
            fout.write(&amp;quot;\n&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
if _name_ == &amp;quot;_main_&amp;quot;:&lt;br /&gt;
    n, m, matrix = citire_matrice()&lt;br /&gt;
    matrice7(n, m, matrix)&lt;br /&gt;
    print(&amp;quot;Procesul s-a incheiat cu succes!&amp;quot;)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
== Explicații ==&lt;br /&gt;
 Funcția citire_matrice()&lt;br /&gt;
 Descriere: Această funcție se ocupă de citirea datelor din fișierul &amp;quot;matrice7.in&amp;quot; și construirea matricei corespunzătoare. În cazul în care fișierul nu există sau datele nu sunt conforme cu restricțiile impuse, se va afișa un mesaj de eroare corespunzător.&lt;br /&gt;
 Parametri: Funcția nu primește parametri.&lt;br /&gt;
 Return: Funcția returnează trei valori: n (numărul de linii al matricei), m (numărul de coloane al matricei) și matrix (matricea propriu-zisă, reprezentată sub formă de listă de liste).&lt;br /&gt;
 Funcția matrice7(n, m, matrix)&lt;br /&gt;
 Descriere: Această funcție primește ca parametri dimensiunile matricei și matricea propriu-zisă și se ocupă de efectuarea operațiilor specifice cerinței și de scrierea matricei rezultate în fișierul &amp;quot;matrice7.out&amp;quot;.&lt;br /&gt;
 Parametri: Funcția primește trei parametri: n (numărul de linii al matricei), m (numărul de coloane al matricei) și matrix (matricea propriu-zisă, reprezentată sub formă de listă de liste).&lt;br /&gt;
 Return: Funcția nu returnează niciun rezultat.&lt;br /&gt;
 Funcția main()&lt;br /&gt;
 Descriere: Această funcție reprezintă punctul de pornire al programului. Se apelează funcția citire_matrice() pentru a obține matricea de intrare și se apelează apoi funcția matrice7() pentru a obține matricea rezultată. &lt;br /&gt;
 De asemenea, se afișează un mesaj de confirmare a terminării programului.&lt;br /&gt;
 Parametri: Funcția nu primește parametri.&lt;br /&gt;
 Return: Funcția nu returnează niciun rezultat.&lt;/div&gt;</summary>
		<author><name>AndorGiulia</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=0751_-_MCautare&amp;diff=5064</id>
		<title>0751 - MCautare</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=0751_-_MCautare&amp;diff=5064"/>
		<updated>2023-04-27T18:43:46Z</updated>

		<summary type="html">&lt;p&gt;AndorGiulia: Pagină nouă: Sursa: [https://www.pbinfo.ro/probleme/751/mcautare] ---- == Cerinţa == Se dă o matrice cu &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039; linii și &amp;#039;&amp;#039;&amp;#039;m&amp;#039;&amp;#039;&amp;#039; coloane și elemente numere naturale și &amp;#039;&amp;#039;&amp;#039;k&amp;#039;&amp;#039;&amp;#039; valori naturale. Determinați pentru fiecare dintre cele &amp;#039;&amp;#039;&amp;#039;k&amp;#039;&amp;#039;&amp;#039; valori dacă apare pe fiecare linie a matricei. == Date de intrare == Programul citește de la tastatură numerele &amp;#039;&amp;#039;&amp;#039;n m&amp;#039;&amp;#039;&amp;#039;, apoi cele &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039; linii ale matricei, fiecare cu câte &amp;#039;&amp;#039;&amp;#039;m&amp;#039;&amp;#039;&amp;#039; valori. Apoi citește valoarea &amp;#039;&amp;#039;&amp;#039;k&amp;#039;&amp;#039;&amp;#039;, apoi &amp;#039;&amp;#039;&amp;#039;k&amp;#039;&amp;#039;&amp;#039; valor...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Sursa: [https://www.pbinfo.ro/probleme/751/mcautare]&lt;br /&gt;
----&lt;br /&gt;
== Cerinţa ==&lt;br /&gt;
Se dă o matrice cu &#039;&#039;&#039;n&#039;&#039;&#039; linii și &#039;&#039;&#039;m&#039;&#039;&#039; coloane și elemente numere naturale și &#039;&#039;&#039;k&#039;&#039;&#039; valori naturale. Determinați pentru fiecare dintre cele &#039;&#039;&#039;k&#039;&#039;&#039; valori dacă apare pe fiecare linie a matricei.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Programul citește de la tastatură numerele &#039;&#039;&#039;n m&#039;&#039;&#039;, apoi cele &#039;&#039;&#039;n&#039;&#039;&#039; linii ale matricei, fiecare cu câte &#039;&#039;&#039;m&#039;&#039;&#039; valori. Apoi citește valoarea &#039;&#039;&#039;k&#039;&#039;&#039;, apoi &#039;&#039;&#039;k&#039;&#039;&#039; valori &#039;&#039;&#039;x&#039;&#039;&#039;.&lt;br /&gt;
== Date de ieșire == &lt;br /&gt;
Pe ecran se va afișa mesajul: &amp;quot;Datele de intrare corespund restricțiilor impuse.&amp;quot;. Programul va afișa pe ecran, pentru fiecare dintre cele&#039;&#039;&#039;k&#039;&#039;&#039; valori &#039;&#039;&#039;x&#039;&#039;&#039;, mesajul &#039;&#039;&#039;DA&#039;&#039;&#039;, dacă &#039;&#039;&#039;x&#039;&#039;&#039; apare pe fiecare dintre liniile matricei, respectiv &#039;&#039;&#039;NU&#039;&#039;&#039; în caz contrar. Fiecare mesaj va fi afișat pe câte o linie a ecranului. În cazul în care datele introduse de la tastatură nu îndeplinesc cerințele enunțate, programul va afișa &amp;quot;Datele de intrare nu corespund restricțiilor impuse.&amp;quot;.&lt;br /&gt;
== Restricţii şi precizări ==&lt;br /&gt;
* &#039;&#039;&#039;1 ≤ n,m ≤ 100&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;1 ≤ k ≤ 1000&#039;&#039;&#039;&lt;br /&gt;
* elementele matricei și cele &#039;&#039;&#039;k&#039;&#039;&#039; valori &#039;&#039;&#039;x&#039;&#039;&#039; sunt mai mici decât &#039;&#039;&#039;1.000.000.000&#039;&#039;&#039;&lt;br /&gt;
== Exemple ==&lt;br /&gt;
=== Exemplu 1 ===&lt;br /&gt;
; Intrare&lt;br /&gt;
: 4 5&lt;br /&gt;
: 3 7 9 9 7 &lt;br /&gt;
: 3 7 8 10 9 &lt;br /&gt;
: 3 5 4 7 9 &lt;br /&gt;
: 6&lt;br /&gt;
: 9 4 7 8 10 7&lt;br /&gt;
; Ieșire&lt;br /&gt;
: DA&lt;br /&gt;
: DA&lt;br /&gt;
: NU&lt;br /&gt;
: NU&lt;br /&gt;
: DA&lt;br /&gt;
==== Explicatie ====&lt;br /&gt;
Dintre cele 6 valori citite, doar prima, a treia și a șasea apar pe toate liniile matricei.&lt;br /&gt;
== Rezolvare == &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
def citeste_valoare_intrega(mesaj):&lt;br /&gt;
    while True:&lt;br /&gt;
        try:&lt;br /&gt;
            valoare = int(input(mesaj))&lt;br /&gt;
            return valoare&lt;br /&gt;
        except ValueError:&lt;br /&gt;
            print(&amp;quot;Trebuie introduse doar numere intregi.&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
def citeste_matrice(n, m):&lt;br /&gt;
    matrice = []&lt;br /&gt;
    for linie in range(n):&lt;br /&gt;
        matrice.append([])&lt;br /&gt;
        for coloana in range(m):&lt;br /&gt;
            valoare_corecta = False&lt;br /&gt;
            incercari = 0&lt;br /&gt;
            while not valoare_corecta and incercari &amp;lt; 3:&lt;br /&gt;
                valoare = citeste_valoare_intrega(f&amp;quot;Introduceti un numar pentru linia {linie+1}, coloana {coloana+1}: &amp;quot;)&lt;br /&gt;
                if valoare &amp;lt;= 1000000:&lt;br /&gt;
                    matrice[linie].append(valoare)&lt;br /&gt;
                    valoare_corecta = True&lt;br /&gt;
                else:&lt;br /&gt;
                    print(&amp;quot;Datele nu sunt conforme cu restrictiile impuse.&amp;quot;)&lt;br /&gt;
                    incercari += 1&lt;br /&gt;
            if not valoare_corecta:&lt;br /&gt;
                print(&amp;quot;Prea multe incercari esuate.&amp;quot;)&lt;br /&gt;
                exit()&lt;br /&gt;
    return matrice&lt;br /&gt;
&lt;br /&gt;
def citire_matrice():&lt;br /&gt;
    try:&lt;br /&gt;
        n = citeste_valoare_intrega(&amp;quot;Introduceti numarul de linii: &amp;quot;)&lt;br /&gt;
        m = citeste_valoare_intrega(&amp;quot;Introduceti numarul de coloane: &amp;quot;)&lt;br /&gt;
        if not (1 &amp;lt;= n &amp;lt;= 100 and 1 &amp;lt;= m &amp;lt;= 100):&lt;br /&gt;
            print(&amp;quot;Datele nu sunt conforme cu restrictiile impuse.&amp;quot;)&lt;br /&gt;
            exit()&lt;br /&gt;
    except ValueError:&lt;br /&gt;
        print(&amp;quot;Trebuie introduse doar numere intregi.&amp;quot;)&lt;br /&gt;
        exit()&lt;br /&gt;
&lt;br /&gt;
    matrice = citeste_matrice(n, m)&lt;br /&gt;
    k = citeste_valoare_intrega(&amp;quot;Introduceti numarul de valori cautate: &amp;quot;)&lt;br /&gt;
    valori = []&lt;br /&gt;
    for i in range(k):&lt;br /&gt;
        valoare = citeste_valoare_intrega(f&amp;quot;Introduceti valoarea {i+1}: &amp;quot;)&lt;br /&gt;
        if valoare &amp;lt;= 1000000:&lt;br /&gt;
            valori.append(valoare)&lt;br /&gt;
        else:&lt;br /&gt;
            print(&amp;quot;Datele nu sunt conforme cu restrictiile impuse.&amp;quot;)&lt;br /&gt;
            exit()&lt;br /&gt;
&lt;br /&gt;
    return matrice, valori&lt;br /&gt;
&lt;br /&gt;
def MCautare(matrice, valori):&lt;br /&gt;
    n = len(matrice)&lt;br /&gt;
    m = len(matrice[0])&lt;br /&gt;
    for valoare in valori:&lt;br /&gt;
        apare_pe_toate_linii = True&lt;br /&gt;
        for linie in range(n):&lt;br /&gt;
            if valoare not in matrice[linie]:&lt;br /&gt;
                apare_pe_toate_linii = False&lt;br /&gt;
                break&lt;br /&gt;
        if apare_pe_toate_linii:&lt;br /&gt;
            print(&amp;quot;DA&amp;quot;)&lt;br /&gt;
        else:&lt;br /&gt;
            print(&amp;quot;NU&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
if _name_ == &amp;quot;_main_&amp;quot;:&lt;br /&gt;
    matrice, valori = citire_matrice()&lt;br /&gt;
    MCautare(matrice, valori)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
== Explicații ==&lt;br /&gt;
 Acest cod Python definește mai multe funcții pentru a căuta anumite valori într-o matrice și a determina dacă acestea apar pe toate liniile matricei.&lt;br /&gt;
&lt;br /&gt;
 Funcția citeste_valoare_intrega(mesaj) primește un mesaj și citește o valoare întreagă de la tastatură folosind funcția input(). Această funcție este apoi utilizată în funcția citeste_matrice(n, m) pentru a citi valorile pentru matricea de dimensiuni n x m. Pentru a asigura că valorile introduse sunt corecte, acestea sunt verificate dacă sunt numere întregi și mai mici sau egale cu 1.000.000. Dacă utilizatorul introduce o valoare incorectă, acesta primește un mesaj de eroare și are maximum 3 încercări de a introduce o valoare corectă.&lt;br /&gt;
&lt;br /&gt;
 Funcția citire_matrice() este utilizată pentru a citi dimensiunile matricei și pentru a apela funcția citeste_matrice(n, m) pentru a citi valorile matricei și o listă de valori pentru căutare. Dacă valorile introduse pentru dimensiunile matricei nu sunt conforme cu restricțiile impuse (1 &amp;lt;= n &amp;lt;= 100 și 1 &amp;lt;= m &amp;lt;= 100), programul se va opri cu un mesaj de eroare.&lt;br /&gt;
&lt;br /&gt;
 Funcția MCautare(matrice, valori) primește matricea și lista de valori pentru căutare și verifică dacă fiecare valoare apare pe toate liniile matricei. Pentru fiecare valoare din lista de căutare, se parcurg toate liniile matricei pentru a verifica dacă valoarea respectivă apare pe toate acestea. Dacă valoarea apare pe toate liniile, se afișează mesajul &amp;quot;DA&amp;quot;. Altfel, se afișează mesajul &amp;quot;NU&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
 Codul verifică în plus dacă utilizatorul introduce valori care depășesc limitele specificate, caz în care programul se va opri cu un mesaj de eroare.&lt;/div&gt;</summary>
		<author><name>AndorGiulia</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=0769_-_Ord_Col&amp;diff=5058</id>
		<title>0769 - Ord Col</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=0769_-_Ord_Col&amp;diff=5058"/>
		<updated>2023-04-27T18:36:41Z</updated>

		<summary type="html">&lt;p&gt;AndorGiulia: Pagină nouă: Sursa: [https://www.pbinfo.ro/probleme/769/ordcol] ---- == Cerinţa == Se dă o matrice cu &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039; linii şi &amp;#039;&amp;#039;&amp;#039;m&amp;#039;&amp;#039;&amp;#039; coloane şi elemente numere naturale. Să se ordoneze coloanele matricei astfel încât elementele de pe prima linie să fie ordonate crescător. == Date de intrare == Programul citește de la tastatură numerele &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039; şi &amp;#039;&amp;#039;&amp;#039;m&amp;#039;&amp;#039;&amp;#039;, iar apoi &amp;#039;&amp;#039;&amp;#039;n*m&amp;#039;&amp;#039;&amp;#039; numere naturale, separate prin spaţii, reprezentând elementele matricei, linie cu linie. == Date de ieșire...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Sursa: [https://www.pbinfo.ro/probleme/769/ordcol]&lt;br /&gt;
----&lt;br /&gt;
== Cerinţa ==&lt;br /&gt;
Se dă o matrice cu &#039;&#039;&#039;n&#039;&#039;&#039; linii şi &#039;&#039;&#039;m&#039;&#039;&#039; coloane şi elemente numere naturale. Să se ordoneze coloanele matricei astfel încât elementele de pe prima linie să fie ordonate crescător.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Programul citește de la tastatură numerele &#039;&#039;&#039;n&#039;&#039;&#039; şi &#039;&#039;&#039;m&#039;&#039;&#039;, iar apoi &#039;&#039;&#039;n*m&#039;&#039;&#039; numere naturale, separate prin spaţii, reprezentând elementele matricei, linie cu linie.&lt;br /&gt;
== Date de ieșire == &lt;br /&gt;
Pe ecran se va afișa mesajul: &amp;quot;Datele de intrare corespund restricțiilor impuse.&amp;quot;. Programul afișează pe ecran elementele matricei transformate, câte un linie a matricei pe o linie a ecranului, elementele de pe o linie fiind separate prin câte un spațiu. În cazul în care datele introduse de la tastatură nu îndeplinesc cerințele enunțate, programul va afișa &amp;quot;Datele de intrare nu corespund restricțiilor impuse.&amp;quot;.&lt;br /&gt;
== Restricţii şi precizări ==&lt;br /&gt;
* &#039;&#039;&#039;1 ≤ m,n ≤ 100&#039;&#039;&#039;&lt;br /&gt;
* elementele matricei vor fi mai mici decât &#039;&#039;&#039;1000000&#039;&#039;&#039;&lt;br /&gt;
== Exemple ==&lt;br /&gt;
=== Exemplu 1 ===&lt;br /&gt;
; Intrare&lt;br /&gt;
: 4 6&lt;br /&gt;
: 4 20 15 23 18 9 &lt;br /&gt;
: 1 8 23 22 14 18 &lt;br /&gt;
: 17 15 13 18 12 15 &lt;br /&gt;
: 3 18 8 20 12 5 &lt;br /&gt;
; Ieșire&lt;br /&gt;
: 4 9 15 18 20 23 &lt;br /&gt;
: 1 18 23 14 8 22 &lt;br /&gt;
: 17 15 13 12 15 18 &lt;br /&gt;
: 3 5 8 12 18 20&lt;br /&gt;
== Rezolvare == &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
def citire_matrice():&lt;br /&gt;
    try:&lt;br /&gt;
        n = int(input(&amp;quot;Introduceti numarul de linii: &amp;quot;))&lt;br /&gt;
        m = int(input(&amp;quot;Introduceti numarul de coloane: &amp;quot;))&lt;br /&gt;
        if 1 &amp;lt;= n &amp;lt;= 100 and 1 &amp;lt;= m &amp;lt;= 100:&lt;br /&gt;
            print(&amp;quot;Datele sunt corecte.&amp;quot;)&lt;br /&gt;
        else:&lt;br /&gt;
            print(&amp;quot;Datele nu sunt conform restrictiilor impuse.&amp;quot;)&lt;br /&gt;
            exit()&lt;br /&gt;
    except ValueError:&lt;br /&gt;
        print(&amp;quot;Trebuie introduse doar numere intregi.&amp;quot;)&lt;br /&gt;
        exit()&lt;br /&gt;
&lt;br /&gt;
    matrice = []&lt;br /&gt;
    for linie in range(n):&lt;br /&gt;
        matrice.append([])&lt;br /&gt;
        for coloana in range(m):&lt;br /&gt;
            for i in range(3):&lt;br /&gt;
                try:&lt;br /&gt;
                    valoare = int(input(f&amp;quot;Introduceti un numar pentru linia {linie+1}, coloana {coloana+1}: &amp;quot;))&lt;br /&gt;
                    if valoare &amp;lt;= 1000000:&lt;br /&gt;
                        print(&amp;quot;Datele sunt corecte.&amp;quot;)&lt;br /&gt;
                        matrice[linie].append(valoare)&lt;br /&gt;
                        break&lt;br /&gt;
                    else:&lt;br /&gt;
                        print(&amp;quot;Datele nu sunt conform restrictiilor impuse.&amp;quot;)&lt;br /&gt;
                except ValueError:&lt;br /&gt;
                    print(&amp;quot;Trebuie introduse doar numere intregi.&amp;quot;)&lt;br /&gt;
            else:&lt;br /&gt;
                print(&amp;quot;Prea multe incercari esuate.&amp;quot;)&lt;br /&gt;
                exit()&lt;br /&gt;
&lt;br /&gt;
    return matrice&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def OrdCol(matrice):&lt;br /&gt;
    n = len(matrice)&lt;br /&gt;
    m = len(matrice[0])&lt;br /&gt;
    v = sorted(matrice[0])&lt;br /&gt;
    b = [[0 for j in range(m)] for i in range(n)]&lt;br /&gt;
    for i in range(m):&lt;br /&gt;
        for j in range(m):&lt;br /&gt;
            if v[i] == matrice[0][j]:&lt;br /&gt;
                for l in range(n):&lt;br /&gt;
                    b[l][i] = matrice[l][j]&lt;br /&gt;
    print(&amp;quot;Matricea initiala:&amp;quot;)&lt;br /&gt;
    for i in range(n):&lt;br /&gt;
        for j in range(m):&lt;br /&gt;
            print(matrice[i][j], end=&#039; &#039;)&lt;br /&gt;
        print()&lt;br /&gt;
    print(&amp;quot;Matricea transpusa:&amp;quot;)&lt;br /&gt;
    for i in range(n):&lt;br /&gt;
        for j in range(m):&lt;br /&gt;
            print(b[i][j], end=&#039; &#039;)&lt;br /&gt;
        print()&lt;br /&gt;
&lt;br /&gt;
if _name_ == &amp;quot;_main_&amp;quot;:&lt;br /&gt;
    matrice = citire_matrice()&lt;br /&gt;
    OrdCol(matrice)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
== Explicații ==&lt;br /&gt;
 Acest cod implementează două funcții Python, citire_matrice() și OrdCol(matrice), pentru a citi o matrice de numere întregi de la tastatură și a afișa matricea transpusă sortată în ordine crescătoare a primului rând.&lt;br /&gt;
&lt;br /&gt;
 Funcția citire_matrice() citește numărul de linii și de coloane ale matricei de la tastatură și verifică dacă acestea se încadrează în intervalul [1,100]. Apoi, primește de la utilizator elementele matricei și le adaugă într-o listă bidimensională matrice. În timpul introducerii valorilor, funcția verifică dacă acestea sunt numere întregi și dacă se încadrează în intervalul [1,1000000]. Dacă se produc erori în timpul introducerii valorilor, funcția afișează mesaje corespunzătoare și oprește programul cu ajutorul funcției exit(). În final, funcția returnează matricea.&lt;br /&gt;
&lt;br /&gt;
 Funcția OrdCol(matrice) primește matricea returnată de funcția citire_matrice() și creează o nouă matrice b cu aceleași dimensiuni ca matricea inițială. Se sortează primul rând al matricei inițiale în ordine crescătoare și se stochează rezultatul în lista v. Apoi, se parcurg coloanele matricei inițiale și se caută pentru fiecare element din primul rând valoarea corespunzătoare din coloana respectivă. Dacă se găsește o astfel de valoare, elementul din noua matrice b de pe aceeași poziție este setat la valoarea respectivă. În final, sunt afișate matricea inițială și matricea transpusă sortată în ordine crescătoare a primului rând.&lt;br /&gt;
&lt;br /&gt;
 Instrucțiunea if _name_ == &amp;quot;_main_&amp;quot;: asigură faptul că codul de mai sus va fi executat doar dacă acest fișier este rulat ca program, nu dacă este importat ca modul într-un alt program.&lt;/div&gt;</summary>
		<author><name>AndorGiulia</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=4001_-_Min_Max_K_9&amp;diff=5054</id>
		<title>4001 - Min Max K 9</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=4001_-_Min_Max_K_9&amp;diff=5054"/>
		<updated>2023-04-27T18:31:17Z</updated>

		<summary type="html">&lt;p&gt;AndorGiulia: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Sursă: [https://www.pbinfo.ro/probleme/4001/minmaxk9]&lt;br /&gt;
== Cerinţa ==&lt;br /&gt;
Se citește o cifră &#039;&#039;&#039;k&#039;&#039;&#039; și apoi se citesc numere naturale distincte de la tastatură până la apariția lui zero. Afișați câte dintre numerele citite după &#039;&#039;&#039;k&#039;&#039;&#039; sunt cuprinse între cel mai mic și cel mai mare număr cu proprietatea că are ultima cifră egală cu &#039;&#039;&#039;k&#039;&#039;&#039;. Dacă niciunul dintre numerele citite nu are ultima cifră egală cu &#039;&#039;&#039;k&#039;&#039;&#039;, atunci se va afișa &#039;&#039;&#039;NU EXISTA&#039;&#039;&#039;.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Programul citește de la tastatură numărul k și apoi numere naturale distincte. Citirea se încheie la introducerea valorii &#039;&#039;&#039;0&#039;&#039;&#039;, care nu se prelucrează.&lt;br /&gt;
== Date de ieșire ==&lt;br /&gt;
Dacă datele sunt introduse corect, pe ecran se va afișa: &amp;quot;Datele sunt corecte.&amp;quot;,Programul afișează pe ecran numărul de numere citite între numărul minim și cel maxim (inclusiv acestea) cu proprietatea cerută. În caz contrar, se va afișa pe ecran: &amp;quot;Datele nu sunt comform restricțiilor impuse.&amp;quot;. &lt;br /&gt;
== Restricții și precizări ==&lt;br /&gt;
* numerele citite aparțin intervalului &#039;&#039;&#039;[0,1.000.000]&#039;&#039;&#039; și sunt distincte (diferite două câte două).&lt;br /&gt;
* &#039;&#039;&#039;0&amp;lt;=k&amp;lt;=9&#039;&#039;&#039;.&lt;br /&gt;
* în total se citesc cel mult &#039;&#039;&#039;200000&#039;&#039;&#039; de numere.&lt;br /&gt;
== Exemple ==&lt;br /&gt;
=== Exemplu 1 ===&lt;br /&gt;
; Date de intrare&lt;br /&gt;
: 5 45 44 5505 7884 15 75 530 0&lt;br /&gt;
; Date de iesire&lt;br /&gt;
: 3&lt;br /&gt;
=== Exemplu 2 ===&lt;br /&gt;
; Date de intrare&lt;br /&gt;
:4&lt;br /&gt;
: 1 2 3 4&lt;br /&gt;
; Date de iesire&lt;br /&gt;
:Datele sunt corecte. Rezultat: 4&lt;br /&gt;
=== Exemplu 3 ===&lt;br /&gt;
; Date de intrare&lt;br /&gt;
: 3&lt;br /&gt;
: 76968635425 456 6&lt;br /&gt;
; Date de iesire&lt;br /&gt;
:Datele introduse nu corespund cerinței.&lt;br /&gt;
&lt;br /&gt;
== Rezolvare == &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
def citeste_k():&lt;br /&gt;
    while True:&lt;br /&gt;
        try:&lt;br /&gt;
            k = int(input(&amp;quot;Introduceti cifra k: &amp;quot;))&lt;br /&gt;
            if 0 &amp;lt;= k &amp;lt;= 9:&lt;br /&gt;
                print(&amp;quot;Datele sunt corecte.&amp;quot;)&lt;br /&gt;
                return k&lt;br /&gt;
            else:&lt;br /&gt;
                print(&amp;quot;Datele nu sunt conform restricțiilor impuse.&amp;quot;)&lt;br /&gt;
        except ValueError:&lt;br /&gt;
            print(&amp;quot;Trebuie introduse doar numere intregi.&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def citeste_valori():&lt;br /&gt;
    numere = []&lt;br /&gt;
    while True:&lt;br /&gt;
        try:&lt;br /&gt;
            n = int(input(&amp;quot;Introduceti un numar: &amp;quot;))&lt;br /&gt;
            if 0 &amp;lt;= n &amp;lt;= 1000000:&lt;br /&gt;
                numere.append(n)&lt;br /&gt;
                if n == 0:&lt;br /&gt;
                    break&lt;br /&gt;
            else:&lt;br /&gt;
                print(&amp;quot;Datele nu sunt conform restricțiilor impuse.&amp;quot;)&lt;br /&gt;
        except ValueError:&lt;br /&gt;
            print(&amp;quot;Trebuie introduse doar valori cu mai putin de 9 cifre.&amp;quot;)&lt;br /&gt;
    return numere&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def numere_cu_ultima_cifra_k(numere, k):&lt;br /&gt;
    numere_cu_k = [nr for nr in numere if nr % 10 == k]&lt;br /&gt;
    if len(numere_cu_k) == 0:&lt;br /&gt;
        print(&amp;quot;NU EXISTA&amp;quot;)&lt;br /&gt;
    else:&lt;br /&gt;
        min_nr_cu_k = min(numere_cu_k)&lt;br /&gt;
        max_nr_cu_k = max(numere_cu_k)&lt;br /&gt;
        numere_intre = [nr for nr in numere if min_nr_cu_k &amp;lt;= nr &amp;lt;= max_nr_cu_k and nr % 10 == k]&lt;br /&gt;
        print(len(numere_intre))&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if _name_ == &#039;_main_&#039;:&lt;br /&gt;
    k = citeste_k()&lt;br /&gt;
    valori = citeste_valori()&lt;br /&gt;
    numere_cu_ultima_cifra_k(valori, k)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
== Explicație ==&lt;br /&gt;
 Acest cod are ca scop rezolvarea problemei de a număra câte dintre numerele citite după o cifră k sunt cuprinse între cel mai mic și cel mai mare număr cu proprietatea că are ultima cifră egală cu k. Programul citește de la tastatură cifra k și apoi numere naturale distincte până la apariția lui zero, stocate într-o listă. În funcția citeste_k(), cifra k este citită și verificată dacă este între 0 și 9. În caz contrar, se afișează un mesaj de eroare. În funcția citeste_valori(), numerele sunt citite și verificate dacă sunt între 0 și 1000000 și adăugate în listă. În cazul în care se introduce 0, citirea se încheie și nu se adaugă în listă. Dacă se introduce o valoare care nu respectă restricțiile, se afișează un mesaj de eroare.&lt;br /&gt;
&lt;br /&gt;
 În funcția numere_cu_ultima_cifra_k(), lista de numere este parcursă și se generează o altă listă care conține doar numerele cu ultima cifră egală cu cifra k. Dacă nu există niciun număr cu această proprietate, se afișează &amp;quot;NU EXISTA&amp;quot;. Altfel, se găsesc cel mai mic și cel mai mare număr din lista numere_cu_k și se numără câte dintre numerele inițiale se încadrează între aceste valori și au ultima cifră egală cu k. Rezultatul este afișat la consolă.&lt;/div&gt;</summary>
		<author><name>AndorGiulia</name></author>
	</entry>
</feed>