<?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=MiclausIoana</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=MiclausIoana"/>
	<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/wiki/Special:Contributions/MiclausIoana"/>
	<updated>2026-05-02T11:52:25Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.42.1</generator>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=1424_-_Smartphone&amp;diff=5385</id>
		<title>1424 - Smartphone</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=1424_-_Smartphone&amp;diff=5385"/>
		<updated>2023-04-29T10:56:22Z</updated>

		<summary type="html">&lt;p&gt;MiclausIoana: Pagină nouă: Sursă: [https://www.pbinfo.ro/probleme/1424/smartphone] == Enunt == Andrei este elev în clasa a V-a și își dorește mult un smartphone. Tatăl său știe de acest lucru și s-a gândit să-i facă o bucurie de ziua lui. Așa că a hotărât să-l ducă într-un magazin de telefoane să-și aleagă unul. Fiecare telefon este inscripţionat cu un număr ce reprezintă performanţa acestuia. Cu cât numărul este mai mare, cu atât telefonul este mai bun. Andrei l-a dorit p...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Sursă: [https://www.pbinfo.ro/probleme/1424/smartphone]&lt;br /&gt;
== Enunt ==&lt;br /&gt;
Andrei este elev în clasa a V-a și își dorește mult un smartphone. Tatăl său știe de acest lucru și s-a gândit să-i facă o bucurie de ziua lui. Așa că a hotărât să-l ducă într-un magazin de telefoane să-și aleagă unul.&lt;br /&gt;
Fiecare telefon este inscripţionat cu un număr ce reprezintă performanţa acestuia. Cu cât numărul este mai mare, cu atât telefonul este mai bun. Andrei l-a dorit pe cel mai performant (cu numărul cel mai mare) dar tatăl lui i l-a cumpărat pe al doilea ca performanță.&lt;br /&gt;
== Cerință ==&lt;br /&gt;
Dându-se numărul &#039;&#039;&#039;n&#039;&#039;&#039; de smatphone-uri și performanța fiecăruia, să se determine:&lt;br /&gt;
: 1. Numărul cu care este inscripționat telefonul dorit de Andrei;&lt;br /&gt;
: 2. Numărul cu care este inscripționat telefonul pe care l-a primit Andrei.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Fișierul de intrare &#039;&#039;&#039;smartphone.in&#039;&#039;&#039; conține pe prima linie un număr natural &#039;&#039;&#039;c&#039;&#039;&#039; (&#039;&#039;&#039;1&#039;&#039;&#039; sau &#039;&#039;&#039;2&#039;&#039;&#039;) reprezentând numărul cerinței ce trebuie rezolvată.&lt;br /&gt;
A doua linie conține numărul natural &#039;&#039;&#039;n&#039;&#039;&#039; reprezentând numărul de telefoane din magazin.&lt;br /&gt;
A treia linie conține &#039;&#039;&#039;n&#039;&#039;&#039; valori naturale distincte, separate prin câte un spaţiu, reprezentând performanțele telefoanelor.&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;smartphone.out&#039;&#039;&#039; va conține pe prima linie un singur număr reprezentând răspunsul la cerința citită din fișierul de intrare. Î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 ≤ 10000&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;1 ≤ x ≤ 2000000000&#039;&#039;&#039; (&#039;&#039;&#039;x =&#039;&#039;&#039; numărul inscripționat pe telefon)&lt;br /&gt;
* &#039;&#039;&#039;Pentru c = 1 se va rezolva doar cerința 1. Pentru c = 2 se va rezolva doar cerința 2&#039;&#039;&#039;.&lt;br /&gt;
== Exemple ==&lt;br /&gt;
=== Exemplu 1 ===&lt;br /&gt;
; &#039;&#039;&#039;smartphone.in&#039;&#039;&#039;&lt;br /&gt;
: 1&lt;br /&gt;
: 5&lt;br /&gt;
: 12 345 231 29 100&lt;br /&gt;
; &#039;&#039;&#039;smartphone.out&#039;&#039;&#039;&lt;br /&gt;
: 345&lt;br /&gt;
==== Explicatie ====&lt;br /&gt;
Cerința este 1. Numărul inscripționat pe telefonul dorit de Andrei este &#039;&#039;&#039;345&#039;&#039;&#039;.&lt;br /&gt;
=== Exemplu 2 ===&lt;br /&gt;
; &#039;&#039;&#039;smartphone.in&#039;&#039;&#039;&lt;br /&gt;
: 2&lt;br /&gt;
: 5&lt;br /&gt;
: 12 345 231 29 100&lt;br /&gt;
; &#039;&#039;&#039;smartphone.out&#039;&#039;&#039;&lt;br /&gt;
: 231&lt;br /&gt;
==== Explicatie ====&lt;br /&gt;
Cerința este 2. Numărul inscripționat pe telefonul primit de Andrei este &#039;&#039;&#039;231&#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 citeste_valori():&lt;br /&gt;
    while True:&lt;br /&gt;
        try:&lt;br /&gt;
            with open(&#039;smartphone.in&#039;) as fin:&lt;br /&gt;
                n = int(fin.readline())&lt;br /&gt;
                x = list(map(int, fin.readline().split()))&lt;br /&gt;
                if 1 &amp;lt;= n &amp;lt;= 10000 and all(1 &amp;lt;= xi &amp;lt;= 2000000000 for xi in x):&lt;br /&gt;
                    print(&amp;quot;Datele sunt corecte.&amp;quot;)&lt;br /&gt;
                    with open(&#039;smartphone.out&#039;, &#039;a&#039;) as fout:&lt;br /&gt;
                        fout.write(&amp;quot;Datele sunt corecte.\n&amp;quot;)&lt;br /&gt;
                    return n,x&lt;br /&gt;
                else:&lt;br /&gt;
                    print(&amp;quot;Datele nu sunt conform restricțiilor impuse.&amp;quot;)&lt;br /&gt;
                    with open(&#039;smartphone.out&#039;, &#039;a&#039;) as fout:&lt;br /&gt;
                        fout.write(&amp;quot;Datele nu sunt conform restricțiilor impuse.\n&amp;quot;)&lt;br /&gt;
        except ValueError:&lt;br /&gt;
            print(&amp;quot;Trebuie introduse doar numere întregi.&amp;quot;)&lt;br /&gt;
            with open(&#039;smartphone.out&#039;, &#039;a&#039;) as fout:&lt;br /&gt;
                fout.write(&amp;quot;Trebuie introduse doar numere întregi.\n&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def smartphone(n, x):&lt;br /&gt;
    with open(&#039;smartphone.out&#039;, &#039;a&#039;) as fout:&lt;br /&gt;
        fout.write(&amp;quot;Numarul cu care este inscriptionat telefonul dorit de Andrei este: &amp;quot; + str(max(x)) + &amp;quot;\n&amp;quot;)&lt;br /&gt;
        if len(x) &amp;gt;= 2:&lt;br /&gt;
            fout.write(&amp;quot;Numarul cu care este inscriptionat telefonul pe care l-a primit Andrei este: &amp;quot; + str(sorted(x, reverse=True)[1]) + &amp;quot;\n&amp;quot;)&lt;br /&gt;
        else:&lt;br /&gt;
            fout.write(&amp;quot;Nu exista un al doilea numar inscriptat pe un smartphone.\n&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
if _name_ == &#039;_main_&#039;:&lt;br /&gt;
    n, x = citeste_valori()&lt;br /&gt;
    smartphone(n, x)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
== Explicatie ==&lt;br /&gt;
 Acest cod implementează două funcții, citeste_valori() și smartphone(n, x). Funcția citeste_valori() deschide fișierul &amp;quot;smartphone.in&amp;quot; și încearcă să citească două linii din el: prima linie conține un număr întreg n, iar a doua linie conține n numere întregi separate prin spațiu, stocate într-o listă x. Această funcție validează dacă datele citite sunt conforme cu restricțiile impuse (n trebuie să fie între 1 și 10000, iar fiecare element din lista x trebuie să fie între 1 și 2000000000), și afișează un mesaj corespunzător în cazul în care datele nu sunt conforme. Dacă datele sunt conforme, funcția returnează n și x.&lt;br /&gt;
&lt;br /&gt;
 Funcția smartphone(n, x) primește n și x ca argumente și deschide fișierul &amp;quot;smartphone.out&amp;quot;. Funcția scrie în acest fișier numărul cel mai mare din lista x (reprezentând numărul cu care este inscripționat telefonul dorit de Andrei), și, dacă lista x are cel puțin două elemente, al doilea cel mai mare număr din listă (reprezentând numărul cu care este inscripționat telefonul pe care l-a primit Andrei). Dacă lista x are un singur element, funcția afișează un mesaj corespunzător în fișierul de ieșire.&lt;br /&gt;
&lt;br /&gt;
 În blocul if _name_ == &#039;_main_&#039;:, se apelează funcția citeste_valori() pentru a citi datele din fișierul &amp;quot;smartphone.in&amp;quot;, apoi se apelează funcția smartphone(n, x) pentru a scrie rezultatele în fișierul &amp;quot;smartphone.out&amp;quot;.&lt;/div&gt;</summary>
		<author><name>MiclausIoana</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=0953_-_DeeDee&amp;diff=5383</id>
		<title>0953 - DeeDee</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=0953_-_DeeDee&amp;diff=5383"/>
		<updated>2023-04-29T10:49:35Z</updated>

		<summary type="html">&lt;p&gt;MiclausIoana: Pagină nouă: Sursă: [https://www.pbinfo.ro/probleme/953/deedee] == Enunt == Deedee a descoperit în parc un şotron triunghiular construit din &amp;#039;&amp;#039;&amp;#039;N*(N+1)/2&amp;#039;&amp;#039;&amp;#039; dale de piatră dintre care &amp;#039;&amp;#039;&amp;#039;K&amp;#039;&amp;#039;&amp;#039; au culoarea gri iar restul sunt albe. Dalele sunt numerotate cu numerele distincte de la &amp;#039;&amp;#039;&amp;#039;1&amp;#039;&amp;#039;&amp;#039; la &amp;#039;&amp;#039;&amp;#039;N*(N+1)/2&amp;#039;&amp;#039;&amp;#039; şi sunt dispuse pe &amp;#039;&amp;#039;&amp;#039;N&amp;#039;&amp;#039;&amp;#039; rânduri, una lângă alta, ca în desenul de mai jos realizat pentru un şotron cu &amp;#039;&amp;#039;&amp;#039;N=6&amp;#039;&amp;#039;&amp;#039; şi &amp;#039;&amp;#039;&amp;#039;K=5&amp;#039;&amp;#039;&amp;#039;, astfel: : -pe rândul &amp;#039;&amp;#039;&amp;#039;1&amp;#039;&amp;#039;&amp;#039;, dala cu numă...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Sursă: [https://www.pbinfo.ro/probleme/953/deedee]&lt;br /&gt;
== Enunt ==&lt;br /&gt;
Deedee a descoperit în parc un şotron triunghiular construit din &#039;&#039;&#039;N*(N+1)/2&#039;&#039;&#039; dale de piatră dintre care &#039;&#039;&#039;K&#039;&#039;&#039; au culoarea gri iar restul sunt albe. Dalele sunt numerotate cu numerele distincte de la &#039;&#039;&#039;1&#039;&#039;&#039; la &#039;&#039;&#039;N*(N+1)/2&#039;&#039;&#039; şi sunt dispuse pe &#039;&#039;&#039;N&#039;&#039;&#039; rânduri, una lângă alta, ca în desenul de mai jos realizat pentru un şotron cu &#039;&#039;&#039;N=6&#039;&#039;&#039; şi &#039;&#039;&#039;K=5&#039;&#039;&#039;, astfel:&lt;br /&gt;
: -pe rândul &#039;&#039;&#039;1&#039;&#039;&#039;, dala cu numărul &#039;&#039;&#039;1&#039;&#039;&#039;&lt;br /&gt;
: -pe rândul &#039;&#039;&#039;2&#039;&#039;&#039;, dalele cu numerele: &#039;&#039;&#039;2&#039;&#039;&#039; şi &#039;&#039;&#039;3&#039;&#039;&#039;&lt;br /&gt;
: -pe rândul &#039;&#039;&#039;3, dalele cu numerele: &#039;&#039;&#039;4&#039;&#039;&#039;, &#039;&#039;&#039;5&#039;&#039;&#039; şi &#039;&#039;&#039;6&#039;&#039;&#039;&lt;br /&gt;
: …………..&lt;br /&gt;
: -pe rândul &#039;&#039;&#039;N&#039;&#039;&#039;, dalele cu numerele: &#039;&#039;&#039;N*(N-1)/2+1, N*(N-1)/2+2 , … , N*(N+1)/2&#039;&#039;&#039;&lt;br /&gt;
Pornind de pe dala iniţială, adică dala cu numărul &#039;&#039;&#039;1&#039;&#039;&#039;, sărind din dală în dală, Deedee trebuie să ajungă pe dala finală, adică dala cu numărul &#039;&#039;&#039;N*(N+1)/2&#039;&#039;&#039;, respectând regula următoare: de pe dala curentă, numerotată cu &#039;&#039;&#039;X&#039;&#039;&#039; şi situată pe rândul &#039;&#039;&#039;Y&#039;&#039;&#039;, ea poate să sară doar pe o dală albă situată pe rândul &#039;&#039;&#039;Y&#039;&#039;&#039; şi numerotată cu &#039;&#039;&#039;X+1&#039;&#039;&#039; (dacă aceasta există) sau pe rândul &#039;&#039;&#039;Y+1&#039;&#039;&#039; pe aceeaşi coloană cu dala curentă.&lt;br /&gt;
Nefiind o bună sportivă, Deedee vrea să descopere mai întâi dalele pe care ar trebui să sară pornind de la dala iniţială astfel încât să execute un număr minim de sărituri până la dala finală, respectând la fiecare săritură regula.&lt;br /&gt;
== Cerință ==&lt;br /&gt;
Scrieţi un program care să determine:&lt;br /&gt;
: a) numărul &#039;&#039;&#039;R&#039;&#039;&#039; al rândului care conţine cele mai multe dale gri, iar dacă sunt mai multe rânduri cu această proprietate atunci &#039;&#039;&#039;R&#039;&#039;&#039; va fi egal cu numărul cel mai mic al unui astfel de rând;&lt;br /&gt;
: b) numărul minim &#039;&#039;&#039;D&#039;&#039;&#039; de dale pe care trebuie să sară Deedee pornind de la dala iniţială astfel încât să ajungă pe dala finală, respectând la fiecare săritură regula din enunţ.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Programul citește de la tastatură numerele naturale &#039;&#039;&#039;N&#039;&#039;&#039; şi &#039;&#039;&#039;K&#039;&#039;&#039;, cu semnificaţia din enunţ, apoi &#039;&#039;&#039;K&#039;&#039;&#039; numere naturale nenule, ordonate strict crescător, reprezentând numerele dalelor de culoare gri din şotron.&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;R&#039;&#039;&#039; și &#039;&#039;&#039;D&#039;&#039;&#039;, în această ordine. Î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;3 ≤ N  ≤ 100000; 1 ≤ K &amp;lt; 100000&#039;&#039;&#039;;&lt;br /&gt;
* dalele au formă pătratică, cu latura de aceeaşi lungime&lt;br /&gt;
* dala iniţială şi dala finală sunt de culoare albă&lt;br /&gt;
* pentru datele de test există întotdeauna soluţie&lt;br /&gt;
* pentru rezolvarea corectă a cerinţei a) se acordă &#039;&#039;&#039;60%&#039;&#039;&#039; din punctaj, iar pentru rezolvarea corectă a ambelor cerinţe se acordă &#039;&#039;&#039;100%&#039;&#039;&#039; din punctaj&lt;br /&gt;
== Exemple ==&lt;br /&gt;
=== Exemplu 1 ===&lt;br /&gt;
; Date de intrare&lt;br /&gt;
: 6 5 &lt;br /&gt;
: 4 6 7 18 19&lt;br /&gt;
; Date de ieșire&lt;br /&gt;
: 3 &lt;br /&gt;
: 10&lt;br /&gt;
==== Explicatie ====&lt;br /&gt;
Rândurile &#039;&#039;&#039;3&#039;&#039;&#039; şi &#039;&#039;&#039;6&#039;&#039;&#039; au numărul maxim de dale gri (&#039;&#039;&#039;2&#039;&#039;&#039;), deci &#039;&#039;&#039;R=3&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Deedee poate ajunge pe dala finală efectuând minimum &#039;&#039;&#039;D=10&#039;&#039;&#039; sărituri. De exemplu, poate urma traseul:&lt;br /&gt;
&#039;&#039;&#039;1 → 2 → 3 → 5 → 8 → 9 → 13 → 14 → 15 → 20 → 21&#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;
import math&lt;br /&gt;
&lt;br /&gt;
def citeste_n_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;
            k = int(input(&amp;quot;Introduceti numarul de valori: &amp;quot;))&lt;br /&gt;
            if 3 &amp;lt;= n &amp;lt;= 100000 and 1 &amp;lt;= k &amp;lt;= 100000:&lt;br /&gt;
                print(&amp;quot;Datele sunt corecte.&amp;quot;)&lt;br /&gt;
                return n, 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(k):&lt;br /&gt;
    valori = []&lt;br /&gt;
    for i in range(k):&lt;br /&gt;
        while True:&lt;br /&gt;
            try:&lt;br /&gt;
                valoare = int(input(&amp;quot;Introduceti o valoare: &amp;quot;))&lt;br /&gt;
                if 1 &amp;lt;= valoare &amp;lt;= 1000000000:&lt;br /&gt;
                    print(&amp;quot;Datele sunt corecte.&amp;quot;)&lt;br /&gt;
                    valori.append(valoare)&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 intregi cu cel mult 10 cifre.&amp;quot;)&lt;br /&gt;
    return valori&lt;br /&gt;
&lt;br /&gt;
def deedee(valori, n):&lt;br /&gt;
    r = 0&lt;br /&gt;
    d = 0&lt;br /&gt;
    ultimul_gri = 0&lt;br /&gt;
    gri_in_rand = 0&lt;br /&gt;
    for i in range(len(valori)):&lt;br /&gt;
        row = math.ceil((math.sqrt(8*valori[i] + 1) - 1)/2)&lt;br /&gt;
        if row &amp;gt; r:&lt;br /&gt;
            r = row&lt;br /&gt;
            gri_in_rand = 1&lt;br /&gt;
        elif row == r:&lt;br /&gt;
            gri_in_rand += 1&lt;br /&gt;
        if valori[i] == 1:&lt;br /&gt;
            ultimul_gri = 1&lt;br /&gt;
        else:&lt;br /&gt;
            if valori[i] == ultimul_gri + 1 or valori[i] == ultimul_gri + r + 1:&lt;br /&gt;
                ultimul_gri = valori[i]&lt;br /&gt;
            else:&lt;br /&gt;
                salturi = math.ceil((valori[i] - ultimul_gri) / r)&lt;br /&gt;
                ultimul_gri += salturi * r&lt;br /&gt;
                if valori[i] == ultimul_gri + 1 or valori[i] == ultimul_gri + r + 1:&lt;br /&gt;
                    ultimul_gri = valori[i]&lt;br /&gt;
                else: ultimul_gri+= r&lt;br /&gt;
                d += salturi + 1&lt;br /&gt;
    d += math.ceil((n*(n+1)//2 - ultimul_gri) / r)&lt;br /&gt;
    return r, d&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if _name_ == &#039;_main_&#039;:&lt;br /&gt;
    n, k = citeste_n_k()&lt;br /&gt;
    valori = citeste_valori(k)&lt;br /&gt;
    x, y = deedee(valori, n)&lt;br /&gt;
    print(&amp;quot;Valorile cerute sunt:&amp;quot;, x, &amp;quot;și&amp;quot;, y)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
== Explicatie ==&lt;br /&gt;
 Acesta este un program Python care primește două numere de la utilizator - n și k - și o listă de k valori, apoi calculează două valori - r și d - și le afișează. &lt;br /&gt;
 Valoarea r reprezintă numărul de griuri necesare pentru a acoperi toată grilă de dimensiune n x n, iar d reprezintă numărul de salturi necesare pentru a trece de la un gri la altul în ordinea dată de valorile introduse în listă.&lt;br /&gt;
&lt;br /&gt;
 Funcția &amp;quot;citeste_n_k()&amp;quot; primește de la utilizator valorile n și k și le validează, astfel încât n să fie între 3 și 100000, iar k între 1 și 100000. Dacă valorile nu sunt valide, se va cere reintroducerea lor până la introducerea unor valori valide.&lt;br /&gt;
&lt;br /&gt;
 Funcția &amp;quot;citeste_valori(k)&amp;quot; primește o valoare k și cere utilizatorului să introducă k valori, pe care le validează. Fiecare valoare trebuie să fie între 1 și 1000000000 și să aibă cel mult 10 cifre. Dacă valorile nu sunt valide, se va cere reintroducerea lor până la introducerea unor valori valide.&lt;br /&gt;
 &lt;br /&gt;
 Funcția &amp;quot;deedee(valori, n)&amp;quot; primește o listă de valori și o valoare n și calculează r și d. Pentru fiecare valoare din listă, se calculează pe ce rând din grilă se află griul cu acea valoare (utilizând formula pentru calculul rândului unui gri dat în funcție de valoarea acestuia). Pe măsură ce se calculează rândurile, se actualizează valoarea lui r și numărul de griuri în același rând. Se calculează apoi numărul de salturi necesare pentru a ajunge la următorul gri în ordinea dată de valorile din listă. Dacă se găsește un salt către un gri care nu urmează în mod corect după ultimul gri, atunci se adaugă încă un salt pentru a ajunge la următorul gri corect. În cele din urmă, se calculează numărul de salturi necesare pentru a ajunge la toate griurile care nu au fost deja parcurse în lista de valori introdusă.&lt;br /&gt;
&lt;br /&gt;
 Funcția &amp;quot;main&amp;quot; apelează celelalte funcții pentru a obține valorile r și d și le afișează utilizatorului.&lt;/div&gt;</summary>
		<author><name>MiclausIoana</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=2269_-_Maxim_Par&amp;diff=5205</id>
		<title>2269 - Maxim Par</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=2269_-_Maxim_Par&amp;diff=5205"/>
		<updated>2023-04-28T13:11:06Z</updated>

		<summary type="html">&lt;p&gt;MiclausIoana: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Sursă: [https://www.pbinfo.ro/probleme/2269/maximpar]&lt;br /&gt;
== Cerință ==&lt;br /&gt;
Se dau n numere naturale. Determinați cel mai mare număr par introdus și numărul său de apariții.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Fișierul de intrare &#039;&#039;&#039;maximpar.in&#039;&#039;&#039; conține pe prima linie numărul n, iar pe a doua linie n numere naturale separate prin spații.&lt;br /&gt;
== Date de ieșire == &lt;br /&gt;
Fișierul de ieșire &#039;&#039;&#039;maximpar.out&#039;&#039;&#039; va conține pe prima linie numerele &#039;&#039;&#039;maxim&#039;&#039;&#039; si &#039;&#039;&#039;apare&#039;&#039;&#039;, reprezentând maximul par dintre numerele de pe a doua linie a fișierului de intrare și aparițiile acestuia, dacă fișierul de intrare conține cel puțin un număr par, respectiv &#039;&#039;&#039;-1&#039;&#039;&#039;, în caz contrar.&lt;br /&gt;
== Restricții și precizări ==&lt;br /&gt;
* 1 ≤ &#039;&#039;&#039;n&#039;&#039;&#039; ≤ 200&lt;br /&gt;
* numerele de pe a doua linie a fișierului de intrare vor fi mai mici decât &#039;&#039;&#039;1.000&#039;&#039;&#039;&lt;br /&gt;
== Exemplu ==&lt;br /&gt;
; &#039;&#039;&#039;maximpar.in&#039;&#039;&#039;&lt;br /&gt;
: 6&lt;br /&gt;
: 9 6 9 8 9 8&lt;br /&gt;
; &#039;&#039;&#039;maximpar.out&#039;&#039;&#039;&lt;br /&gt;
: 8 2&lt;br /&gt;
== Explicație ==&lt;br /&gt;
În fișierul de intrare sunt &#039;&#039;&#039;6&#039;&#039;&#039; numere, cel mai mare număr par este &#039;&#039;&#039;8&#039;&#039;&#039; și apare de &#039;&#039;&#039;2&#039;&#039;&#039; ori.&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():&lt;br /&gt;
    while True:&lt;br /&gt;
        try:&lt;br /&gt;
            with open(&amp;quot;maximpar.in&amp;quot;) as fin:&lt;br /&gt;
                n = int(fin.readline())&lt;br /&gt;
                if n &amp;gt;= 1 and n &amp;lt;= 200:&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 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;
def citeste_valori(n):&lt;br /&gt;
    valori = []&lt;br /&gt;
    with open(&amp;quot;maximpar.in&amp;quot;) as fin:&lt;br /&gt;
        fin.readline() # skip first line&lt;br /&gt;
        for i in range(n):&lt;br /&gt;
            while True:&lt;br /&gt;
                try:&lt;br /&gt;
                    valoare = int(fin.readline())&lt;br /&gt;
                    if valoare &amp;lt;= 1000:&lt;br /&gt;
                        print(&amp;quot;Datele sunt corecte.&amp;quot;)&lt;br /&gt;
                        valori.append(valoare)&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 naturale.&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    return valori&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def numere_maxime(valori):&lt;br /&gt;
    maxi, apare = -1, 0&lt;br /&gt;
    for valoare in valori:&lt;br /&gt;
        if valoare % 2 == 0:&lt;br /&gt;
            if valoare &amp;gt; maxi:&lt;br /&gt;
                maxi = valoare&lt;br /&gt;
                apare = 1&lt;br /&gt;
            elif valoare == maxi:&lt;br /&gt;
                apare += 1&lt;br /&gt;
    return maxi, apare&lt;br /&gt;
&lt;br /&gt;
def scrie_rezultat(maxi, apare):&lt;br /&gt;
    with open(&amp;quot;maximpar.out&amp;quot;, &amp;quot;w&amp;quot;) as fout:&lt;br /&gt;
        if apare != 0:&lt;br /&gt;
            fout.write(f&amp;quot;{maxi} {apare}&amp;quot;)&lt;br /&gt;
        else:&lt;br /&gt;
            fout.write(&amp;quot;-1&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
if _name_ == &#039;_main_&#039;:&lt;br /&gt;
    n = citeste_n()&lt;br /&gt;
    valori = citeste_valori(n)&lt;br /&gt;
    x, y = numere_maxime(valori)&lt;br /&gt;
    print(&amp;quot;Cele mai mari numere sunt:&amp;quot;, x, &amp;quot;și apare de&amp;quot;, y, &amp;quot;ori&amp;quot;)&lt;br /&gt;
    scrie_rezultat(x, y)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
== Explicatie ==&lt;br /&gt;
 Acest cod este o implementare în Python a unei probleme de programare. Scopul problemei este de a citi un număr n și o listă de n numere dintr-un fișier de intrare și de a găsi cel mai mare număr par din listă și numărul său de apariții. Apoi, cele două valori găsite trebuie scrise într-un fișier de ieșire.&lt;br /&gt;
&lt;br /&gt;
 Funcția citeste_n() citește primul număr din fișierul de intrare, care este numărul n de numere care urmează. &lt;br /&gt;
 Dacă acesta se încadrează în limitele cerute, funcția returnează n, altfel afișează un mesaj de eroare și încearcă din nou să citească n. Această funcție este apelată în funcția principală (if _name_ == &#039;_main_&#039;:) pentru a obține numărul de elemente din listă.&lt;br /&gt;
&lt;br /&gt;
 Funcția citeste_valori(n) citește cele n numere din fișierul de intrare și verifică dacă fiecare valoare este mai mică sau egală cu 1000. Dacă o valoare este validă, aceasta este adăugată la lista valori, iar dacă nu, se afișează un mesaj de eroare. Funcția returnează lista de valori citite.&lt;br /&gt;
&lt;br /&gt;
 Funcția numere_maxime(valori) găsește cel mai mare număr par din lista valori și numărul său de apariții. &lt;br /&gt;
 Variabilele maxi și apare sunt inițializate cu -1 și 0, respectiv. Pentru fiecare valoare din lista valori, dacă aceasta este un număr par și mai mare decât valoarea curentă a lui maxi, atunci maxi este actualizat cu această valoare și apare este resetat la 1. Dacă valoarea este egală cu maxi, apare este incrementat cu 1. La final, funcția returnează cele două valori găsite.&lt;br /&gt;
&lt;br /&gt;
 Funcția scrie_rezultat(maxi, apare) scrie cele două valori în fișierul de ieșire &amp;quot;maximpar.out&amp;quot;. Dacă valoarea apare este diferită de 0, atunci se scriu cele două valori separate printr-un spațiu. Altfel, se scrie -1.&lt;br /&gt;
&lt;br /&gt;
 În funcția principală (if _name_ == &#039;_main_&#039;:), se apelează mai întâi citeste_n() pentru a obține numărul de elemente din listă și citeste_valori(n) pentru a citi lista de valori. Apoi, se apelează numere_maxime(valori) pentru a găsi cele mai mari numere și se afișează pe ecran. În final, se apelează funcția scrie_rezultat(maxi, apare) pentru a scrie cele două valori în fișierul de ieșire.&lt;/div&gt;</summary>
		<author><name>MiclausIoana</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=3736_-_Sir_15&amp;diff=5204</id>
		<title>3736 - Sir 15</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=3736_-_Sir_15&amp;diff=5204"/>
		<updated>2023-04-28T13:08:29Z</updated>

		<summary type="html">&lt;p&gt;MiclausIoana: Pagină nouă: Sursă: [https://www.pbinfo.ro/probleme/3736/sir15] == Enunt == Se dă un șir format din &amp;#039;&amp;#039;&amp;#039;N&amp;#039;&amp;#039;&amp;#039; numere naturale nenule. Elementele șirului sunt numerotate de la stânga la dreapta începând cu poziția &amp;#039;&amp;#039;&amp;#039;1&amp;#039;&amp;#039;&amp;#039;. == Cerință == Scrieți un program care să determine răspunsul pentru întrebări de următoarele tipuri: 1. Care este cea mai din stânga poziție care conține o valoare strict mai mare decât toate cele din dreapta sa? – întrebare de tipul 1 2. Care sunt p...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Sursă: [https://www.pbinfo.ro/probleme/3736/sir15]&lt;br /&gt;
== Enunt ==&lt;br /&gt;
Se dă un șir format din &#039;&#039;&#039;N&#039;&#039;&#039; numere naturale nenule. Elementele șirului sunt numerotate de la stânga la dreapta începând cu poziția &#039;&#039;&#039;1&#039;&#039;&#039;.&lt;br /&gt;
== Cerință ==&lt;br /&gt;
Scrieți un program care să determine răspunsul pentru întrebări de următoarele tipuri:&lt;br /&gt;
1. Care este cea mai din stânga poziție care conține o valoare strict mai mare decât toate cele din dreapta sa? – întrebare de tipul 1&lt;br /&gt;
2. Care sunt pozițiile care conțin valori strict mai mari decât toate cele din stânga lor? – întrebare de tipul 2&lt;br /&gt;
3. Dacă fiecărui element aflat între prima și ultima apariție a maximului i-am mări valoarea pentru a ajunge egal cu maximul, care este suma totală a valorilor adăugate? – întrebare de tipul 3&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Fișierul de intrare &#039;&#039;&#039;sir.in&#039;&#039;&#039; conține pe prima linie un număr &#039;&#039;&#039;C&#039;&#039;&#039; (care poate fi &#039;&#039;&#039;1, 2 sau 3&#039;&#039;&#039;), indicând tipul întrebării. Pe linia a doua se află un număr natural &#039;&#039;&#039;N&#039;&#039;&#039;, reprezentând numărul de elemente din șir. Pe a treia linie a fișierului de intrare se află &#039;&#039;&#039;N&#039;&#039;&#039; numere naturale, reprezentând elementele șirului, date de la stânga la dreapta (cel mai din stânga are poziția &#039;&#039;&#039;1&#039;&#039;&#039; și cel mai din dreapta are poziția &#039;&#039;&#039;N&#039;&#039;&#039;). Numerele de pe această linie sunt separate prin câte un spațiu.&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;. Dacă &#039;&#039;&#039;C = 1&#039;&#039;&#039;, fișierul de ieșire &#039;&#039;&#039;sir.out&#039;&#039;&#039; trebuie să conțină un număr natural ce reprezintă răspunsul la o întrebare de tipul &#039;&#039;&#039;1&#039;&#039;&#039;. Dacă &#039;&#039;&#039;C = 2&#039;&#039;&#039;, fișierul de ieșire trebuie să conțină, separați prin câte un spațiu și în ordine crescătoare, indicii determinați ca răspuns la o întrebare de tipul &#039;&#039;&#039;2&#039;&#039;&#039;. Dacă &#039;&#039;&#039;C = 3&#039;&#039;&#039;, fișierul de ieșire trebuie să conțină un număr ce reprezintă răspunsul la o întrebare de tipul &#039;&#039;&#039;3&#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;1 ≤ C ≤ 3&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;1 ≤ N ≤ 100.000&#039;&#039;&#039; &lt;br /&gt;
* Numerele din șirul dat sunt cuprinse între 1 și 10.000, inclusiv.&lt;br /&gt;
* Pentru teste în valoare de 24 de puncte avem &#039;&#039;&#039;C = 1&#039;&#039;&#039;.&lt;br /&gt;
* Pentru teste în valoare de 32 de puncte avem &#039;&#039;&#039;C = 2&#039;&#039;&#039;.&lt;br /&gt;
* Pentru teste în valoare de 44 de puncte avem &#039;&#039;&#039;C = 3&#039;&#039;&#039;.&lt;br /&gt;
== Exemple ==&lt;br /&gt;
=== Exemplu 1 ===&lt;br /&gt;
; &#039;&#039;&#039;sir.in&#039;&#039;&#039;&lt;br /&gt;
: 1&lt;br /&gt;
: 7&lt;br /&gt;
: 3 2 2 5 3 5 4&lt;br /&gt;
; &#039;&#039;&#039;sir.out&#039;&#039;&#039;&lt;br /&gt;
: 6&lt;br /&gt;
==== Explicatie ====&lt;br /&gt;
Cea mai din stânga poziție a unei valori care este mai mare decât toate cele din dreapta sa este &#039;&#039;&#039;6&#039;&#039;&#039; (acolo unde se află valoarea &#039;&#039;&#039;5&#039;&#039;&#039;)&lt;br /&gt;
=== Exemplu 2 ===&lt;br /&gt;
; &#039;&#039;&#039;sir.in&#039;&#039;&#039;&lt;br /&gt;
: 2&lt;br /&gt;
: 7&lt;br /&gt;
: 3 2 2 5 3 5 4&lt;br /&gt;
; &#039;&#039;&#039;sir.out&#039;&#039;&#039;&lt;br /&gt;
: 1 4&lt;br /&gt;
==== Explicatie ====&lt;br /&gt;
&#039;&#039;&#039;1&#039;&#039;&#039; și &#039;&#039;&#039;4&#039;&#039;&#039; sunt pozițiile unde se află valori mai mari decât toate cele din stânga lor.&lt;br /&gt;
=== Exemplu 3 ===&lt;br /&gt;
; &#039;&#039;&#039;sir.in&#039;&#039;&#039;&lt;br /&gt;
: 3&lt;br /&gt;
: 8&lt;br /&gt;
: 3 2 2 5 3 1 5 4&lt;br /&gt;
; &#039;&#039;&#039;sir.out&#039;&#039;&#039;&lt;br /&gt;
: 6&lt;br /&gt;
==== Explicatie ====&lt;br /&gt;
Maximul fiind &#039;&#039;&#039;5&#039;&#039;&#039;, conform explicației de la întrebarea de tipul &#039;&#039;&#039;3&#039;&#039;&#039;, trebuie mărite două elemente pentru a ajunge egale cu &#039;&#039;&#039;5&#039;&#039;&#039;. Acestea sunt cel aflat pe poziția &#039;&#039;&#039;5&#039;&#039;&#039; (de mărit cu &#039;&#039;&#039;2&#039;&#039;&#039;) precum și cel de pe poziția &#039;&#039;&#039;6&#039;&#039;&#039; (de mărit cu&#039;&#039;&#039;4&#039;&#039;&#039;). Suma valorilor cu care avem de mărit este &#039;&#039;&#039;2 + 4 = 6&#039;&#039;&#039;.&lt;br /&gt;
=== Exemplu 4 ===&lt;br /&gt;
; &#039;&#039;&#039;sir.in&#039;&#039;&#039;&lt;br /&gt;
: 3&lt;br /&gt;
: 5&lt;br /&gt;
: 3 2 7 5 3&lt;br /&gt;
; &#039;&#039;&#039;sir.out&#039;&#039;&#039;&lt;br /&gt;
: 0&lt;br /&gt;
==== Explicatie ====&lt;br /&gt;
Maximul este &#039;&#039;&#039;7&#039;&#039;&#039; și apare o singură dată, deci nu se mai mărește nicio valoare.&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():&lt;br /&gt;
    while True:&lt;br /&gt;
        try:&lt;br /&gt;
            with open(&amp;quot;sir.in&amp;quot;) as fin:&lt;br /&gt;
                c = int(fin.readline().strip())&lt;br /&gt;
                n = int(fin.readline().strip())&lt;br /&gt;
                if 1 &amp;lt;= c &amp;lt;= 3 and 1 &amp;lt;= n &amp;lt;= 100000:&lt;br /&gt;
                    print(&amp;quot;Datele sunt corecte.&amp;quot;)&lt;br /&gt;
                    return c, n&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_valori(n):&lt;br /&gt;
    valori = []&lt;br /&gt;
    with open(&amp;quot;sir.in&amp;quot;) as fin:&lt;br /&gt;
        fin.readline()&lt;br /&gt;
        fin.readline()&lt;br /&gt;
        for line in fin:&lt;br /&gt;
            for valoare in line.split():&lt;br /&gt;
                try:&lt;br /&gt;
                    valoare = int(valoare)&lt;br /&gt;
                    if valoare &amp;gt; 1 and valoare &amp;lt;= 10000:&lt;br /&gt;
                        print(&amp;quot;Datele sunt corecte.&amp;quot;)&lt;br /&gt;
                        valori.append(valoare)&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 naturale cu mai putin de 9 cifre.&amp;quot;)&lt;br /&gt;
    return valori&lt;br /&gt;
&lt;br /&gt;
def sir(c, n, valori):&lt;br /&gt;
    # Cerinta 1&lt;br /&gt;
    if c == 1:&lt;br /&gt;
        max_val = valori[0]&lt;br /&gt;
        max_pos = 0&lt;br /&gt;
        ans = -1&lt;br /&gt;
        for i in range(1, n):&lt;br /&gt;
            if valori[i] &amp;gt; max_val:&lt;br /&gt;
                max_val = valori[i]&lt;br /&gt;
                max_pos = i&lt;br /&gt;
            elif valori[i] &amp;lt; max_val and i &amp;gt; max_pos:&lt;br /&gt;
                ans = max_pos + 1&lt;br /&gt;
                break&lt;br /&gt;
        with open(&amp;quot;sir.out&amp;quot;, &amp;quot;w&amp;quot;) as fout:&lt;br /&gt;
            fout.write(str(ans))&lt;br /&gt;
&lt;br /&gt;
    # Cerinta 2&lt;br /&gt;
    elif c == 2:&lt;br /&gt;
        max_val = valori[0]&lt;br /&gt;
        ans = []&lt;br /&gt;
        for i in range(1, n):&lt;br /&gt;
            if valori[i] &amp;gt; max_val:&lt;br /&gt;
                max_val = valori[i]&lt;br /&gt;
            elif valori[i] &amp;lt; max_val and i &amp;gt; 1:&lt;br /&gt;
                ans.append(str(i))&lt;br /&gt;
        with open(&amp;quot;sir.out&amp;quot;, &amp;quot;w&amp;quot;) as fout:&lt;br /&gt;
            fout.write(&amp;quot; &amp;quot;.join(ans))&lt;br /&gt;
&lt;br /&gt;
    # Cerinta 3&lt;br /&gt;
    elif c == 3:&lt;br /&gt;
        max_val = max(valori)&lt;br /&gt;
        max_pos = [i for i, j in enumerate(valori) if j == max_val]&lt;br /&gt;
        ans = 0&lt;br /&gt;
        for i in range(max_pos[0]+1, max_pos[-1]):&lt;br /&gt;
            ans += max_val - valori[i]&lt;br /&gt;
        with open(&amp;quot;sir.out&amp;quot;, &amp;quot;w&amp;quot;) as fout:&lt;br /&gt;
            fout.write(str(ans))&lt;br /&gt;
&lt;br /&gt;
if _name_ == &amp;quot;_main_&amp;quot;:&lt;br /&gt;
    c, n = citeste_n()&lt;br /&gt;
    valori = citeste_valori(n)&lt;br /&gt;
    sir(c, n, valori)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
== Explicatie ==&lt;br /&gt;
 Acest cod este o implementare Python a unui algoritm pentru rezolvarea unei probleme matematice, descrisă în enunțul pe care l-ai furnizat anterior.&lt;br /&gt;
&lt;br /&gt;
 Funcția citeste_n este utilizată pentru a citi valorile necesare din fișierul de intrare, respectiv tipul întrebării c și lungimea șirului n. Această funcție verifică dacă valorile citite sunt valide în conformitate cu restricțiile impuse de cerințe și returnează valorile citite.&lt;br /&gt;
&lt;br /&gt;
 Funcția citeste_valori este utilizată pentru a citi valorile din fișierul de intrare și verifica dacă sunt valide. Aceasta construiește o listă de valori valori și o returnează.&lt;br /&gt;
&lt;br /&gt;
 Funcția sir primește lista de valori valori și implementează algoritmii necesari pentru a determina răspunsurile la întrebările specifice. În funcție de tipul întrebării c, se aplică o strategie diferită pentru a obține rezultatul corect. Rezultatele sunt scrise în fișierul de ieșire &amp;quot;sir.out&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
 În final, se citește tipul întrebării și lista de valori din fișierul de intrare și se apelează funcția sir pentru a obține rezultatul.&lt;/div&gt;</summary>
		<author><name>MiclausIoana</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=2935_-_Robot_5&amp;diff=5202</id>
		<title>2935 - Robot 5</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=2935_-_Robot_5&amp;diff=5202"/>
		<updated>2023-04-28T12:57:05Z</updated>

		<summary type="html">&lt;p&gt;MiclausIoana: Pagină nouă: Sursă: [https://www.pbinfo.ro/probleme/2935/robot5] == Cerință == Pe un cerc se află &amp;#039;&amp;#039;&amp;#039;N&amp;#039;&amp;#039;&amp;#039; poziții, consecutiv așezate și notate cu &amp;#039;&amp;#039;&amp;#039;1,2,3,...,N&amp;#039;&amp;#039;&amp;#039;. Distanțele între oricare două poziții vecine sunt egale cu un pas. Un robot se află inițial la poziția &amp;#039;&amp;#039;&amp;#039;1&amp;#039;&amp;#039;&amp;#039;. În una dintre poziții se află un depozit cu cantitatea &amp;#039;&amp;#039;&amp;#039;X&amp;#039;&amp;#039;&amp;#039; de energie, de la care robotul se poate alimenta. Robotul se poate deplasa pe cerc numai în sensul acelor de ceas. Robotul poate păst...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Sursă: [https://www.pbinfo.ro/probleme/2935/robot5]&lt;br /&gt;
== Cerință ==&lt;br /&gt;
Pe un cerc se află &#039;&#039;&#039;N&#039;&#039;&#039; poziții, consecutiv așezate și notate cu &#039;&#039;&#039;1,2,3,...,N&#039;&#039;&#039;. Distanțele între oricare două poziții vecine sunt egale cu un pas. Un robot se află inițial la poziția &#039;&#039;&#039;1&#039;&#039;&#039;. În una dintre poziții se află un depozit cu cantitatea &#039;&#039;&#039;X&#039;&#039;&#039; de energie, de la care robotul se poate alimenta. Robotul se poate deplasa pe cerc numai în sensul acelor de ceas. Robotul poate păstra o cantitate maximă &#039;&#039;&#039;W&#039;&#039;&#039; de energie, iar inițial este alimentat la capacitate maximă. Pentru fiecare pas robotul cheltuiește o unitate de energie.&lt;br /&gt;
1) Precizându-se numărul de poziții &#039;&#039;&#039;N&#039;&#039;&#039;, energia inițială a robotului &#039;&#039;&#039;W&#039;&#039;&#039;, poziția &#039;&#039;&#039;P&#039;&#039;&#039; a depozitului și cantitatea &#039;&#039;&#039;X&#039;&#039;&#039; de energie existentă inițial în depozit, se cere să se precizeze numărul de pași pe care îi poate efectua robotul.&lt;br /&gt;
2) Precizându-se numărul de poziții &#039;&#039;&#039;N&#039;&#039;&#039;, energia inițială a robotului &#039;&#039;&#039;W&#039;&#039;&#039; și cantitatea &#039;&#039;&#039;X&#039;&#039;&#039; de energie existentă inițial în depozit, se vor determina și afișa numărul maxim de pași pe care îi poate efectua robotul și cea mai mică poziție, convenabil aleasă, unde se poate instala depozitul pentru obținerea numărului maxim de pași.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Pe primul rând al fișierului text &#039;&#039;&#039;robot5.in&#039;&#039;&#039; se află numărul natural &#039;&#039;&#039;C&#039;&#039;&#039; reprezentând cerința.&lt;br /&gt;
Dacă &#039;&#039;&#039;C=1&#039;&#039;&#039;, atunci pe al doilea rând și separate prin câte un spațiu se vor afla scrise numerele naturale &#039;&#039;&#039;N, W, X și P&#039;&#039;&#039;.&lt;br /&gt;
Dacă &#039;&#039;&#039;C=2&#039;&#039;&#039;, atunci pe al doilea rând și separate prin câte un spațiu se vor afla scrise numerele naturale &#039;&#039;&#039;N, W și X&#039;&#039;&#039;.&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;. Dacă &#039;&#039;&#039;C=1&#039;&#039;&#039;, atunci în fișierul de ieșire &#039;&#039;&#039;robot5.out&#039;&#039;&#039; se va scrie un număr natural reprezentând numărul de pași pe care îi poate efectua robotul, iar dacă &#039;&#039;&#039;C=2&#039;&#039;&#039;, atunci în fișierul text &#039;&#039;&#039;robot5.out&#039;&#039;&#039; se vor scrie două numere naturale separate prin spațiu reprezentând numărul maxim de pași pe care îi poate efectua robotul și cea mai mică poziție a depozitului, convenabil aleasă pentru obținerea numărului maxim de pași. Î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;
* Când ajunge la depozit robotul se alimentează cu maximul de energie posibil, iar cantitatea de energie din depozit scade corespunzător.&lt;br /&gt;
* &#039;&#039;&#039;2 ≤ N ≤ 10.000&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;1 ≤ W ≤ 1.000.000.000&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;1 ≤ X ≤ 1.000.000.000&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;1 ≤ P ≤ N&#039;&#039;&#039;&lt;br /&gt;
== Exemple ==&lt;br /&gt;
=== Exemplu 1 ===&lt;br /&gt;
;&#039;&#039;&#039;robot5.in&#039;&#039;&#039;&lt;br /&gt;
: 1&lt;br /&gt;
: 6 3 3 3&lt;br /&gt;
; &#039;&#039;&#039;robot5.out&#039;&#039;&#039;&lt;br /&gt;
: 5&lt;br /&gt;
==== Explicatie ====&lt;br /&gt;
Avem cerința &#039;&#039;&#039;1&#039;&#039;&#039;, câți pași va putea face robotul. El are inițial &#039;&#039;&#039;3&#039;&#039;&#039; unități de energie și se află la poziția &#039;&#039;&#039;1&#039;&#039;&#039; și deci va putea ajunge la poziția &#039;&#039;&#039;3&#039;&#039;&#039; din &#039;&#039;&#039;2&#039;&#039;&#039; pași folosind &#039;&#039;&#039;2&#039;&#039;&#039; unități de energie. Când ajunge la poziția &#039;&#039;&#039;3&#039;&#039;&#039; mai are &#039;&#039;&#039;1&#039;&#039;&#039; unitate de energie și se alimentează din depozit cu &#039;&#039;&#039;2&#039;&#039;&#039; unități, refăcând cele &#039;&#039;&#039;3&#039;&#039;&#039; unități de energie maxim posibile. Mai poate face &#039;&#039;&#039;3&#039;&#039;&#039; pași și astfel ajunge la poziția &#039;&#039;&#039;6&#039;&#039;&#039; cu &#039;&#039;&#039;0&#039;&#039;&#039; unități de energie și se oprește. În total a efectuat &#039;&#039;&#039;5&#039;&#039;&#039; pași.&lt;br /&gt;
=== Exemplu 2 ===&lt;br /&gt;
;&#039;&#039;&#039;robot5.in&#039;&#039;&#039;&lt;br /&gt;
: 2&lt;br /&gt;
: 6 3 3&lt;br /&gt;
; &#039;&#039;&#039;robot5.out&#039;&#039;&#039;&lt;br /&gt;
: 6 4&lt;br /&gt;
==== Explicatie ====&lt;br /&gt;
Depozitul se va instala la poziția &#039;&#039;&#039;4&#039;&#039;&#039; și robotul va putea efectua &#039;&#039;&#039;6&#039;&#039;&#039; pași, care este maxim.&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;
import sys&lt;br /&gt;
def citeste_n():&lt;br /&gt;
    while True:&lt;br /&gt;
        try:&lt;br /&gt;
            with open(&amp;quot;robot5.in&amp;quot;) as fin:&lt;br /&gt;
                c = int(fin.readline().strip())&lt;br /&gt;
                if c &amp;gt;= 1 and c &amp;lt;= 2:&lt;br /&gt;
                    print(&amp;quot;Datele sunt corecte.&amp;quot;)&lt;br /&gt;
                    return c&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_perechi(c):&lt;br /&gt;
    valori = []&lt;br /&gt;
    with open(&amp;quot;robot5.in&amp;quot;) as fin:&lt;br /&gt;
        next(fin)&lt;br /&gt;
        for i in range(1):&lt;br /&gt;
            try:&lt;br /&gt;
                line = fin.readline().strip()&lt;br /&gt;
                if not line:&lt;br /&gt;
                    raise ValueError(&amp;quot;Linia este goala.&amp;quot;)&lt;br /&gt;
                if c == 1:&lt;br /&gt;
                    N, W, X, P = map(int, line.split())&lt;br /&gt;
                    if 2 &amp;lt;= N &amp;lt;= 100000 and 1 &amp;lt;= W &amp;lt;= 1000000000 and 1 &amp;lt;= X &amp;lt;= 1000000000 and 1 &amp;lt;= P &amp;lt;= N:&lt;br /&gt;
                        print(&amp;quot;Datele sunt corecte.&amp;quot;)&lt;br /&gt;
                        valori.append((N, W, X, P))&lt;br /&gt;
                    else:&lt;br /&gt;
                        print(&amp;quot;Datele nu sunt conform restrictiilor impuse.&amp;quot;)&lt;br /&gt;
                else:&lt;br /&gt;
                    N, W, X = map(int, line.split())&lt;br /&gt;
                    if 2 &amp;lt;= N &amp;lt;= 100000 and 1 &amp;lt;= W &amp;lt;= 1000000000 and 1 &amp;lt;= X &amp;lt;= 1000000000:&lt;br /&gt;
                        print(&amp;quot;Datele sunt corecte.&amp;quot;)&lt;br /&gt;
                        valori.append((N, W, X))&lt;br /&gt;
                    else:&lt;br /&gt;
                        print(&amp;quot;Datele nu sunt conform restrictiilor impuse.&amp;quot;)&lt;br /&gt;
            except ValueError as e:&lt;br /&gt;
                print(f&amp;quot;Linia {i+2}: {e}&amp;quot;)&lt;br /&gt;
                valori.append(None)&lt;br /&gt;
&lt;br /&gt;
    return [v for v in valori if v is not None]&lt;br /&gt;
&lt;br /&gt;
def robot5(valori):&lt;br /&gt;
    rezultate = []&lt;br /&gt;
    for valoare in valori:&lt;br /&gt;
        N, W, X = valoare[:3]&lt;br /&gt;
        if len(valoare) == 4:&lt;br /&gt;
            P = valoare[3]&lt;br /&gt;
            distanta = min(N - P + 1, P) - 1&lt;br /&gt;
            pasi = min(distanta, W // X)&lt;br /&gt;
        else:&lt;br /&gt;
            pasi = W // X&lt;br /&gt;
&lt;br /&gt;
        rezultate.append(pasi)&lt;br /&gt;
&lt;br /&gt;
    with open(&amp;quot;robot5.out&amp;quot;, &amp;quot;w&amp;quot;) as fout:&lt;br /&gt;
        for rezultat in rezultate:&lt;br /&gt;
            fout.write(str(rezultat) + &amp;quot;\n&amp;quot;)&lt;br /&gt;
            if len(valoare) == 3:&lt;br /&gt;
                pozitie = -1&lt;br /&gt;
                max_pasi = 0&lt;br /&gt;
                for i in range(1, N + 1):&lt;br /&gt;
                    distanta = min(N - i + 1, i) - 1&lt;br /&gt;
                    pasi = min(distanta, W // X)&lt;br /&gt;
                    if pasi &amp;gt; max_pasi:&lt;br /&gt;
                        max_pasi = pasi&lt;br /&gt;
                        pozitie = i&lt;br /&gt;
                fout.write(str(max_pasi) + &amp;quot; &amp;quot; + str(pozitie) + &amp;quot;\n&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
if _name_ == &#039;_main_&#039;:&lt;br /&gt;
    n = citeste_n()&lt;br /&gt;
    valori = citeste_perechi(n)&lt;br /&gt;
    robot5(valori)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
== Explicatie ==&lt;br /&gt;
 Acest cod are ca scop citirea datelor dintr-un fișier de intrare și apoi procesarea acestora pentru a obține un rezultat, care este scris într-un fișier de ieșire.&lt;br /&gt;
&lt;br /&gt;
 Funcția citeste_n() deschide fișierul &amp;quot;robot5.in&amp;quot; și citește prima linie, care ar trebui să conțină un număr întreg c. Aceasta verifică dacă c este în intervalul [1, 2]. Dacă este, funcția returnează valoarea c, în caz contrar afișează un mesaj de eroare și cere introducerea unui alt număr.&lt;br /&gt;
&lt;br /&gt;
 Funcția citeste_perechi(c) deschide fișierul &amp;quot;robot5.in&amp;quot; și citește linia a doua, apoi procesează fiecare linie pentru a verifica dacă datele sunt conforme cu cerințele problemei. Aceasta verifică dacă valorile citite sunt întregi și se încadrează în intervalele specificate. Dacă valorile sunt conforme, ele sunt adăugate la lista de valori de returnat, altfel este afișat un mesaj de eroare.&lt;br /&gt;
&lt;br /&gt;
 Funcția robot5(valori) primește lista de valori prelucrate și apoi calculează pentru fiecare valoare numărul de pași pe care îi poate face robotul, având în vedere restricțiile din enunțul problemei. Aceasta adaugă rezultatul obținut într-o listă de rezultate.&lt;br /&gt;
&lt;br /&gt;
 În cele din urmă, funcția robot5(valori) scrie fiecare rezultat într-un fișier de ieșire &amp;quot;robot5.out&amp;quot;. Pentru datele care nu conțin parametrul P, se calculează distanța maximă și poziția corespunzătoare acesteia, care sunt scrise și în fișierul de ieșire.&lt;/div&gt;</summary>
		<author><name>MiclausIoana</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=2916_-_Triviador&amp;diff=5200</id>
		<title>2916 - Triviador</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=2916_-_Triviador&amp;diff=5200"/>
		<updated>2023-04-28T12:47:47Z</updated>

		<summary type="html">&lt;p&gt;MiclausIoana: Pagină nouă: Sursă: [https://www.pbinfo.ro/probleme/2916/triviador] == Enunt == Elevii clasei a V-a au fost provocați de către colegii lor de la alte școli să participe la concursul TRIVIADOR. Într-o echipă participă exact trei elevi care trebuie să răspundă la întrebări de cultură generală, obținând punctaje individuale. Punctajul unei echipe este suma punctajelor obținute de către membrii acesteia. == Cerință == Date &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039;, numărul de echipe și punctajele indivi...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Sursă: [https://www.pbinfo.ro/probleme/2916/triviador]&lt;br /&gt;
== Enunt ==&lt;br /&gt;
Elevii clasei a V-a au fost provocați de către colegii lor de la alte școli să participe la concursul TRIVIADOR. Într-o echipă participă exact trei elevi care trebuie să răspundă la întrebări de cultură generală, obținând punctaje individuale. Punctajul unei echipe este suma punctajelor obținute de către membrii acesteia.&lt;br /&gt;
== Cerință ==&lt;br /&gt;
Date &#039;&#039;&#039;n&#039;&#039;&#039;, numărul de echipe și punctajele individuale ale membrilor fiecăreia, să se determine cele mai mari două punctaje diferite, obținute de către echipele participante. Dacă nu există două punctaje diferite, se va afișa mesajul &#039;&#039;&#039;TOTI SUNT CASTIGATORI&#039;&#039;&#039;&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Fișierul de intrare &#039;&#039;&#039;triviador.in&#039;&#039;&#039; conține pe prima linie &#039;&#039;&#039;n&#039;&#039;&#039;, numărul de echipe și pe următoarele &#039;&#039;&#039;n&#039;&#039;&#039; linii, câte trei numere separate printr-un spațiu, reprezentând punctajele celor trei membri ai fiecărei echipe.&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;triviador.out&#039;&#039;&#039; va conţine pe prima linie două valori, în ordine descrescătoare, reprezentând cele mai mari două punctaje diferite obținute de către echipele participante sau mesajul &#039;&#039;&#039;TOTI SUNT CASTIGATORI&#039;&#039;&#039; dacă nu sunt două valori maxime diferite. Î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 ≤ n ≤ 10.000&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;0 ≤ punctaj ≤ 100.000&#039;&#039;&#039;&lt;br /&gt;
== Exemple ==&lt;br /&gt;
=== Exemplu 1 ===&lt;br /&gt;
; &#039;&#039;&#039;triviador.in&#039;&#039;&#039;&lt;br /&gt;
: 5&lt;br /&gt;
: 7 2 5&lt;br /&gt;
: 1 4 2&lt;br /&gt;
: 3 3 7&lt;br /&gt;
: 0 9 5&lt;br /&gt;
: 6 2 2&lt;br /&gt;
; &#039;&#039;&#039;triviador.out&#039;&#039;&#039;&lt;br /&gt;
: 14 13&lt;br /&gt;
==== Explicatie ====&lt;br /&gt;
Echipele obțin următoarele punctaje: &#039;&#039;&#039;14=7+2+5&#039;&#039;&#039;, &#039;&#039;&#039;7=1+4+2&#039;&#039;&#039;, &#039;&#039;&#039;13=3+3+7&#039;&#039;&#039;, &#039;&#039;&#039;14=0+9+5&#039;&#039;&#039;, &#039;&#039;&#039;10=6+2+2&#039;&#039;&#039;. Cele două punctaje maxime diferite sunt &#039;&#039;&#039;14 13&#039;&#039;&#039;.&lt;br /&gt;
=== Exemplu 2 ===&lt;br /&gt;
; &#039;&#039;&#039;triviador.in&#039;&#039;&#039;&lt;br /&gt;
: 3&lt;br /&gt;
: 2 2 3&lt;br /&gt;
: 1 0 6&lt;br /&gt;
: 4 1 2&lt;br /&gt;
; &#039;&#039;&#039;triviador.out&#039;&#039;&#039;&lt;br /&gt;
: TOTI SUNT CASTIGATORI&lt;br /&gt;
==== Explicatie ====&lt;br /&gt;
Echipele obțin punctaje egale cu &#039;&#039;&#039;7&#039;&#039;&#039; și se va afișa &#039;&#039;&#039;TOTI SUNT CASTIGATORI&#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 citeste_n():&lt;br /&gt;
    while True:&lt;br /&gt;
        try:&lt;br /&gt;
            with open(&amp;quot;triviador.in&amp;quot;) as fin:&lt;br /&gt;
                n = int(fin.readline().strip())&lt;br /&gt;
                if n &amp;gt;= 2 and n &amp;lt;= 100000:&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;
        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_perechi(n):&lt;br /&gt;
    valori = []&lt;br /&gt;
    with open(&amp;quot;triviador.in&amp;quot;) as fin:&lt;br /&gt;
        next(fin)&lt;br /&gt;
        for i in range(n):&lt;br /&gt;
            while True:&lt;br /&gt;
                try:&lt;br /&gt;
                    valoare1, valoare2, valoare3 = map(int, fin.readline().strip().split())&lt;br /&gt;
                    if 0 &amp;lt;= valoare1 &amp;lt;= 100000 and 0 &amp;lt;= valoare2 &amp;lt;= 100000 and 0 &amp;lt;= valoare3 &amp;lt;= 100000:&lt;br /&gt;
                        print(&amp;quot;Datele sunt corecte.&amp;quot;)&lt;br /&gt;
                        valori.append((valoare1, valoare2, valoare3))&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;
def triviador(valori):&lt;br /&gt;
    s = []&lt;br /&gt;
    for i in range(len(valori)):&lt;br /&gt;
        x, y, z = valori[i]&lt;br /&gt;
        s.append(x + y + z)&lt;br /&gt;
    s.sort()&lt;br /&gt;
    if len(set(s)) == 1:&lt;br /&gt;
        with open(&amp;quot;triviador.out&amp;quot;, &amp;quot;w&amp;quot;) as fout:&lt;br /&gt;
            fout.write(&amp;quot;TOTI SUNT CASTIGATORI&amp;quot;)&lt;br /&gt;
    else:&lt;br /&gt;
        max1, max2 = 0, 0&lt;br /&gt;
        for i in range(len(s) - 1, -1, -1):&lt;br /&gt;
            if max1 == 0 and max2 == 0:&lt;br /&gt;
                max1 = s[i]&lt;br /&gt;
            elif max1 != 0 and max2 == 0:&lt;br /&gt;
                if s[i] &amp;gt; max2 and s[i] != max1:&lt;br /&gt;
                    max2 = s[i]&lt;br /&gt;
        with open(&amp;quot;triviador.out&amp;quot;, &amp;quot;w&amp;quot;) as fout:&lt;br /&gt;
            fout.write(str(max1) + &amp;quot; &amp;quot; + str(max2))&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if _name_ == &#039;_main_&#039;:&lt;br /&gt;
    try:&lt;br /&gt;
        c, n, k = 1, 0, 0&lt;br /&gt;
        n = citeste_n()&lt;br /&gt;
        valori = citeste_perechi(n)&lt;br /&gt;
        triviador(valori)&lt;br /&gt;
    except (ValueError, IndexError):&lt;br /&gt;
        print(&amp;quot;Eroare: formatul fișierului &#039;triviador.in&#039; este incorect!&amp;quot;)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
== Explicatie ==&lt;br /&gt;
 Acest cod este o implementare a unei soluții pentru o problemă numită &amp;quot;Triviador&amp;quot;. Mai exact, soluția începe prin citirea unui număr întreg dintr-un fișier numit &amp;quot;triviador.in&amp;quot;, reprezentând numărul de perechi de numere ce urmează să fie citite. În cazul în care numărul citit nu se încadrează în intervalul [2, 100000], se va afișa un mesaj de eroare și se va cere introducerea unui nou număr. În caz contrar, se va afișa un mesaj de confirmare și se va continua cu citirea perechilor de numere.&lt;br /&gt;
&lt;br /&gt;
 Pentru citirea perechilor de numere, funcția &amp;quot;citeste_perechi&amp;quot; va itera prin fiecare pereche și va verifica dacă valorile se încadrează în intervalul [0, 100000]. În caz contrar, se va afișa un mesaj de eroare și se va cere introducerea unor noi valori. În cazul în care valorile sunt corecte, se va afișa un mesaj de confirmare și se vor adăuga valorile într-o listă &amp;quot;valori&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
 Funcția &amp;quot;triviador&amp;quot; primește lista &amp;quot;valori&amp;quot; și calculează suma fiecărei perechi de numere. Aceste sume sunt adăugate într-o listă &amp;quot;s&amp;quot;, sortate și verificate dacă toate sunt egale. În caz afirmativ, se va scrie mesajul &amp;quot;TOTI SUNT CASTIGATORI&amp;quot; în fișierul &amp;quot;triviador.out&amp;quot;. În caz contrar, se vor identifica cele două cele mai mari valori din lista &amp;quot;s&amp;quot; și se vor scrie în fișierul &amp;quot;triviador.out&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
 În &amp;quot;if name == &#039;main&#039;:&amp;quot; se apelează funcțiile &amp;quot;citeste_n&amp;quot;, &amp;quot;citeste_perechi&amp;quot; și &amp;quot;triviador&amp;quot; în ordine, iar în cazul în care apare o excepție de tipul ValueError sau IndexError se va afișa un mesaj de eroare. În final, se va scrie rezultatul în fișierul &amp;quot;triviador.out&amp;quot;.&lt;/div&gt;</summary>
		<author><name>MiclausIoana</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=1753_-_Concurs_2&amp;diff=5053</id>
		<title>1753 - Concurs 2</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=1753_-_Concurs_2&amp;diff=5053"/>
		<updated>2023-04-27T18:30:23Z</updated>

		<summary type="html">&lt;p&gt;MiclausIoana: Pagină nouă: Sursă: [https://www.pbinfo.ro/probleme/1753/concurs2] == Cerinţa == La un concurs de programare s-au înscris n elevi. Concursul se desfăşoară pe două secţiuni, secţiunea 1 pentru începători şi secţiunea 2 avansaţi. Proba de concurs se desfăşoară pe parcursul a 3 ore şi elevii au de rezolvat 2 probleme. Fiecare problemă poate avea punctajul minim de 0 puncte şi punctajul maxim de 100 de puncte. Punctajul final al concurentului este format din suma punctajel...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Sursă: [https://www.pbinfo.ro/probleme/1753/concurs2]&lt;br /&gt;
== Cerinţa ==&lt;br /&gt;
La un concurs de programare s-au înscris n elevi. Concursul se desfăşoară pe două secţiuni, secţiunea 1 pentru începători şi secţiunea 2 avansaţi. Proba de concurs se desfăşoară pe parcursul a 3 ore şi elevii au de rezolvat 2 probleme.&lt;br /&gt;
Fiecare problemă poate avea punctajul minim de 0 puncte şi punctajul maxim de 100 de puncte. Punctajul final al concurentului este format din suma punctajelor celor două probleme. Să se scrie un program care citeşte numărul de elevi înscrişi şi apoi date despre fiecare elev înscris (secţiunea la care s-a înscris, punctajul obţinut pentru prima problema şi punctajul obţinut pentru a două problemă) și rezolvă următoarele cerinţe:&lt;br /&gt;
1. Afișează mesajul DA dacă toţi cei N elevi înscrişi au reuşit să obţină un punctaj nenul la ambele probleme propuse, respectiv NU” în caz contrar.&lt;br /&gt;
2. Afişează pentru fiecare secţiune numărul de elevi înscrişi. Afişarea se va face în ordinea crescătoare a numărului secţiunii, prin perechi de numere de forma &#039;&#039;&#039;nr_secţiune nr_elevi&#039;&#039;&#039;.&lt;br /&gt;
3. Afişaţi pentru fiecare secţiune punctajul maxim obţinut şi numărul de elevi care au obţinut acest punctaj. Afişarea se va face în ordinea crescătoare a numărului secţiunii, prin triplete de numere de forma &#039;&#039;&#039;nr_secţiune punctaj_maxim nr_elevi&#039;&#039;&#039;. Ştiind ca premiile se acordă doar celor care au luat punctaj maxim, afişaţi şi numărul de premii care vor fi acordate.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Fişierul de intrare &#039;&#039;&#039;concurs2.in&#039;&#039;&#039; conţine pe prima linie un număr natural &#039;&#039;&#039;C&#039;&#039;&#039;. Pentru toate testele de intrare, numărul &#039;&#039;&#039;C&#039;&#039;&#039; are una din valorile &#039;&#039;&#039;1, 2 sau 3&#039;&#039;&#039;. Pe linia a doua a fișierului se găseşte numărul natural &#039;&#039;&#039;N&#039;&#039;&#039; – numărul de elevi înscrişi iar pe următoarele &#039;&#039;&#039;N&#039;&#039;&#039; linii, separate prin spaţiu,trei numere S &#039;&#039;&#039;P1 P2&#039;&#039;&#039; cu semnificaţia: &#039;&#039;&#039;S&#039;&#039;&#039; secţiunea la care participă elevul, &#039;&#039;&#039;P1&#039;&#039;&#039; punctajul obţinut la prima problemă şi &#039;&#039;&#039;P2&#039;&#039;&#039; punctajul obţinut la a doua problemă.&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;.Dacă C=1, se va rezolva numai punctul 1). În acest caz, în fişierul de ieşire concurs2.out se va scrie un singur mesaj DA sau NU.&lt;br /&gt;
Dacă C=2, se va rezolva numai punctul 2). În acest caz, în fişierul de ieşire&lt;br /&gt;
concurs2.out se vor scrie 2 linii, pe fiecare linie o pereche de numere, separate prin spaţiu reprezentând valorile cerinţei 2.&lt;br /&gt;
Dacă C=3, se va rezolva numai punctul 3). În acest caz, în fişierul de ieşire&lt;br /&gt;
concurs2.out se vor scrie 3 linii, pe primele două linii câte un triplet de numere separate prin spaţiu reprezentând valorile cerinţei 3 iar pe ultima linie numărul de premii. Î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 &amp;lt;= C &amp;lt;= 3,&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;1 &amp;lt;= S &amp;lt;= 2&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;0 &amp;lt; n &amp;lt;= 300&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;0 &amp;lt;= P1,P2 &amp;lt;= 100&#039;&#039;&#039;&lt;br /&gt;
== Exemple ==&lt;br /&gt;
=== Exemplu 1 ===&lt;br /&gt;
; &#039;&#039;&#039;concurs2.in&#039;&#039;&#039;&lt;br /&gt;
: 1&lt;br /&gt;
: 7&lt;br /&gt;
: 1 100 100&lt;br /&gt;
: 2 100 100&lt;br /&gt;
: 1 50 0&lt;br /&gt;
: 1 100 100&lt;br /&gt;
: 2 0 40&lt;br /&gt;
: 1 100 100&lt;br /&gt;
: 2 30 70&lt;br /&gt;
; &#039;&#039;&#039;concurs2.out&#039;&#039;&#039;&lt;br /&gt;
: NU&lt;br /&gt;
==== Explicatie ====&lt;br /&gt;
Există elevi care au punctajul 0 la probleme.&lt;br /&gt;
=== Exemplu 2 ===&lt;br /&gt;
; &#039;&#039;&#039;concurs2.in&#039;&#039;&#039;&lt;br /&gt;
: 2&lt;br /&gt;
: 7&lt;br /&gt;
: 1 100 100&lt;br /&gt;
: 2 100 100&lt;br /&gt;
: 1 50 0&lt;br /&gt;
: 1 100 100&lt;br /&gt;
: 2 0 40&lt;br /&gt;
: 1 100 100&lt;br /&gt;
: 2 30 70&lt;br /&gt;
; &#039;&#039;&#039;concurs2.out&#039;&#039;&#039;&lt;br /&gt;
: 1 4&lt;br /&gt;
: 2 3&lt;br /&gt;
==== Explicatie ====&lt;br /&gt;
La secțiunea 1 sunt 4 înscriși iar la secțiunea 2 sunt 3 înscriși.&lt;br /&gt;
=== Exemplu 3 ===&lt;br /&gt;
; &#039;&#039;&#039;concurs2.in&#039;&#039;&#039;&lt;br /&gt;
: 3&lt;br /&gt;
: 7&lt;br /&gt;
: 1 100 100&lt;br /&gt;
: 2 100 100&lt;br /&gt;
: 1 50 0&lt;br /&gt;
: 1 100 100&lt;br /&gt;
: 2 0 40&lt;br /&gt;
: 1 100 100&lt;br /&gt;
: 2 30 70&lt;br /&gt;
; &#039;&#039;&#039;concurs2.out&#039;&#039;&#039;&lt;br /&gt;
: 1 200 3 &lt;br /&gt;
: 2 200 1&lt;br /&gt;
: 4&lt;br /&gt;
==== Explicatie ====&lt;br /&gt;
La secţiunea 1 punctajul maxim (200) a fost obţinut de 3 elevi. La secţiunea 2 punctajul maxim (200) a fost obţinut de 1 elev. Număr de premii 4.&lt;br /&gt;
== Rezolvare == &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
def verifica_punctaje(n, elevi):&lt;br /&gt;
    for elev in elevi:&lt;br /&gt;
        if elev[1] &amp;lt; 5 or elev[2] &amp;lt; 5:&lt;br /&gt;
            print(&amp;quot;Datele sunt conform restrictiilor impuse.&amp;quot;)&lt;br /&gt;
        else:&lt;br /&gt;
            print(&amp;quot;Datele sunt conform restrictiilor impuse.&amp;quot;)&lt;br /&gt;
            return&lt;br /&gt;
&lt;br /&gt;
def verifica_date(elevi):&lt;br /&gt;
    for elev in elevi:&lt;br /&gt;
        if elev[1] == 0 or elev[2] == 0:&lt;br /&gt;
            print(&amp;quot;Datele sunt conform restrictiilor impuse.&amp;quot;)&lt;br /&gt;
        else:&lt;br /&gt;
            print(&amp;quot;Datele sunt conform restrictiilor impuse.&amp;quot;)&lt;br /&gt;
            return&lt;br /&gt;
&lt;br /&gt;
def numar_elevi_pe_sectiuni(n, elevi):&lt;br /&gt;
    sectiuni = [0, 0]&lt;br /&gt;
    for elev in elevi:&lt;br /&gt;
        sectiuni[elev[0]-1] += 1&lt;br /&gt;
    return sectiuni&lt;br /&gt;
&lt;br /&gt;
def max_punctaj_pe_sectiuni(n, elevi):&lt;br /&gt;
    max_punctaje = [0, 0]&lt;br /&gt;
    nr_max_punctaje = [0, 0]&lt;br /&gt;
    for elev in elevi:&lt;br /&gt;
        sectiune = elev[0]-1&lt;br /&gt;
        punctaj = elev[1] + elev[2]&lt;br /&gt;
        if punctaj &amp;gt; max_punctaje[sectiune]:&lt;br /&gt;
            max_punctaje[sectiune] = punctaj&lt;br /&gt;
            nr_max_punctaje[sectiune] = 1&lt;br /&gt;
        elif punctaj == max_punctaje[sectiune]:&lt;br /&gt;
            nr_max_punctaje[sectiune] += 1&lt;br /&gt;
&lt;br /&gt;
    with open(&amp;quot;concurs2.out&amp;quot;, &amp;quot;w&amp;quot;) as f:&lt;br /&gt;
        if verifica_punctaje(n, elevi):&lt;br /&gt;
            f.write(&amp;quot;DA\n&amp;quot;)&lt;br /&gt;
        else:&lt;br /&gt;
            f.write(&amp;quot;NU\n&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
        nr_elevi = numar_elevi_pe_sectiuni(n, elevi)&lt;br /&gt;
        f.write(f&amp;quot;{1} {nr_elevi[0]}\n{2} {nr_elevi[1]}\n&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
        for i in range(2):&lt;br /&gt;
            f.write(f&amp;quot;{i+1} {max_punctaje[i]} {nr_max_punctaje[i]}\n&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
        nr_premii = nr_max_punctaje.count(1)&lt;br /&gt;
        f.write(str(nr_premii))&lt;br /&gt;
&lt;br /&gt;
def rezolva_concursul(n, elevi):&lt;br /&gt;
    verifica_date(elevi)&lt;br /&gt;
    max_punctaj_pe_sectiuni(n, elevi)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
== Explicație ==&lt;br /&gt;
 Acest cod este o implementare a unei funcții care primește o listă de elevi, fiecare cu sectiunea sa (1 sau 2), punctajul la prima problemă și punctajul la a doua problemă. Scopul funcției este de a determina și afișa într-un fișier următoarele informații:&lt;br /&gt;
&lt;br /&gt;
 Dacă toți elevii au obținut punctaje pozitive la ambele probleme, se va scrie &amp;quot;DA&amp;quot; în fișier. În caz contrar, se va scrie &amp;quot;NU&amp;quot;.&lt;br /&gt;
 Numărul de elevi din fiecare sectiune.&lt;br /&gt;
 Cel mai mare punctaj obținut la fiecare dintre cele două secțiuni, precum și numărul de elevi care au obținut acel punctaj.&lt;br /&gt;
 Numărul de elevi care au obținut cel mai mare punctaj din fiecare sectiune și care primesc un premiu.&lt;br /&gt;
 Codul începe prin a defini o funcție auxiliară &amp;quot;verifica_punctaje&amp;quot; care verifică dacă toți elevii au obținut punctaje pozitive la ambele probleme.&lt;br /&gt;
&lt;br /&gt;
 Următoarele două funcții, &amp;quot;numar_elevi_pe_sectiuni&amp;quot; și &amp;quot;max_punctaj_pe_sectiuni&amp;quot;, sunt folosite pentru a calcula numărul de elevi din fiecare sectiune și cel mai mare punctaj obținut în fiecare sectiune.&lt;br /&gt;
&lt;br /&gt;
 Funcția &amp;quot;max_punctaj_pe_sectiuni&amp;quot; utilizează o listă pentru a păstra cel mai mare punctaj obținut în fiecare sectiune și o altă listă pentru a număra câți elevi au obținut acel punctaj.&lt;br /&gt;
&lt;br /&gt;
 Codul finalizează prin deschiderea unui fișier &amp;quot;concurs2.out&amp;quot; în modul de scriere și apelarea funcțiilor auxiliare pentru a obține datele necesare, pe care le scrie în fișierul respectiv.&lt;/div&gt;</summary>
		<author><name>MiclausIoana</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=1051_-_Bete_1&amp;diff=5027</id>
		<title>1051 - Bete 1</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=1051_-_Bete_1&amp;diff=5027"/>
		<updated>2023-04-27T17:54:20Z</updated>

		<summary type="html">&lt;p&gt;MiclausIoana: Pagină nouă: Sursă: [https://www.pbinfo.ro/probleme/1051/bete1] == Enunt == Ana şi Bogdan au găsit la bunicul lor o cutie cu &amp;#039;&amp;#039;&amp;#039;N&amp;#039;&amp;#039;&amp;#039; beţe de aceeaşi lungime. După câteva minute de joacă urmează cearta. Bunicul le-a propus să rupă cele &amp;#039;&amp;#039;&amp;#039;N&amp;#039;&amp;#039;&amp;#039; beţe și apoi Ana să primească fragmentele din mâna stângă, iar Bogdan fragmentele din mâna dreaptă. Zis şi făcut. Copiii au luat fragmentele, le-au numerotat fiecare cu numere de la &amp;#039;&amp;#039;&amp;#039;1&amp;#039;&amp;#039;&amp;#039; la &amp;#039;&amp;#039;&amp;#039;N&amp;#039;&amp;#039;&amp;#039;, le-au măsurat şi acum î...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Sursă: [https://www.pbinfo.ro/probleme/1051/bete1]&lt;br /&gt;
== Enunt ==&lt;br /&gt;
Ana şi Bogdan au găsit la bunicul lor o cutie cu &#039;&#039;&#039;N&#039;&#039;&#039; beţe de aceeaşi lungime. După câteva minute de joacă urmează cearta. Bunicul le-a propus să rupă cele &#039;&#039;&#039;N&#039;&#039;&#039; beţe și apoi Ana să primească fragmentele din mâna stângă, iar Bogdan fragmentele din mâna dreaptă. Zis şi făcut. Copiii au luat fragmentele, le-au numerotat fiecare cu numere de la &#039;&#039;&#039;1&#039;&#039;&#039; la &#039;&#039;&#039;N&#039;&#039;&#039;, le-au măsurat şi acum îşi doresc să lipească fragmentele primite, dar mai au nevoie de câteva informaţii.&lt;br /&gt;
== Cerință ==&lt;br /&gt;
Cunoscând &#039;&#039;&#039;N&#039;&#039;&#039; numărul de beţe, &#039;&#039;&#039;a1, a2,…, aN&#039;&#039;&#039; lungimile fragmentelor primite de Ana şi &#039;&#039;&#039;b1, b2,…, bN&#039;&#039;&#039; lungimile fragmentelor primite de Bogdan, să se scrie un program care să determine:&lt;br /&gt;
&lt;br /&gt;
a) lungimea iniţială a beţelor;&lt;br /&gt;
b) lungimea celui mai lung băţ care se poate obţine prin lipirea unui fragment aparţinând Anei cu un fragment care aparţine lui Bogdan;&lt;br /&gt;
c) numărul beţelor de lungime maximă care se pot obţine prin lipirea unui fragment aparţinând Anei cu un fragment care aparţine lui Bogdan.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Fișierul de intrare &#039;&#039;&#039;bete1.in&#039;&#039;&#039; conține pe prima linie numărul natural &#039;&#039;&#039;N&#039;&#039;&#039; reprezentând numărul de beţe. Pe a doua linie sunt &#039;&#039;&#039;N&#039;&#039;&#039; numere naturale&#039;&#039;&#039;a1, a2,…, aN&#039;&#039;&#039; reprezentând lungimile fragmentelor primite de Ana şi pe a treia linie sunt &#039;&#039;&#039;N&#039;&#039;&#039; numere naturale &#039;&#039;&#039;b1, b2,…, bN&#039;&#039;&#039; reprezentând lungimile fragmentelor primite de Bogdan.&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;bete1.out&#039;&#039;&#039; va conține trei linii. Pe prima linie se va scrie numărul natural &#039;&#039;&#039;L&#039;&#039;&#039; reprezentând lungimea iniţială a beţelor, pe a doua linie se va scrie numărul natural &#039;&#039;&#039;K&#039;&#039;&#039; reprezentând lungimea celui mai lung băţ care se poate obţine prin lipirea unui fragment aparţinând Anei cu un fragment care aparţine lui Bogdan, iar pe a treia linie se va scrie numărul natural &#039;&#039;&#039;P&#039;&#039;&#039; reprezentând numărul beţelor de lungime maximă care se pot obţine prin lipirea unui fragment aparţinând Anei cu un fragment care aparţine lui Bogdan. Î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 ≤ 1000&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;1 ≤ ai ≤ 10.000, (1 ≤ i ≤ N)&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;1 ≤ bi ≤ 10.000, (1 ≤ i ≤ N)&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;1 ≤ L ≤ 20.000&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;1 ≤ K ≤ 20.000&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;1 ≤ P ≤ 1000&#039;&#039;&#039;&lt;br /&gt;
== Exemple ==&lt;br /&gt;
=== Exemplu 1 ===&lt;br /&gt;
; &#039;&#039;&#039;bete1.in&#039;&#039;&#039;&lt;br /&gt;
: 6&lt;br /&gt;
: 2 6 7 1 3 5&lt;br /&gt;
: 5 4 7 8 9 3&lt;br /&gt;
; &#039;&#039;&#039;bete1.out&#039;&#039;&#039;&lt;br /&gt;
: 10&lt;br /&gt;
: 16&lt;br /&gt;
: 1&lt;br /&gt;
==== Explicatie ====&lt;br /&gt;
Lungimea iniţială este &#039;&#039;&#039;10&#039;&#039;&#039;, lungimea maximă este &#039;&#039;&#039;16&#039;&#039;&#039; și se poate forma un singur băţ de lungime &#039;&#039;&#039;16&#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 verificare_restrictii(n, a, b):&lt;br /&gt;
    try:&lt;br /&gt;
        if 1 &amp;lt;= n &amp;lt;= 1000:&lt;br /&gt;
            print(&amp;quot;n este conform restrictiilor impuse.&amp;quot;)&lt;br /&gt;
        else:&lt;br /&gt;
            print(&amp;quot;n nu este conform restrictiilor impuse.&amp;quot;)&lt;br /&gt;
            exit()&lt;br /&gt;
&lt;br /&gt;
        for lungime in a:&lt;br /&gt;
            if 1 &amp;lt;= lungime &amp;lt;= 10000:&lt;br /&gt;
                print(f&amp;quot;Lungimea {lungime} este conform restrictiilor impuse.&amp;quot;)&lt;br /&gt;
            else:&lt;br /&gt;
                print(f&amp;quot;Lungimea {lungime} nu este conform restrictiilor impuse.&amp;quot;)&lt;br /&gt;
                exit()&lt;br /&gt;
&lt;br /&gt;
        for lungime in b:&lt;br /&gt;
            if 1 &amp;lt;= lungime &amp;lt;= 10000:&lt;br /&gt;
                print(f&amp;quot;Lungimea {lungime} este conform restrictiilor impuse.&amp;quot;)&lt;br /&gt;
            else:&lt;br /&gt;
                print(f&amp;quot;Lungimea {lungime} nu este conform restrictiilor impuse.&amp;quot;)&lt;br /&gt;
                exit()&lt;br /&gt;
&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;
&lt;br /&gt;
def bete1():&lt;br /&gt;
    with open(&amp;quot;bete1.in&amp;quot;) as fin, open(&amp;quot;bete1.out&amp;quot;, &amp;quot;w&amp;quot;) as fout:&lt;br /&gt;
        n = int(fin.readline())&lt;br /&gt;
        a = list(map(int, fin.readline().split()))&lt;br /&gt;
        b = list(map(int, fin.readline().split()))&lt;br /&gt;
&lt;br /&gt;
        verificare_restrictii(n, a, b)&lt;br /&gt;
&lt;br /&gt;
        lungime_initiala = sum(a) + sum(b)&lt;br /&gt;
        k = max([x+y for x in a for y in b])&lt;br /&gt;
        p = sum([1 for x in a for y in b if x+y == k])&lt;br /&gt;
&lt;br /&gt;
        fout.write(str(lungime_initiala) + &amp;quot;\n&amp;quot;)&lt;br /&gt;
        fout.write(str(k) + &amp;quot;\n&amp;quot;)&lt;br /&gt;
        fout.write(str(p))&lt;br /&gt;
&lt;br /&gt;
        return n, a, b&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if _name_ == &amp;quot;_main_&amp;quot;:&lt;br /&gt;
    n, a, b = bete1()&lt;br /&gt;
    print(&amp;quot;Lungimea initiala a betelor:&amp;quot;, sum(a) + sum(b))&lt;br /&gt;
    print(&amp;quot;Lungimea celui mai lung bat:&amp;quot;, max([x+y for x in a for y in b]))&lt;br /&gt;
    print(&amp;quot;Numarul betelor de lungime maxima:&amp;quot;, sum([1 for x in a for y in b if x+y == max([x+y for x in a for y in b])]))&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
== Explicatie ==&lt;/div&gt;</summary>
		<author><name>MiclausIoana</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=2874_-_Sort_Matrix_Col&amp;diff=5018</id>
		<title>2874 - Sort Matrix Col</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=2874_-_Sort_Matrix_Col&amp;diff=5018"/>
		<updated>2023-04-27T17:45:41Z</updated>

		<summary type="html">&lt;p&gt;MiclausIoana: Pagină nouă: Sursă: [https://www.pbinfo.ro/probleme/2874/sortmatrixcol] == 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 un caracter &amp;#039;&amp;#039;&amp;#039;c&amp;#039;&amp;#039;&amp;#039; care poate fi &amp;#039;&amp;#039;&amp;#039;+&amp;#039;&amp;#039;&amp;#039; sau &amp;#039;&amp;#039;&amp;#039;-&amp;#039;&amp;#039;&amp;#039;. Să se sorteze, după linii, matricea crescător dacă semnul este &amp;#039;&amp;#039;&amp;#039;+&amp;#039;&amp;#039;&amp;#039; sau descrescător dacă semnul este &amp;#039;&amp;#039;&amp;#039;-&amp;#039;&amp;#039;&amp;#039;. Sortarea matricei după coloane este rearanjarea elementelor astfel încât, parcurgând matricea pe coloane, de la stânga la dreapta și de sus în jos, elementele sunt...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Sursă: [https://www.pbinfo.ro/probleme/2874/sortmatrixcol]&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 un caracter &#039;&#039;&#039;c&#039;&#039;&#039; care poate fi &#039;&#039;&#039;+&#039;&#039;&#039; sau &#039;&#039;&#039;-&#039;&#039;&#039;. Să se sorteze, după linii, matricea crescător dacă semnul este &#039;&#039;&#039;+&#039;&#039;&#039; sau descrescător dacă semnul este &#039;&#039;&#039;-&#039;&#039;&#039;.&lt;br /&gt;
Sortarea matricei după coloane este rearanjarea elementelor astfel încât, parcurgând matricea pe coloane, de la stânga la dreapta și de sus în jos, elementele sunt în ordine crescătoare/descrescătoare.&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; și caracterul &#039;&#039;&#039;c&#039;&#039;&#039;, iar apoi &#039;&#039;&#039;n&#039;&#039;&#039; linii cu &#039;&#039;&#039;m&#039;&#039;&#039; numere naturale. Fiecare linie pe câte un rând, toate numerele de pe fiecare linie separate prin spații unul de celălalt.&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 matricea sortată conform cerinței, câte o linie a matricei pe o linie a ecranului, elementele fiecărei linii fiind separate prin câte un spațiu. Î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;
* elementele matricei vor fi mai mici sau egale cu &#039;&#039;&#039;&#039;1.000&#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;
: 2 4 1 3&lt;br /&gt;
: 9 8 7 6&lt;br /&gt;
: 20 19 18 16&lt;br /&gt;
: 30 29 124 12&lt;br /&gt;
: 59 21 0 3&lt;br /&gt;
; Date de ieșire&lt;br /&gt;
: 0 4 12 21 &lt;br /&gt;
: 1 6 16 29 &lt;br /&gt;
: 2 7 18 30 &lt;br /&gt;
: 3 8 19 59 &lt;br /&gt;
: 3 9 20 124 &lt;br /&gt;
=== Exemplu 2 ===&lt;br /&gt;
; Date de intrare&lt;br /&gt;
: 5 4 -&lt;br /&gt;
: 2 4 1 3&lt;br /&gt;
: 9 8 7 6&lt;br /&gt;
: 20 19 18 16&lt;br /&gt;
: 30 29 124 12&lt;br /&gt;
: 59 21 0 3&lt;br /&gt;
; Date de ieșire&lt;br /&gt;
:  124 20 9 3 &lt;br /&gt;
: 59 19 8 3 &lt;br /&gt;
: 30 18 7 2 &lt;br /&gt;
: 29 16 6 1 &lt;br /&gt;
: 21 12 4 0 &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;
        linie_matrice = []&lt;br /&gt;
        for coloana in range(m):&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;= 1000:&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;
        matrice.append(linie_matrice)&lt;br /&gt;
&lt;br /&gt;
    return n, m, matrice&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def SortMatrixCol(n, m, matrice):&lt;br /&gt;
    semn = input(&amp;quot;Introduceti caracterul + sau -: &amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    # transforma matricea intr-o lista unidimensionala&lt;br /&gt;
    lista_unidimensionala = []&lt;br /&gt;
    for j in range(m):&lt;br /&gt;
        for i in range(n):&lt;br /&gt;
            lista_unidimensionala.append(matrice[i][j])&lt;br /&gt;
&lt;br /&gt;
    # sorteaza lista unidimensionala&lt;br /&gt;
    if semn == &#039;+&#039;:&lt;br /&gt;
        lista_unidimensionala.sort()&lt;br /&gt;
    elif semn == &#039;-&#039;:&lt;br /&gt;
        lista_unidimensionala.sort(reverse=True)&lt;br /&gt;
    else:&lt;br /&gt;
        print(&amp;quot;Semnul trebuie să fie + sau -.&amp;quot;)&lt;br /&gt;
        return&lt;br /&gt;
&lt;br /&gt;
    # retransforma lista unidimensionala in matrice cu coloane&lt;br /&gt;
    matrice_sortata = []&lt;br /&gt;
    for j in range(m):&lt;br /&gt;
        coloana_matrice = []&lt;br /&gt;
        for i in range(n):&lt;br /&gt;
            coloana_matrice.append(lista_unidimensionala.pop(0))&lt;br /&gt;
        matrice_sortata.append(coloana_matrice)&lt;br /&gt;
&lt;br /&gt;
    # afiseaza matricea sortata&lt;br /&gt;
    for i in range(n):&lt;br /&gt;
        for j in range(m):&lt;br /&gt;
            print(matrice_sortata[j][i], end=&amp;quot; &amp;quot;)&lt;br /&gt;
        print()&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;
    print(&amp;quot;Matricea initiala:&amp;quot;)&lt;br /&gt;
    for linie in matrice:&lt;br /&gt;
        print(linie)&lt;br /&gt;
    print(&amp;quot;Matricea modificata:&amp;quot;)&lt;br /&gt;
    SortMatrixCol(n,m,matrice)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
== Explicatie ==&lt;br /&gt;
 Acest cod implementează două funcții. Funcția citire_matrice() primește input de la utilizator pentru a crea o matrice cu dimensiunile specificate și apoi citește valorile pentru fiecare element din matrice. Funcția asigură că datele introduse sunt corecte și se încadrează în limitele stabilite pentru dimensiunile matricei și valorile elementelor.&lt;br /&gt;
&lt;br /&gt;
 Funcția SortMatrixCol(n, m, matrice) primește matricea creată de funcția citire_matrice() și sortează coloanele în ordine crescătoare sau descrescătoare în funcție de semnul specificat de utilizator. Această funcție transformă matricea într-o listă unidimensională, sortază lista și apoi retransformă lista într-o matrice cu coloane, pe care o afișează.&lt;br /&gt;
&lt;br /&gt;
 Funcția main citește matricea folosind funcția citire_matrice(), afișează matricea inițială, apoi sortează matricea folosind funcția SortMatrixCol() și afișează matricea sortată.&lt;/div&gt;</summary>
		<author><name>MiclausIoana</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=4281_-_Min_2_Cif&amp;diff=4490</id>
		<title>4281 - Min 2 Cif</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=4281_-_Min_2_Cif&amp;diff=4490"/>
		<updated>2023-04-26T09:38:44Z</updated>

		<summary type="html">&lt;p&gt;MiclausIoana: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Sursă: [https://www.pbinfo.ro/probleme/4281/min2cif]&lt;br /&gt;
== Cerință ==&lt;br /&gt;
Se citesc de la tastatură numere naturale până la apariția lui zero. Să se determine cel mic număr citit care are două cifre.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Programul citește de la tastatură numere naturale. Citirea se încheie la introducerea valorii &#039;&#039;&#039;0&#039;&#039;&#039;.&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 &#039;&#039;&#039;M&#039;&#039;&#039;, cel mai mic număr citit care are două cifre. Î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 vor fi mai mici decât &#039;&#039;&#039;10000&#039;&#039;&#039;&lt;br /&gt;
* dacă niciun număr citit nu are două cifre, se va afișa &#039;&#039;&#039;NU EXISTA&#039;&#039;&#039;&lt;br /&gt;
== Exemple ==&lt;br /&gt;
=== Exemplu 1 ===&lt;br /&gt;
; Date de intrare&lt;br /&gt;
:105 63 20 4 0&lt;br /&gt;
; Date de ieșire&lt;br /&gt;
: 20&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 verificare():&lt;br /&gt;
    numere = []&lt;br /&gt;
    while True:&lt;br /&gt;
        numar = input(&amp;quot;Introduceti o valoare: &amp;quot;)&lt;br /&gt;
        try:&lt;br /&gt;
            numar = int(numar)&lt;br /&gt;
            if numar == 0:&lt;br /&gt;
                break&lt;br /&gt;
            elif 10 &amp;lt;= numar &amp;lt;= 99:&lt;br /&gt;
                print(&amp;quot;Datele sunt corecte.&amp;quot;)&lt;br /&gt;
                numere.append(numar)&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 respectate cerintele.&amp;quot;)&lt;br /&gt;
    return numere&lt;br /&gt;
&lt;br /&gt;
def Min2Cif(numere):&lt;br /&gt;
    if len(numere) == 0:&lt;br /&gt;
        return None&lt;br /&gt;
    numar_min = numere[0]&lt;br /&gt;
    for n in numere:&lt;br /&gt;
        if n &amp;lt; numar_min:&lt;br /&gt;
            numar_min = n&lt;br /&gt;
    return numar_min&lt;br /&gt;
&lt;br /&gt;
if _name_ == &#039;_main_&#039;:&lt;br /&gt;
    n = verificare()&lt;br /&gt;
    MIN = Min2Cif(n)&lt;br /&gt;
    if MIN is None:&lt;br /&gt;
        print(&amp;quot;NU EXISTA.&amp;quot;)&lt;br /&gt;
    else:&lt;br /&gt;
        print(&amp;quot;Cel mai mic număr cu două cifre este:&amp;quot;, MIN)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
== Explicatie ==&lt;br /&gt;
 Acest cod are ca scop găsirea celui mai mic număr cu două cifre dintr-o listă de numere întregi citite de la tastatură.&lt;br /&gt;
&lt;br /&gt;
 Funcția verificare inițializează o listă goală numere și utilizează o buclă while infinită pentru a citi de la tastatură valori până când se introduce valoarea zero. În interiorul buclei, se verifică dacă valoarea introdusă este un număr întreg prin încercarea conversiei la tipul int. Dacă conversia nu este posibilă, se afișează un mesaj de eroare și se continuă bucla. Dacă conversia este posibilă, se verifică dacă numărul respectă cerințele impuse, respectiv să fie un număr cu două cifre (între 10 și 99). Dacă nu respectă cerințele, se afișează un mesaj de eroare și se continuă bucla. În caz contrar, se afișează un mesaj de confirmare și se adaugă numărul la lista numere.&lt;br /&gt;
&lt;br /&gt;
 Funcția Min2Cif primește ca argument lista numere și parcurge fiecare element din listă pentru a găsi cel mai mic număr cu două cifre. Dacă lista este goală, se returnează None.&lt;br /&gt;
&lt;br /&gt;
 Blocul if _name_ == &#039;_main_&#039;: este folosit pentru a rula codul din funcția main doar atunci când acesta este executat ca program și nu ca modul importat în alt cod. Se apelează funcția verificare pentru a citi valori de la tastatură și se salvează rezultatul în variabila n. Se apelează apoi funcția Min2Cif cu argumentul n și se salvează rezultatul în variabila MIN. Dacă MIN este None, se afișează un mesaj că &amp;quot;NU EXISTA.&amp;quot; Altfel, se afișează un mesaj care indică cel mai mic număr cu două cifre găsit.&lt;/div&gt;</summary>
		<author><name>MiclausIoana</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=4280_-_Max_Div_K&amp;diff=4489</id>
		<title>4280 - Max Div K</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=4280_-_Max_Div_K&amp;diff=4489"/>
		<updated>2023-04-26T09:34:12Z</updated>

		<summary type="html">&lt;p&gt;MiclausIoana: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Sursă: [https://www.pbinfo.ro/probleme/4280/maxdivk]&lt;br /&gt;
== Cerință ==&lt;br /&gt;
Se citesc de la tastatură numerele &#039;&#039;&#039;n k&#039;&#039;&#039;, apoi un șir de &#039;&#039;&#039;n&#039;&#039;&#039; numere naturale. Să se determine cel mai mare număr din șir care se divide cu &#039;&#039;&#039;k&#039;&#039;&#039;.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Programul citește de la tastatură numerele &#039;&#039;&#039;n k&#039;&#039;&#039;, apoi &#039;&#039;&#039;n&#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;. Programul afișează pe prima ecran &#039;&#039;&#039;M&#039;&#039;&#039;, cel mai mare număr din șir care se divide cu &#039;&#039;&#039;k&#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;n ≤ 50&#039;&#039;&#039;&lt;br /&gt;
* numerele citite vor fi mai mici decât &#039;&#039;&#039;10000&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;k &amp;gt; 0&#039;&#039;&#039;&lt;br /&gt;
* dacă șirul nu conține niciun număr divizibil cu &#039;&#039;&#039;k&#039;&#039;&#039;, se va afișa mesajul &#039;&#039;&#039;NU EXISTA&#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;
: 104 63 24 5&lt;br /&gt;
; Date de ieșire&lt;br /&gt;
: 63&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_k():&lt;br /&gt;
    while True:&lt;br /&gt;
        try:&lt;br /&gt;
            n = int(input(&amp;quot;Introduceti numarul de elemente: &amp;quot;))&lt;br /&gt;
            k = int(input(&amp;quot;Introduceti numarul k: &amp;quot;))&lt;br /&gt;
            if n &amp;lt;= 50 and k &amp;gt; 0:&lt;br /&gt;
                print(&amp;quot;Datele sunt corecte.&amp;quot;)&lt;br /&gt;
                return n, 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_valori(n):&lt;br /&gt;
    valori = []&lt;br /&gt;
    for i in range(n):&lt;br /&gt;
        while True:&lt;br /&gt;
            try:&lt;br /&gt;
                valoare = int(input(f&amp;quot;Introduceti valoarea {i+1}: &amp;quot;))&lt;br /&gt;
                if valoare &amp;lt; 10000:&lt;br /&gt;
                    print(&amp;quot;Datele sunt corecte.&amp;quot;)&lt;br /&gt;
                    valori.append(valoare)&lt;br /&gt;
                    break&lt;br /&gt;
                else:&lt;br /&gt;
                    print(&amp;quot;Valoarea trebuie sa fie mai mica decat 10000.&amp;quot;)&lt;br /&gt;
            except ValueError:&lt;br /&gt;
                print(&amp;quot;Trebuie introduse doar valori naturale.&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    return valori&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def Max_Div_K(valori, k):&lt;br /&gt;
    max_divisible = -1&lt;br /&gt;
    for num in valori:&lt;br /&gt;
        if num % k == 0 and num &amp;gt; max_divisible:&lt;br /&gt;
            max_divisible = num&lt;br /&gt;
&lt;br /&gt;
    if max_divisible == -1:&lt;br /&gt;
        print(&amp;quot;NU EXISTA&amp;quot;)&lt;br /&gt;
    else:&lt;br /&gt;
        print(&amp;quot;Cel mai mare numar din sir care se divide cu k este:&amp;quot;, max_divisible)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if _name_ == &#039;_main_&#039;:&lt;br /&gt;
    n, k = citeste_n_k()&lt;br /&gt;
    valori = citeste_valori(n)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
== Explicatie ==&lt;br /&gt;
 Acest cod este o implementare Python a unui program care citeste un numar n si un numar k, apoi citeste o lista de n numere si afiseaza cel mai mare numar din lista care se divide exact cu k. Programul este impartit in trei functii:&lt;br /&gt;
&lt;br /&gt;
 citeste_n_k() - Aceasta functie primeste de la utilizator numerele n si k si verifica daca acestea respecta anumite restrictii impuse. Daca valorile introduse sunt corecte, functia returneaza valorile n si k.&lt;br /&gt;
&lt;br /&gt;
 citeste_valori(n) - Aceasta functie citeste n numere de la utilizator si verifica daca fiecare numar introdus este mai mic decat 10000. Daca numarul introdus este corect, acesta este adaugat intr-o lista. Lista cu valorile introduse este returnata la sfarsitul functiei.&lt;br /&gt;
&lt;br /&gt;
 Max_Div_K(valori, k) - Aceasta functie primeste lista cu valorile introduse si numarul k. Functia itereaza prin lista de numere si gaseste cel mai mare numar care se divide exact cu k. Daca un astfel de numar nu exista in lista, functia afiseaza &amp;quot;NU EXISTA&amp;quot;. Daca un astfel de numar exista in lista, functia afiseaza numarul respectiv.&lt;br /&gt;
&lt;br /&gt;
 Functiile sunt apelate in if _name_ == &#039;_main_&#039;: pentru a porni programul. Mai intai, sunt citite numerele n si k folosind citeste_n_k(). Apoi, valorile introduse de utilizator sunt citite folosind citeste_valori(n), si apoi functia Max_Div_&lt;/div&gt;</summary>
		<author><name>MiclausIoana</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=3999_-_Sum_Min_9&amp;diff=4487</id>
		<title>3999 - Sum Min 9</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=3999_-_Sum_Min_9&amp;diff=4487"/>
		<updated>2023-04-26T09:24:53Z</updated>

		<summary type="html">&lt;p&gt;MiclausIoana: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Sursă: [https://www.pbinfo.ro/probleme/3999/sum-min9]&lt;br /&gt;
== Cerință ==&lt;br /&gt;
Se dau n perechi de numere naturale &#039;&#039;&#039;a&#039;&#039;&#039;, &#039;&#039;&#039;b&#039;&#039;&#039;. Să se determine cea mai mică sumă care se poate obține adunând câte un singur număr din fiecare pereche de numere citite &#039;&#039;&#039;a&#039;&#039;&#039; şi &#039;&#039;&#039;b&#039;&#039;&#039;.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Programul citeşte de la tastatură numărul &#039;&#039;&#039;n&#039;&#039;&#039;, apoi &#039;&#039;&#039;n&#039;&#039;&#039; perechi de numere &#039;&#039;&#039;a&#039;&#039;&#039;, &#039;&#039;&#039;b&#039;&#039;&#039;.&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 pe ecranului suma minimă obținută. Î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 ≤ 10.000&#039;&#039;&#039;&lt;br /&gt;
* fiecare dintre numerele &#039;&#039;&#039;a&#039;&#039;&#039; şi &#039;&#039;&#039;b&#039;&#039;&#039; au cel mult &#039;&#039;&#039;9&#039;&#039;&#039; cifre.&lt;br /&gt;
== Exemple ==&lt;br /&gt;
=== Exemplu 1 ===&lt;br /&gt;
; Date de intrare&lt;br /&gt;
: 3&lt;br /&gt;
: 2 69&lt;br /&gt;
: 20 10&lt;br /&gt;
: 19 30&lt;br /&gt;
; Date de ieșire&lt;br /&gt;
: 31&lt;br /&gt;
==== Explicatie ====&lt;br /&gt;
Se aleg numerele &#039;&#039;&#039;2&#039;&#039;&#039;, &#039;&#039;&#039;10&#039;&#039;&#039; și &#039;&#039;&#039;19&#039;&#039;&#039;. Suma lor este &#039;&#039;&#039;31&#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 citeste_n():&lt;br /&gt;
    while True:&lt;br /&gt;
        try:&lt;br /&gt;
            n = int(input(&amp;quot;Introduceti numarul de perechi: &amp;quot;))&lt;br /&gt;
            if n &amp;gt;= 1 and n &amp;lt;= 10000:&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;
        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 nrcifre(nr):&lt;br /&gt;
    nrcif = 0&lt;br /&gt;
    while nr != 0:&lt;br /&gt;
        nrcif += 1&lt;br /&gt;
        nr //= 10&lt;br /&gt;
    return nrcif&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def citeste_perechi(n):&lt;br /&gt;
    valori = []&lt;br /&gt;
    for i in range(n):&lt;br /&gt;
        while True:&lt;br /&gt;
            try:&lt;br /&gt;
                valoare1, valoare2 = map(int, input(&amp;quot;Introduceti o pereche de valori separate prin spatiu: &amp;quot;).split())&lt;br /&gt;
                cifre1 = nrcifre(valoare1)&lt;br /&gt;
                cifre2 = nrcifre(valoare2)&lt;br /&gt;
                if cifre1 &amp;lt;= 9 and cifre2 &amp;lt;= 9:&lt;br /&gt;
                    print(&amp;quot;Datele sunt corecte.&amp;quot;)&lt;br /&gt;
                    valori.append((valoare1, valoare2))&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 cu mai putin de 9 cifre.&amp;quot;)&lt;br /&gt;
    return valori&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def Sum_Min_9(valori):&lt;br /&gt;
    suma_min = 0&lt;br /&gt;
    for a, b in valori:&lt;br /&gt;
        suma_min += min(a, b)&lt;br /&gt;
&lt;br /&gt;
    print(&amp;quot;Suma minima este:&amp;quot;, suma_min)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if _name_ == &#039;_main_&#039;:&lt;br /&gt;
    n = citeste_n()&lt;br /&gt;
    valori = citeste_perechi(n)&lt;br /&gt;
    Sum_Min_9(valori)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
== Explicatie ==&lt;/div&gt;</summary>
		<author><name>MiclausIoana</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=3998_-_Sum_Max_9&amp;diff=4486</id>
		<title>3998 - Sum Max 9</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=3998_-_Sum_Max_9&amp;diff=4486"/>
		<updated>2023-04-26T09:17:34Z</updated>

		<summary type="html">&lt;p&gt;MiclausIoana: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Sursă: [https://www.pbinfo.ro/probleme/3998/sum-max9]&lt;br /&gt;
== Cerință ==&lt;br /&gt;
Se dau &#039;&#039;&#039;n&#039;&#039;&#039; perechi de numere naturale &#039;&#039;&#039;a&#039;&#039;&#039;,&#039;&#039;&#039;b&#039;&#039;&#039;. Să se determine cea mai mare sumă care se poate obține adunând câte un singur număr din fiecare pereche de numere citite &#039;&#039;&#039;a&#039;&#039;&#039; şi &#039;&#039;&#039;b&#039;&#039;&#039;.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Programul citeşte de la tastatură numărul &#039;&#039;&#039;n&#039;&#039;&#039;, apoi n perechi de numere&#039;&#039;&#039;a&#039;&#039;&#039;, &#039;&#039;&#039;b&#039;&#039;&#039;.&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 pe ecranului suma maximă obținută. Î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 ≤ 10.000&#039;&#039;&#039;&lt;br /&gt;
* fiecare dintre numerele &#039;&#039;&#039;a&#039;&#039;&#039; şi &#039;&#039;&#039;b&#039;&#039;&#039; au cel mult &#039;&#039;&#039;9&#039;&#039;&#039; cifre.&lt;br /&gt;
* cele &#039;&#039;&#039;n&#039;&#039;&#039; numere citite vor avea cel mult &#039;&#039;&#039;9&#039;&#039;&#039; cifre&lt;br /&gt;
== Exemple ==&lt;br /&gt;
=== Exemplu 1 ===&lt;br /&gt;
; Date de intrare&lt;br /&gt;
: 3&lt;br /&gt;
: 2 69&lt;br /&gt;
: 20 10&lt;br /&gt;
: 19 30&lt;br /&gt;
; Date de ieșire&lt;br /&gt;
: 119&lt;br /&gt;
==== Explicatie ====&lt;br /&gt;
Se aleg numerele &#039;&#039;&#039;69&#039;&#039;&#039;, &#039;&#039;&#039;20&#039;&#039;&#039; și &#039;&#039;&#039;30&#039;&#039;&#039;. Suma lor este &#039;&#039;&#039;119&#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 citeste_n():&lt;br /&gt;
    while True:&lt;br /&gt;
        try:&lt;br /&gt;
            n = int(input(&amp;quot;Introduceti numarul de perechi: &amp;quot;))&lt;br /&gt;
            if n &amp;gt;= 1 and n &amp;lt;= 10000:&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;
        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 nrcifre(nr):&lt;br /&gt;
    nrcif = 0&lt;br /&gt;
    while nr != 0:&lt;br /&gt;
        nrcif += 1&lt;br /&gt;
        nr //= 10&lt;br /&gt;
    return nrcif&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def citeste_perechi(n):&lt;br /&gt;
    valori = []&lt;br /&gt;
    for i in range(n):&lt;br /&gt;
        while True:&lt;br /&gt;
            try:&lt;br /&gt;
                valoare1, valoare2 = map(int, input(&amp;quot;Introduceti o pereche de valori separate prin spatiu: &amp;quot;).split())&lt;br /&gt;
                cifre1 = nrcifre(valoare1)&lt;br /&gt;
                cifre2 = nrcifre(valoare2)&lt;br /&gt;
                if cifre1 &amp;lt;= 9 and cifre2 &amp;lt;= 9:&lt;br /&gt;
                    print(&amp;quot;Datele sunt corecte.&amp;quot;)&lt;br /&gt;
                    valori.append((valoare1, valoare2))&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 cu mai putin de 9 cifre.&amp;quot;)&lt;br /&gt;
    return valori&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def pereche(valori):&lt;br /&gt;
    suma_maxima = 0&lt;br /&gt;
    for a, b in valori:&lt;br /&gt;
        suma_maxima += max(a, b)&lt;br /&gt;
    print(f&amp;quot;Suma maxima este: {suma_maxima}&amp;quot;)&lt;br /&gt;
    return&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if _name_ == &#039;_main_&#039;:&lt;br /&gt;
    n = citeste_n()&lt;br /&gt;
    valori = citeste_perechi(n)&lt;br /&gt;
    pereche(valori)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
== Explicatie ==&lt;br /&gt;
 Acest cod implementează o soluție pentru o problemă care cere să se determine cea mai mare sumă care se poate obține adunând câte un singur număr din fiecare pereche de numere citite a şi b. Programul primește de la tastatură numărul de perechi și valorile acestora, și verifică dacă acestea respectă restricțiile problemei: numărul de perechi trebuie să fie între 1 și 10000, iar numerele a și b trebuie să aibă cel mult 9 cifre. Dacă datele sunt corecte, programul afișează pe ecran suma maximă obținută.&lt;br /&gt;
&lt;br /&gt;
 Funcția citeste_n() citește de la tastatură numărul de perechi și verifică dacă acesta respectă restricțiile impuse de problema dată. Funcția nrcifre(nr) primește un număr și returnează numărul de cifre al acestuia.&lt;br /&gt;
&lt;br /&gt;
 Funcția citeste_perechi(n) primește numărul de perechi și citește de la tastatură aceste perechi de numere. &lt;br /&gt;
 Funcția verifică dacă numerele a și b respectă restricțiile problemei, adică să aibă cel mult 9 cifre. Dacă datele sunt corecte, funcția adaugă perechea de numere în lista valori.&lt;br /&gt;
&lt;br /&gt;
 Funcția pereche(valori) primește lista de perechi de numere citite de la tastatură și calculează suma maximă obținută adunând câte un singur număr din fiecare pereche de numere citite. Suma maximă este afișată pe ecran.&lt;br /&gt;
 &lt;br /&gt;
 În funcția principală main(), se citește numărul de perechi și valorile acestora folosind funcțiile citeste_n() și citeste_perechi(), și se calculează suma maximă apelând funcția pereche().&lt;/div&gt;</summary>
		<author><name>MiclausIoana</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=3391_-_Sir_Maxim&amp;diff=4485</id>
		<title>3391 - Sir Maxim</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=3391_-_Sir_Maxim&amp;diff=4485"/>
		<updated>2023-04-26T09:11:29Z</updated>

		<summary type="html">&lt;p&gt;MiclausIoana: Pagină nouă: Sursă: [https://www.pbinfo.ro/probleme/3391/sirmaxim] == Cerință == Se citește un număr &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039; și apoi &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039; numere naturale cu maxim &amp;#039;&amp;#039;&amp;#039;9&amp;#039;&amp;#039;&amp;#039; cifre. Știind că &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039; este dat par, să se determine de câte ori maximul din prima jumătate apare în șir în a doua jumătate. == Date de intrare == Programul citeşte din fișierul &amp;#039;&amp;#039;&amp;#039;sirmaxim.in&amp;#039;&amp;#039;&amp;#039; un număr n, apoi n numere narurale. == Date de ieșire ==  Dacă datele sunt introduse corect, pe ecran se va afișa: &amp;quot;...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Sursă: [https://www.pbinfo.ro/probleme/3391/sirmaxim]&lt;br /&gt;
== Cerință ==&lt;br /&gt;
Se citește un număr &#039;&#039;&#039;n&#039;&#039;&#039; și apoi &#039;&#039;&#039;n&#039;&#039;&#039; numere naturale cu maxim &#039;&#039;&#039;9&#039;&#039;&#039; cifre. Știind că &#039;&#039;&#039;n&#039;&#039;&#039; este dat par, să se determine de câte ori maximul din prima jumătate apare în șir în a doua jumătate.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Programul citeşte din fișierul &#039;&#039;&#039;sirmaxim.in&#039;&#039;&#039; un număr n, apoi n numere narurale.&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 scrie în fisierul sirmaxim.out un număr natural, reprezentând valoarea 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;
* &#039;&#039;&#039;1 ≤ n ≤ 20&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;n&#039;&#039;&#039; par&lt;br /&gt;
== Exemple ==&lt;br /&gt;
=== Exemplu 1 ===&lt;br /&gt;
; &#039;&#039;&#039;sirmaxim.in&#039;&#039;&#039;&lt;br /&gt;
: 6&lt;br /&gt;
: 1 5 2 13 5 5 &lt;br /&gt;
; &#039;&#039;&#039;sirmaxim.out&#039;&#039;&#039;&lt;br /&gt;
: 2 &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():&lt;br /&gt;
    with open(&amp;quot;sirmaxim.in&amp;quot;, &amp;quot;r&amp;quot;) as fin:&lt;br /&gt;
        n = int(fin.readline())&lt;br /&gt;
        if not (1 &amp;lt;= n &amp;lt;= 20 and n % 2 == 0):&lt;br /&gt;
            print(&amp;quot;Datele nu sunt conform restricțiilor impuse.&amp;quot;)&lt;br /&gt;
            exit()&lt;br /&gt;
        print(&amp;quot;Datele sunt corecte.&amp;quot;)&lt;br /&gt;
        return n&lt;br /&gt;
&lt;br /&gt;
def citeste_valori(n):&lt;br /&gt;
    with open(&amp;quot;sirmaxim.in&amp;quot;, &amp;quot;r&amp;quot;) as fin:&lt;br /&gt;
        fin.readline()  # skip first line&lt;br /&gt;
        valori = []&lt;br /&gt;
        for i in range(n):&lt;br /&gt;
            linie = fin.readline().strip().split()&lt;br /&gt;
            while len(linie) &amp;lt; n:&lt;br /&gt;
                linie += fin.readline().strip().split()&lt;br /&gt;
            try:&lt;br /&gt;
                for j in range(n):&lt;br /&gt;
                    x = int(linie[j])&lt;br /&gt;
                    if x &amp;lt; 0:&lt;br /&gt;
                        print(&amp;quot;Datele nu sunt conform restricțiilor impuse.&amp;quot;)&lt;br /&gt;
                        exit()&lt;br /&gt;
                    valori.append(x)&lt;br /&gt;
            except ValueError:&lt;br /&gt;
                print(&amp;quot;Trebuie introduse doar numere naturale.&amp;quot;)&lt;br /&gt;
                exit()&lt;br /&gt;
        return valori&lt;br /&gt;
&lt;br /&gt;
def sirmaxim(valori):&lt;br /&gt;
    n = len(valori)&lt;br /&gt;
    first_half = valori[:n//2]&lt;br /&gt;
    second_half = valori[n//2:]&lt;br /&gt;
    max_first_half = max(first_half)&lt;br /&gt;
    count = second_half.count(max_first_half)&lt;br /&gt;
    with open(&amp;quot;sirmaxim.out&amp;quot;, &amp;quot;w&amp;quot;) as fout:&lt;br /&gt;
        fout.write(str(count))&lt;br /&gt;
    print(f&amp;quot;Maximul din prima jumătate a apărut de {count} ori în a doua jumătate.&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
if _name_ == &#039;_main_&#039;:&lt;br /&gt;
    n = citeste_n()&lt;br /&gt;
    valori = citeste_valori(n)&lt;br /&gt;
    sirmaxim(valori)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Explicații ==&lt;br /&gt;
 Acest cod implementează o soluție pentru problema &amp;quot;sirmaxim&amp;quot;. Problema cere ca programul să citească un număr n și apoi n numere naturale cu maxim 9 cifre. De asemenea, se știe că n este dat par. Scopul este să se determine de câte ori maximul din prima jumătate a șirului apare în a doua jumătate.&lt;br /&gt;
&lt;br /&gt;
 Funcția citeste_n() deschide fișierul &amp;quot;sirmaxim.in&amp;quot; și citește prima linie, care conține numărul n. Se verifică dacă n se încadrează în restricțiile impuse (1 ≤ n ≤ 20 și n par). Dacă nu, se afișează un mesaj de eroare și programul se termină prin apelul funcției exit(). Dacă numărul este corect, se afișează un mesaj corespunzător și se returnează n.&lt;br /&gt;
&lt;br /&gt;
 Funcția citeste_valori(n) citește cele n linii următoare din fișierul &amp;quot;sirmaxim.in&amp;quot;, care conțin n numere naturale separate prin spații. Fiecare linie este citită și apoi prelucrată astfel încât să conțină exact n numere (dacă în linie nu sunt suficiente numere, se citesc și se adaugă linii suplimentare până se ajunge la n numere). Se verifică dacă fiecare număr citit este un număr natural și se adaugă într-o listă valori. Dacă se întâlnește un număr negativ, se afișează un mesaj de eroare și programul se termină prin apelul funcției exit(). &lt;br /&gt;
 Dacă se întâlnește un număr care nu este natural (de exemplu, un număr cu virgulă), se afișează un mesaj de eroare și programul se termină prin apelul funcției exit(). La final, funcția returnează lista de numere valori.&lt;br /&gt;
 &lt;br /&gt;
 Funcția sirmaxim(valori) primește ca parametru lista de numere valori și implementează algoritmul descris în enunțul problemei. Mai precis, se obține prima jumătate a listei și se găsește maximul acestei jumătăți. Apoi, se numără de câte ori acest maxim apare în a doua jumătate a listei. Rezultatul este scris în fișierul &amp;quot;sirmaxim.out&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
 În funcția main, se apelează funcțiile citeste_n(), citeste_valori(n) și sirmaxim(valori) pentru a citi datele din fișier și a determina rezultatul cerut.&lt;/div&gt;</summary>
		<author><name>MiclausIoana</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=2729_-_SAO&amp;diff=4180</id>
		<title>2729 - SAO</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=2729_-_SAO&amp;diff=4180"/>
		<updated>2023-04-22T19:27:35Z</updated>

		<summary type="html">&lt;p&gt;MiclausIoana: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Sursă: [https://www.pbinfo.ro/probleme/2729/sao]&lt;br /&gt;
== Enunt ==&lt;br /&gt;
Te afli în universul SAO (Sword Art Online pentru necunoscători). Ai la dispoziție o sumă mică de bani și &#039;&#039;&#039;m&#039;&#039;&#039; oferte. Fiecare ofertă constă într-o armură de o anumită rezistență și o sabie de o anumită putere. Tu trebuie să învingi &#039;&#039;&#039;n&#039;&#039;&#039; monștrii ale căror rezistențe și puteri sunt cunoscute. După ce ai învins un monstru, armura ta va pierde din rezistență o valoare egală cu valoarea puterii monstrului, iar sabia va pierde valoarea rezistenței monstrului. Tu vei avea nevoie de setul armură/sabie de o valoare minimă care poate să învingă toți cei &#039;&#039;&#039;n&#039;&#039;&#039; monștri.&lt;br /&gt;
== Cerinţa ==&lt;br /&gt;
Știind &#039;&#039;&#039;n&#039;&#039;&#039; – numărul de monștri, rezistența și puterea fiecăruia și &#039;&#039;&#039;m&#039;&#039;&#039; – numărul de oferte, cu rezistența armurii, puterea sabiei și prețul, să se determine costul cel mai mic pentru a învinge toți cei &#039;&#039;&#039;n&#039;&#039;&#039; monștri.&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 &#039;&#039;&#039;n&#039;&#039;&#039; perechi de numere naturale reprezentând rezistența respectiv puterea fiecărui monstru. Apoi se va citi numărul &#039;&#039;&#039;m&#039;&#039;&#039; și &#039;&#039;&#039;m&#039;&#039;&#039; triplete de numere naturale reprezentând rezistența, puterea și prețul echipamentelor.&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;V&#039;&#039;&#039;, reprezentând costul cel mai mic pentru a învinge toți cei n monștrii. Î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 ≤ 10.000&#039;&#039;&#039;&lt;br /&gt;
* cele &#039;&#039;&#039;2*n+3*m&#039;&#039;&#039; numere citite vor fi mai mici sau egale cu &#039;&#039;&#039;2*63&#039;&#039;&#039;.&lt;br /&gt;
* în cazul în care nu poate învinge toți monștrii, se va afișa &#039;&#039;&#039;-1&#039;&#039;&#039;.&lt;br /&gt;
== Exemple ==&lt;br /&gt;
=== Exemplu 1 ===&lt;br /&gt;
; Date de intrare&lt;br /&gt;
: 1&lt;br /&gt;
: 10 10&lt;br /&gt;
: 2&lt;br /&gt;
: 9 9 2&lt;br /&gt;
: 11 11 7&lt;br /&gt;
; Date de iesire&lt;br /&gt;
: 7&lt;br /&gt;
==== Explicație ====&lt;br /&gt;
Doar cea de-a doua ofertă garantează victoria.&lt;br /&gt;
=== Exemplu 2 ===&lt;br /&gt;
; Date de intrare&lt;br /&gt;
: 1&lt;br /&gt;
: 10 10&lt;br /&gt;
: 2&lt;br /&gt;
: 9 9 2&lt;br /&gt;
: 5 5 7&lt;br /&gt;
; Date de iesire&lt;br /&gt;
: -1&lt;br /&gt;
==== Explicație ====&lt;br /&gt;
Niciuna dintre oferte nu garantează victoria.&lt;br /&gt;
&lt;br /&gt;
&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():&lt;br /&gt;
    while True:&lt;br /&gt;
        try:&lt;br /&gt;
            n = int(input(&amp;quot;Introduceti numarul de monștri: &amp;quot;))&lt;br /&gt;
            if n &amp;gt;= 1 and n &amp;lt;= 10000:&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;
        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_monstri(n):&lt;br /&gt;
    monstri = []&lt;br /&gt;
    for i in range(n):&lt;br /&gt;
        while True:&lt;br /&gt;
            try:&lt;br /&gt;
                rezistenta, putere = map(int, input(&lt;br /&gt;
                    &amp;quot;Introduceti rezistența și puterea monștrilor separate prin spatiu: &amp;quot;).split())&lt;br /&gt;
                if 1 &amp;lt;= rezistenta &amp;lt;= 2 * 63 and 1 &amp;lt;= putere &amp;lt;= 2 * 63:&lt;br /&gt;
                    print(&amp;quot;Datele sunt corecte.&amp;quot;)&lt;br /&gt;
                    monstri.append((rezistenta, putere))&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;
    return monstri&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def citeste_m():&lt;br /&gt;
    while True:&lt;br /&gt;
        try:&lt;br /&gt;
            m = int(input(&amp;quot;Introduceti numarul de oferte: &amp;quot;))&lt;br /&gt;
            if m &amp;gt;= 1 and m &amp;lt;= 10000:&lt;br /&gt;
                print(&amp;quot;Datele sunt corecte.&amp;quot;)&lt;br /&gt;
                return m&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_oferte(m):&lt;br /&gt;
    oferte = []&lt;br /&gt;
    for i in range(m):&lt;br /&gt;
        while True:&lt;br /&gt;
            try:&lt;br /&gt;
                rezistenta_armura, putere_sabie, pret = map(int, input(&lt;br /&gt;
                    &amp;quot;Introduceti rezistența armurii, puterea săbiei și prețul separate prin spatiu: &amp;quot;).split())&lt;br /&gt;
                if 1 &amp;lt;= rezistenta_armura &amp;lt;= 2 * 63 and 1 &amp;lt;= putere_sabie &amp;lt;= 2 * 63 and 1 &amp;lt;= pret &amp;lt;= 2 ** 63:&lt;br /&gt;
                    print(&amp;quot;Datele sunt corecte.&amp;quot;)&lt;br /&gt;
                    oferte.append((rezistenta_armura, putere_sabie, pret))&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;
    return oferte&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def Sao(monstri, oferte):&lt;br /&gt;
    # Sortam ofertele in ordine crescatoare dupa pret&lt;br /&gt;
    oferte = sorted(oferte, key=lambda x: x[2])&lt;br /&gt;
&lt;br /&gt;
    # Pentru fiecare montru, cautam cea mai ieftina oferta care il poate invinge&lt;br /&gt;
    cost_minim = 0&lt;br /&gt;
    for i in range(len(monstri)):&lt;br /&gt;
        rez_monstru, putere_monstru = monstri[i]&lt;br /&gt;
        oferta_potrivita = False&lt;br /&gt;
        for j in range(len(oferte)):&lt;br /&gt;
            rez_armura, putere_sabie, pret = oferte[j]&lt;br /&gt;
            if rez_armura &amp;gt;= putere_monstru and putere_sabie &amp;gt;= rez_monstru:&lt;br /&gt;
                cost_minim += pret&lt;br /&gt;
                oferta_potrivita = True&lt;br /&gt;
                break&lt;br /&gt;
        if not oferta_potrivita:&lt;br /&gt;
            print(-1)&lt;br /&gt;
            return&lt;br /&gt;
&lt;br /&gt;
    print(cost_minim)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if _name_ == &#039;_main_&#039;:&lt;br /&gt;
    n = citeste_n()&lt;br /&gt;
    numere = citeste_monstri(n)&lt;br /&gt;
    m = citeste_m()&lt;br /&gt;
    numere2 = citeste_oferte(m)&lt;br /&gt;
    Sao(numere,numere2)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
== Explicații ==&lt;br /&gt;
 Acest cod implementează algoritmul Sao dintr-un joc de strategie, care constă în găsirea celei mai bune oferte pentru a invinge un set de monștri.&lt;br /&gt;
&lt;br /&gt;
 Funcția citeste_n() primește de la utilizator numărul de monștri pe care trebuie să îi învingă jucătorul și îl validează. În cazul în care numărul introdus este valid, funcția întoarce acest număr.&lt;br /&gt;
&lt;br /&gt;
 Funcția citeste_monstri(n) primește numărul de monștri n și primește de la utilizator caracteristicile fiecărui monstru: rezistența și puterea. Caracteristicile sunt validate, iar în cazul în care datele introduse sunt valide, acestea sunt adăugate într-o listă de monștri, care este returnată la final.&lt;br /&gt;
&lt;br /&gt;
 Funcția citeste_m() primește de la utilizator numărul de oferte disponibile și îl validează. În cazul în care numărul introdus este valid, funcția întoarce acest număr.&lt;br /&gt;
&lt;br /&gt;
 Funcția citeste_oferte(m) primește numărul de oferte m și primește de la utilizator caracteristicile fiecărei oferte: rezistența armurii, puterea săbiei și prețul. Caracteristicile sunt validate, iar în cazul în care datele introduse sunt valide, acestea sunt adăugate într-o listă de oferte, care este returnată la final.&lt;br /&gt;
&lt;br /&gt;
 Funcția Sao(monstri, oferte) primește listele de monștri și oferte, sortează ofertele în ordine crescătoare după preț și pentru fiecare monstru caută cea mai ieftină ofertă care îl poate învinge. Costul minim este calculat prin adunarea prețurilor celor mai bune oferte. Dacă nu există o ofertă potrivită pentru un anumit monstru, se afișează -1. La final, funcția afișează costul minim pentru a învinge toți monștrii.&lt;br /&gt;
&lt;br /&gt;
 În funcția principală (if _name_ == &#039;_main_&#039;:) sunt apelate funcțiile de citire a datelor (citeste_n(), citeste_monstri(n), citeste_m() și citeste_oferte(m)) și funcția Sao(monstri, oferte) care primește datele citite și afișează rezultatul.&lt;/div&gt;</summary>
		<author><name>MiclausIoana</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=3284_-_Calc_Par_Impar&amp;diff=4076</id>
		<title>3284 - Calc Par Impar</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=3284_-_Calc_Par_Impar&amp;diff=4076"/>
		<updated>2023-04-22T17:06:48Z</updated>

		<summary type="html">&lt;p&gt;MiclausIoana: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Sursă: [https://www.pbinfo.ro/probleme/3284/calcparimpar]&lt;br /&gt;
== Cerință ==&lt;br /&gt;
Se dau &#039;&#039;&#039;n&#039;&#039;&#039; numere naturale. Considerăm poziţiile lor numerotate de la &#039;&#039;&#039;1&#039;&#039;&#039; la &#039;&#039;&#039;n&#039;&#039;&#039;.&lt;br /&gt;
Să se determine cea mai mare valoare memorată pe o poziţie pară şi cea mai mică valoare de două cifre aflată pe o poziţie impară.&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 &#039;&#039;&#039;n&#039;&#039;&#039; numere naturale, separate prin spații.&lt;br /&gt;
== Date de ieșire ==&lt;br /&gt;
Programul va afișa pe ecran numerele &#039;&#039;&#039;x&#039;&#039;&#039; şi &#039;&#039;&#039;y&#039;&#039;&#039;, pe același rând și separate prin spațiu, reprezentând, în ordine, cele două valori calculate.&lt;br /&gt;
În cazul în care nu sunt valori de două cifre pe poziții impare se va afișa &#039;&#039;&#039;-1&#039;&#039;&#039; în contul valorii &#039;&#039;&#039;y&#039;&#039;&#039;.&lt;br /&gt;
== Restricții și precizări ==&lt;br /&gt;
* &#039;&#039;&#039;2 ≤ n ≤ 20&#039;&#039;&#039;&lt;br /&gt;
* cele &#039;&#039;&#039;n&#039;&#039;&#039; numere citite vor fi mai mici decât &#039;&#039;&#039;1.000.000.000&#039;&#039;&#039;&lt;br /&gt;
== Exemplu ==&lt;br /&gt;
; Intrare&lt;br /&gt;
: 5&lt;br /&gt;
: 1 3 3 4 8&lt;br /&gt;
; Ieșire&lt;br /&gt;
: 4 -1&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():&lt;br /&gt;
    while True:&lt;br /&gt;
        try:&lt;br /&gt;
            n = int(input(&amp;quot;Introduceti numarul de valori: &amp;quot;))&lt;br /&gt;
            if n &amp;gt;= 2 and n &amp;lt;= 20:&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;Numarul de valori trebuie sa fie intre 2 si 20.&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;
def citeste_valori(n):&lt;br /&gt;
    valori = []&lt;br /&gt;
    for i in range(n):&lt;br /&gt;
        while True:&lt;br /&gt;
            try:&lt;br /&gt;
                valoare = int(input(&amp;quot;Introduceti o valoare: &amp;quot;))&lt;br /&gt;
                if valoare &amp;gt;= 1 and valoare &amp;lt;= 1000000000 :&lt;br /&gt;
                    print(&amp;quot;Datele sunt corecte.&amp;quot;)&lt;br /&gt;
                    valori.append(valoare)&lt;br /&gt;
                    break&lt;br /&gt;
                else:&lt;br /&gt;
                    print(&amp;quot;Valoarea trebuie sa fie intre 1 si 1.000.000.000.&amp;quot;)&lt;br /&gt;
            except ValueError:&lt;br /&gt;
                print(&amp;quot;Trebuie introduse doar valori naturale.&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    return valori&lt;br /&gt;
&lt;br /&gt;
def calcParImpar(valori):&lt;br /&gt;
    max_par = -1&lt;br /&gt;
    min_impar = 100&lt;br /&gt;
    for i in range(1, len(valori) + 1):&lt;br /&gt;
        x = valori[i - 1]&lt;br /&gt;
        if i % 2 == 0:&lt;br /&gt;
            if x &amp;gt; max_par:&lt;br /&gt;
                max_par = x&lt;br /&gt;
        else:&lt;br /&gt;
            if nrcif(x) == 2 and x &amp;lt; min_impar:&lt;br /&gt;
                min_impar = x&lt;br /&gt;
&lt;br /&gt;
    if max_par == -1:&lt;br /&gt;
        print(&amp;quot;-1&amp;quot;, end=&amp;quot; &amp;quot;)&lt;br /&gt;
    else:&lt;br /&gt;
        print(max_par, end=&amp;quot; &amp;quot;)&lt;br /&gt;
    if min_impar == 100:&lt;br /&gt;
        print(&amp;quot;-1&amp;quot;)&lt;br /&gt;
    else:&lt;br /&gt;
        print(min_impar)&lt;br /&gt;
&lt;br /&gt;
def nrcif(n):&lt;br /&gt;
    cnt = 0&lt;br /&gt;
    while n:&lt;br /&gt;
        n //= 10&lt;br /&gt;
        cnt += 1&lt;br /&gt;
    return cnt&lt;br /&gt;
&lt;br /&gt;
if _name_ == &#039;_main_&#039;:&lt;br /&gt;
    n = citeste_n()&lt;br /&gt;
    valori = citeste_valori(n)&lt;br /&gt;
    calcParImpar(valori)&lt;br /&gt;
      &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
== Explicații ==&lt;br /&gt;
 Acest cod este o implementare a unei probleme care primește un număr n de valori și apoi n valori naturale. Scopul este să se calculeze valoarea maximă pară dintre toate pozițiile pare și valoarea minimă impară care are exact două cifre în reprezentarea sa.&lt;br /&gt;
&lt;br /&gt;
 Funcția citeste_n() primește numărul de valori de la utilizator și se asigură că această valoare este între 2 și 20. Funcția returnează această valoare n.&lt;br /&gt;
&lt;br /&gt;
 Funcția citeste_valori(n) citește n valori de la utilizator și se asigură că fiecare valoare este între 1 și 1.000.000.000. Aceste valori sunt adăugate într-o listă și această listă este returnată.&lt;br /&gt;
&lt;br /&gt;
 Funcția calcParImpar(valori) calculează valoarea maximă pară dintre toate pozițiile pare și valoarea minimă impară care are exact două cifre în reprezentarea sa. Pentru a face acest lucru, funcția parcurge toate valorile din lista și verifică dacă poziția este pară sau impară. Dacă poziția este pară, atunci valoarea este verificată și, dacă este pară și mai mare decât valoarea maximă pară curentă, atunci valoarea devine noua valoare maximă pară. Dacă poziția este impară, atunci valoarea este verificată și, dacă are exact două cifre și este mai mică decât valoarea minimă impară curentă, atunci valoarea devine noua valoare minimă impară.&lt;br /&gt;
&lt;br /&gt;
 Funcția nrcif(n) primește o valoare întreagă și returnează numărul de cifre din reprezentarea acelei valori.&lt;br /&gt;
&lt;br /&gt;
 În funcția principală, citeste_n() și citeste_valori(n) sunt apelate pentru a citi valorile de la utilizator, apoi calcParImpar(valori) este apelată pentru a calcula valorile dorite.&lt;/div&gt;</summary>
		<author><name>MiclausIoana</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=1875_-_Platou_1&amp;diff=4075</id>
		<title>1875 - Platou 1</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=1875_-_Platou_1&amp;diff=4075"/>
		<updated>2023-04-22T17:05:54Z</updated>

		<summary type="html">&lt;p&gt;MiclausIoana: Pagină nouă: Sursă: [https://www.pbinfo.ro/probleme/1875/platou1] == Cerinţa == Se consideră un șir de cifre. Să se determine lungimea maximală a unei secvențe din șir formată din cifre egale. == Date de intrare == Fișierul de intrare &amp;#039;&amp;#039;&amp;#039;platou1.in&amp;#039;&amp;#039;&amp;#039; conține pe prima linie cifrele reprezentând termenii șirului, separate prin câte un spațiu. == Date de ieșire == Dacă datele sunt introduse corect, pe ecran se va afișa: &amp;quot;Datele sunt corecte.&amp;quot;. Fișierul de ieșire &amp;#039;&amp;#039;&amp;#039;plato...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Sursă: [https://www.pbinfo.ro/probleme/1875/platou1]&lt;br /&gt;
== Cerinţa ==&lt;br /&gt;
Se consideră un șir de cifre. Să se determine lungimea maximală a unei secvențe din șir formată din cifre egale.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Fișierul de intrare &#039;&#039;&#039;platou1.in&#039;&#039;&#039; conține pe prima linie cifrele reprezentând termenii șirului, separate prin câte un spațiu.&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;platou1.out&#039;&#039;&#039; va conține pe prima linie două numere naturale &#039;&#039;&#039;k x&#039;&#039;&#039;, separate printr-un singur spațiu, &#039;&#039;&#039;k&#039;&#039;&#039; reprezentând lungimea secvenței determinate, iar &#039;&#039;&#039;x&#039;&#039;&#039; reprezentând termenul șirului din care este formată secvența. Î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;
* fișierul de intrare conține cel mult &#039;&#039;&#039;1.000&#039;&#039;&#039; de cifre, separate prin câte un spațiu, reprezentând termenii șirului dat;&lt;br /&gt;
* dacă șirul conține mai multe secvențe cu lungimea maximală, se va afișa cel mai mic termen ce formează o astfel de secvență.&lt;br /&gt;
== Exemple ==&lt;br /&gt;
=== Exemplu 1 ===&lt;br /&gt;
; &#039;&#039;&#039;platou1.in&#039;&#039;&#039;&lt;br /&gt;
: 3 8 8 8 8 9 9 9 2 5 5 5 5 7 6 6 6 6 8 8&lt;br /&gt;
; &#039;&#039;&#039;platou1.out&#039;&#039;&lt;br /&gt;
: 4 5&lt;br /&gt;
==== Explicatie ====&lt;br /&gt;
În fișierul de intrare sunt 3 secvențe cu lungimea maximă k=4, termenul cel mai mic fiind x=5.&lt;br /&gt;
&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 verificare():&lt;br /&gt;
    numere = []&lt;br /&gt;
    with open(&#039;platou1.in&#039;, &#039;r&#039;) as fin:&lt;br /&gt;
        while True:&lt;br /&gt;
            numar = fin.readline().strip()&lt;br /&gt;
            if not numar:&lt;br /&gt;
                break&lt;br /&gt;
            try:&lt;br /&gt;
                numar = int(numar)&lt;br /&gt;
                if numar == 0:&lt;br /&gt;
                    break&lt;br /&gt;
                elif numar &amp;gt; 0 and numar &amp;lt; 1000:&lt;br /&gt;
                    print(&amp;quot;Datele sunt corecte.&amp;quot;)&lt;br /&gt;
                    numere.append(numar)&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 respectate cerintele.&amp;quot;)&lt;br /&gt;
    return numere&lt;br /&gt;
&lt;br /&gt;
def platou1(numere):&lt;br /&gt;
    with open(&#039;platou1.out&#039;, &#039;w&#039;) as fout:&lt;br /&gt;
        xmin = 10&lt;br /&gt;
        k = 0&lt;br /&gt;
        lg = 1&lt;br /&gt;
        x = numere[0]&lt;br /&gt;
        for y in numere[1:]:&lt;br /&gt;
            if x == y:&lt;br /&gt;
                lg += 1&lt;br /&gt;
            else:&lt;br /&gt;
                if k &amp;lt; lg:&lt;br /&gt;
                    k = lg&lt;br /&gt;
                    xmin = x&lt;br /&gt;
                elif k == lg and xmin &amp;gt; x:&lt;br /&gt;
                    xmin = x&lt;br /&gt;
                lg = 1&lt;br /&gt;
                x = y&lt;br /&gt;
        with open(&#039;platou1.out&#039;, &#039;w&#039;) as fout:&lt;br /&gt;
            fout.write(f&amp;quot;{k} {xmin}\n&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
if _name_ == &#039;_main_&#039;:&lt;br /&gt;
    numere = verificare()&lt;br /&gt;
    platou1(numere)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Explicații ==&lt;br /&gt;
 Acest cod este scris în limbajul Python și constă din două funcții, verificare() și platou1(), și o secțiune if _name_ == &#039;_main_&#039;. Scopul programului este de a găsi cea mai lungă secvență consecutivă de numere identice dintr-o listă de numere citită dintr-un fișier și de a afișa lungimea acelei secvențe și cel mai mic număr din acea secvență.&lt;br /&gt;
&lt;br /&gt;
 Funcția verificare() primește datele de intrare din fișierul &amp;quot;platou1.in&amp;quot;. Fiecare linie este citită și verificată dacă poate fi convertită într-un număr întreg. Numerele întregi pozitive mai mici decât 1000 sunt adăugate într-o listă numere, în timp ce numerele care nu îndeplinesc această cerință sunt ignorate. Dacă se întâlnește numărul zero, citirea se oprește și lista numere este returnată.&lt;br /&gt;
&lt;br /&gt;
 Funcția platou1() primește lista numere și deschide fișierul &amp;quot;platou1.out&amp;quot; pentru a scrie rezultatul. Folosind o buclă for, funcția compară fiecare element din listă cu elementul anterior. Dacă cele două elemente sunt identice, variabila lg este incrementată. Dacă nu sunt identice, variabila k este actualizată cu lungimea maximă de până acum a secvenței și variabila xmin este actualizată cu cel mai mic număr din secvența curentă dacă aceasta are aceeași lungime ca și secvența maximă până în acel moment. Lungimea secvenței curente este resetată la 1 și se trece la următorul număr din listă.&lt;br /&gt;
&lt;br /&gt;
 La final, funcția deschide fișierul &amp;quot;platou1.out&amp;quot; și scrie rezultatul sub formă de linie unică, care conține lungimea secvenței maxime și cel mai mic număr din acea secvență.&lt;br /&gt;
&lt;br /&gt;
 Secțiunea if _name_ == &#039;_main_&#039; verifică dacă acest script este rulat direct sau este importat ca modul în altă parte. Dacă este rulat direct, funcția verificare() este apelată pentru a citi datele din fișier și a construi lista de numere, iar apoi funcția platou1() este apelată cu această listă pentru a calcula și scrie rezultatul în fișierul &amp;quot;platou1.out&amp;quot;.&lt;/div&gt;</summary>
		<author><name>MiclausIoana</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=0561_-_Rafaelo&amp;diff=4072</id>
		<title>0561 - Rafaelo</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=0561_-_Rafaelo&amp;diff=4072"/>
		<updated>2023-04-22T16:59:27Z</updated>

		<summary type="html">&lt;p&gt;MiclausIoana: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Sursă: [https://www.pbinfo.ro/probleme/561/rafaelo]&lt;br /&gt;
== Enunț ==&lt;br /&gt;
Alina dispune de o sumă &#039;&#039;&#039;S&#039;&#039;&#039; de bani. Apropiindu-se ziua ei de naștere, vrea să cumpere cât mai multe cutii cu bomboane Rafaelo. Alina are la dispoziție &#039;&#039;&#039;N&#039;&#039;&#039; magazine din care poate face această alegere. Cunoscând prețul unei cutii de bomboane Rafaelo în fiecare magazin și faptul că va cumpăra toate cutiile cu bomboane din același magazin, ajutați-o pe Alina să facă această alegere astfel încât să nu depășească suma &#039;&#039;&#039;S&#039;&#039;&#039; de care dispune.&lt;br /&gt;
== Cerință ==&lt;br /&gt;
Cunoscând suma &#039;&#039;&#039;S&#039;&#039;&#039; de bani, numărul &#039;&#039;&#039;N&#039;&#039;&#039; de magazine și &#039;&#039;&#039;p1&#039;&#039;&#039;, &#039;&#039;&#039;p2&#039;&#039;&#039;, &#039;&#039;&#039;p3&#039;&#039;&#039;,… , &#039;&#039;&#039;pN&#039;&#039;&#039; prețul unei cutii de bomboane Rafaelo în fiecare magazin, stabiliți numărul maxim de cutii de bomboane ce poate fi cumpărat și magazinul din care pot fi cumpărate. Dacă sunt mai multe astfel de magazine se va afișa primul dintre ele în ordinea în care au fost date.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Programul citește de la tastatură separate prin spații suma &#039;&#039;&#039;S&#039;&#039;&#039;, &#039;&#039;&#039;N&#039;&#039;&#039; numărul de magazine și apoi &#039;&#039;&#039;N&#039;&#039;&#039; numere naturale nenule separate prin spații, reprezentând prețul unei cutii cu bomboane Rafaelo în fiecare magazin.&lt;br /&gt;
== Date de ieșire ==&lt;br /&gt;
Programul afișează pe ecran două numere naturale &#039;&#039;&#039;x&#039;&#039;&#039; și &#039;&#039;&#039;y&#039;&#039;&#039;, separate prin exact un spațiu, reprezentând numărul maxim de cutii cu bomboane Rafaelo ce pot fi cumpărate, respectiv magazinul din care pot fi cumpărate.&lt;br /&gt;
== Restricții și precizări ==&lt;br /&gt;
* &#039;&#039;&#039;1 ≤ N ≤ 100&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;1 ≤ S ≤ 10000&#039;&#039;&#039;&lt;br /&gt;
* Prețul unei cutii cu bomboane este un număr natural nenul mai mic sau egal cu &#039;&#039;&#039;1000&#039;&#039;&#039;.&lt;br /&gt;
* Cel puțin un magazin are prețul unei cutii cu bomboane mai mic sau egal cu &#039;&#039;&#039;S&#039;&#039;&#039;.&lt;br /&gt;
== Exemplu ==&lt;br /&gt;
; Intrare&lt;br /&gt;
: 20 5&lt;br /&gt;
: 9 3 4 8 3&lt;br /&gt;
; Ieșire&lt;br /&gt;
: 6 2&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():&lt;br /&gt;
    while True:&lt;br /&gt;
        try:&lt;br /&gt;
            n = int(input(&amp;quot;Introduceti numarul de valori: &amp;quot;))&lt;br /&gt;
            s = int(input(&amp;quot;Introduceti suma de bani: &amp;quot;))&lt;br /&gt;
            if 1&amp;lt;= n &amp;lt;= 100 and 1&amp;lt;= s &amp;lt;= 10000:&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;Numarul de valori trebuie sa fie intre 2 si 20.&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;
def citeste_valori(n):&lt;br /&gt;
    valori = []&lt;br /&gt;
    for i in range(n):&lt;br /&gt;
        while True:&lt;br /&gt;
            try:&lt;br /&gt;
                valoare = int(input(&amp;quot;Introduceti o valoare: &amp;quot;))&lt;br /&gt;
                if valoare &amp;gt;= 1 and valoare &amp;lt;= 1000000000 :&lt;br /&gt;
                    print(&amp;quot;Datele sunt corecte.&amp;quot;)&lt;br /&gt;
                    valori.append(valoare)&lt;br /&gt;
                    break&lt;br /&gt;
                else:&lt;br /&gt;
                    print(&amp;quot;Valoarea trebuie sa fie intre 1 si 1.000.000.000.&amp;quot;)&lt;br /&gt;
            except ValueError:&lt;br /&gt;
                print(&amp;quot;Trebuie introduse doar valori naturale.&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    return valori&lt;br /&gt;
&lt;br /&gt;
def rafaelo(s, valori):&lt;br /&gt;
    max_cutii = 0&lt;br /&gt;
    magazin = 0&lt;br /&gt;
    for i in range(len(valori)):&lt;br /&gt;
        if s // valori[i] &amp;gt; max_cutii:&lt;br /&gt;
            max_cutii = s // valori[i]&lt;br /&gt;
            magazin = i + 1&lt;br /&gt;
&lt;br /&gt;
    print(&amp;quot;Se pot cumpara maxim&amp;quot;, max_cutii, &amp;quot;cutii de bomboane de la magazinul&amp;quot;, magazin)&lt;br /&gt;
&lt;br /&gt;
if _name_ == &#039;_main_&#039;:&lt;br /&gt;
    n = citeste_n()&lt;br /&gt;
    valori = citeste_valori(n)&lt;br /&gt;
    s = int(input(&amp;quot;Introduceti suma de bani: &amp;quot;))&lt;br /&gt;
    rafaelo(s, valori)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
== Explicatie ==&lt;br /&gt;
 Acest cod este o implementare a algoritmului de rezolvare a problemei &amp;quot;Rafaelo&amp;quot;, care are ca scop determinarea numărului maxim de cutii de bomboane ce pot fi cumpărate cu o anumită sumă de bani, dintr-un set de prețuri de la mai multe magazine.&lt;br /&gt;
&lt;br /&gt;
 Funcția citeste_n() primește de la utilizator numărul de valori și suma de bani, verificând dacă valorile introduse respectă condițiile din enunțul problemei. În cazul în care valorile sunt corecte, funcția returnează numărul de valori introduse.&lt;br /&gt;
&lt;br /&gt;
 Funcția citeste_valori(n) primește numărul de valori și returnează o listă de valori introduse de utilizator. Această funcție verifică dacă valorile introduse sunt corecte și le adaugă în listă.&lt;br /&gt;
&lt;br /&gt;
 Funcția rafaelo(s, valori) primește suma de bani și lista de prețuri, iar apoi utilizează o buclă for pentru a verifica fiecare preț din listă. Dacă suma de bani împărțită la preț este mai mare decât numărul maxim de cutii până acum, se actualizează valoarea maximă și se memorează numărul magazinului de unde trebuie achiziționate cutiile de bomboane.&lt;br /&gt;
&lt;br /&gt;
 În cele din urmă, funcția afișează rezultatul obținut, adică numărul maxim de cutii de bomboane care pot fi cumpărate și magazinul de unde trebuie achiziționate cutiile de bomboane.&lt;/div&gt;</summary>
		<author><name>MiclausIoana</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=3284_-_Calc_Par_Impar&amp;diff=4071</id>
		<title>3284 - Calc Par Impar</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=3284_-_Calc_Par_Impar&amp;diff=4071"/>
		<updated>2023-04-22T16:57:42Z</updated>

		<summary type="html">&lt;p&gt;MiclausIoana: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Sursă: [https://www.pbinfo.ro/probleme/3284/calcparimpar]&lt;br /&gt;
== Cerință ==&lt;br /&gt;
Se dau &#039;&#039;&#039;n&#039;&#039;&#039; numere naturale. Considerăm poziţiile lor numerotate de la &#039;&#039;&#039;1&#039;&#039;&#039; la &#039;&#039;&#039;n&#039;&#039;&#039;.&lt;br /&gt;
Să se determine cea mai mare valoare memorată pe o poziţie pară şi cea mai mică valoare de două cifre aflată pe o poziţie impară.&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 &#039;&#039;&#039;n&#039;&#039;&#039; numere naturale, separate prin spații.&lt;br /&gt;
== Date de ieșire ==&lt;br /&gt;
Programul va afișa pe ecran numerele &#039;&#039;&#039;x&#039;&#039;&#039; şi &#039;&#039;&#039;y&#039;&#039;&#039;, pe același rând și separate prin spațiu, reprezentând, în ordine, cele două valori calculate.&lt;br /&gt;
În cazul în care nu sunt valori de două cifre pe poziții impare se va afișa &#039;&#039;&#039;-1&#039;&#039;&#039; în contul valorii &#039;&#039;&#039;y&#039;&#039;&#039;.&lt;br /&gt;
== Restricții și precizări ==&lt;br /&gt;
* &#039;&#039;&#039;2 ≤ n ≤ 20&#039;&#039;&#039;&lt;br /&gt;
* cele &#039;&#039;&#039;n&#039;&#039;&#039; numere citite vor fi mai mici decât &#039;&#039;&#039;1.000.000.000&#039;&#039;&#039;&lt;br /&gt;
== Exemplu ==&lt;br /&gt;
; Intrare&lt;br /&gt;
: 5&lt;br /&gt;
: 1 3 3 4 8&lt;br /&gt;
; Ieșire&lt;br /&gt;
: 4 -1&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():&lt;br /&gt;
    while True:&lt;br /&gt;
        try:&lt;br /&gt;
            n = int(input(&amp;quot;Introduceti numarul de valori: &amp;quot;))&lt;br /&gt;
            if n &amp;gt;= 2 and n &amp;lt;= 20:&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;Numarul de valori trebuie sa fie intre 2 si 20.&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;
def citeste_valori(n):&lt;br /&gt;
    valori = []&lt;br /&gt;
    for i in range(n):&lt;br /&gt;
        while True:&lt;br /&gt;
            try:&lt;br /&gt;
                valoare = int(input(&amp;quot;Introduceti o valoare: &amp;quot;))&lt;br /&gt;
                if valoare &amp;gt;= 1 and valoare &amp;lt;= 1000000000 :&lt;br /&gt;
                    print(&amp;quot;Datele sunt corecte.&amp;quot;)&lt;br /&gt;
                    valori.append(valoare)&lt;br /&gt;
                    break&lt;br /&gt;
                else:&lt;br /&gt;
                    print(&amp;quot;Valoarea trebuie sa fie intre 1 si 1.000.000.000.&amp;quot;)&lt;br /&gt;
            except ValueError:&lt;br /&gt;
                print(&amp;quot;Trebuie introduse doar valori naturale.&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    return valori&lt;br /&gt;
&lt;br /&gt;
def calcParImpar(valori):&lt;br /&gt;
    max_par = -1&lt;br /&gt;
    min_impar = 100&lt;br /&gt;
    for i in range(1, len(valori) + 1):&lt;br /&gt;
        x = valori[i - 1]&lt;br /&gt;
        if i % 2 == 0:&lt;br /&gt;
            if x &amp;gt; max_par:&lt;br /&gt;
                max_par = x&lt;br /&gt;
        else:&lt;br /&gt;
            if nrcif(x) == 2 and x &amp;lt; min_impar:&lt;br /&gt;
                min_impar = x&lt;br /&gt;
&lt;br /&gt;
    if max_par == -1:&lt;br /&gt;
        print(&amp;quot;-1&amp;quot;, end=&amp;quot; &amp;quot;)&lt;br /&gt;
    else:&lt;br /&gt;
        print(max_par, end=&amp;quot; &amp;quot;)&lt;br /&gt;
    if min_impar == 100:&lt;br /&gt;
        print(&amp;quot;-1&amp;quot;)&lt;br /&gt;
    else:&lt;br /&gt;
        print(min_impar)&lt;br /&gt;
&lt;br /&gt;
def nrcif(n):&lt;br /&gt;
    cnt = 0&lt;br /&gt;
    while n:&lt;br /&gt;
        n //= 10&lt;br /&gt;
        cnt += 1&lt;br /&gt;
    return cnt&lt;br /&gt;
&lt;br /&gt;
if _name_ == &#039;_main_&#039;:&lt;br /&gt;
    n = citeste_n()&lt;br /&gt;
    valori = citeste_valori(n)&lt;br /&gt;
    calcParImpar(valori)&lt;br /&gt;
      &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>MiclausIoana</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=1878_-_Nr_Asoc&amp;diff=3974</id>
		<title>1878 - Nr Asoc</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=1878_-_Nr_Asoc&amp;diff=3974"/>
		<updated>2023-04-22T08:05:47Z</updated>

		<summary type="html">&lt;p&gt;MiclausIoana: Pagină nouă: Sursă: [https://www.pbinfo.ro/probleme/1878/nrasoc] == Cerinţa == Se consideră un șir ai cărui termeni sunt numere naturale nenule, de o singură cifră. Numim &amp;#039;&amp;#039;&amp;#039;număr asociat&amp;#039;&amp;#039;&amp;#039; al acestui șir un număr natural format cu termenii șirului, în ordinea în care aceștia apar în șir. Se cere determinarea unui șir obținut prin eliminarea a doi termeni situați pe poziții consecutive în șirului dat, astfel încât numărul asociat șirului obținut să fie maxim....&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Sursă: [https://www.pbinfo.ro/probleme/1878/nrasoc]&lt;br /&gt;
== Cerinţa ==&lt;br /&gt;
Se consideră un șir ai cărui termeni sunt numere naturale nenule, de o singură cifră. Numim &#039;&#039;&#039;număr asociat&#039;&#039;&#039; al acestui șir un număr natural format cu termenii șirului, în ordinea în care aceștia apar în șir.&lt;br /&gt;
Se cere determinarea unui șir obținut prin eliminarea a doi termeni situați pe poziții consecutive în șirului dat, astfel încât numărul asociat șirului obținut să fie maxim.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Fișierul de intrare &#039;&#039;&#039;nrasoc.in&#039;&#039;&#039; conține pe prima linie o succesiune de cifre, separate prin câte un spațiu, reprezentând termenii șirului dat.&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;nrasoc.out&#039;&#039;&#039; va conține pe prima linie un șir de cifre, separate prin câte un spațiu, reprezentând șirul corespunzător numărului asociat maxim. Î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;
* fișierul de intrare conține cel mult &#039;&#039;&#039;80&#039;&#039;&#039; de cifre.&lt;br /&gt;
== Exemple ==&lt;br /&gt;
=== Exemplu 1 ===&lt;br /&gt;
; &#039;&#039;&#039;nrasoc.in&#039;&#039;&#039;&lt;br /&gt;
: 9 8 5 7 6 2 3 4&lt;br /&gt;
; &#039;&#039;&#039;nrasoc.out&#039;&#039;&#039;&lt;br /&gt;
: 9 8 6 2 3 4&lt;br /&gt;
==== Explicatie ====&lt;br /&gt;
Numerele asociate șirurilor care se pot obține sunt &#039;&#039;&#039;576234&#039;&#039;&#039;, &#039;&#039;&#039;976234&#039;&#039;&#039;, &#039;&#039;&#039;986234&#039;&#039;&#039;, &#039;&#039;&#039;2985234&#039;&#039;&#039;, &#039;&#039;&#039;985734&#039;&#039;&#039;, &#039;&#039;&#039;985764&#039;&#039;&#039;, &#039;&#039;&#039;985762&#039;&#039;&#039;. Fișierul de ieșire va conține:&lt;br /&gt;
&#039;&#039;&#039;9 8 6 2 3 4&#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 citeste_șir():&lt;br /&gt;
    while True:&lt;br /&gt;
        try:&lt;br /&gt;
            with open(&#039;nrasoc.in&#039;) as fin:&lt;br /&gt;
                a = [int(x) for x in fin.read().split()]&lt;br /&gt;
                if len(a) &amp;lt;= 80:&lt;br /&gt;
                    print(&amp;quot;Datele sunt corecte.&amp;quot;)&lt;br /&gt;
                    return a&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 întregi.&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
def nrasoc():&lt;br /&gt;
    a = citeste_șir()&lt;br /&gt;
    n = len(a)&lt;br /&gt;
    max_numar = -1&lt;br /&gt;
    for i in range(1, n - 1):&lt;br /&gt;
        numar = int(str(a[i - 1]) + str(a[i + 1]))&lt;br /&gt;
        if numar &amp;gt; max_numar:&lt;br /&gt;
            max_numar = numar&lt;br /&gt;
            poz = i&lt;br /&gt;
    rezultat = [str(x) for i, x in enumerate(a) if i != poz and i != poz + 1]&lt;br /&gt;
    with open(&#039;nrasoc.out&#039;, &#039;w&#039;) as fout:&lt;br /&gt;
        fout.write(&#039; &#039;.join(rezultat))&lt;br /&gt;
&lt;br /&gt;
if _name_ == &#039;_main_&#039;:&lt;br /&gt;
    nrasoc()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Explicații ==&lt;br /&gt;
 Acest cod este o implementare în Python a problemei &amp;quot;Numărul asociat&amp;quot; (nrasoc). În esență, problema cere să se elimine două elemente consecutive dintr-un șir de cifre, astfel încât numărul format din restul cifrelor să fie maxim.&lt;br /&gt;
&lt;br /&gt;
 În primul rând, există două funcții definite în cod: citeste_k() și nrasoc().&lt;br /&gt;
&lt;br /&gt;
 Funcția citeste_k() este utilizată pentru a citi valoarea cifrei k din consolă și pentru a verifica dacă aceasta respectă restricțiile impuse (să fie între 0 și 9). Funcția returnează k doar dacă acesta este valid.&lt;br /&gt;
&lt;br /&gt;
 Funcția nrasoc() este funcția principală a programului și se ocupă de citirea datelor din fișierul de intrare (nrasoc.in), prelucrarea lor și scrierea rezultatelor în fișierul de ieșire (nrasoc.out).&lt;br /&gt;
&lt;br /&gt;
 În interiorul acestei funcții, se deschid fișierele de intrare și de ieșire utilizând o clauză with, ceea ce înseamnă că acestea vor fi automat închise la finalul blocului de cod. Datele din fișierul de intrare sunt citite și stocate într-un array numit a.&lt;br /&gt;
&lt;br /&gt;
 Apoi, se aplică algoritmul descris în enunț pentru a găsi șirul corespunzător numărului asociat maxim. Se parcurge șirul de la primul element până la penultimul și se calculează două numere p și q format din câte două cifre, începând de la elementul curent și următorul. Dacă p este mai mic decât q și acesta este primul astfel de caz întâlnit, se trece peste elementul următor și se memorează acest lucru în variabila cnt. În caz contrar, elementul curent este scris în fișierul de ieșire.&lt;br /&gt;
&lt;br /&gt;
 La final, se verifică dacă s-a ajuns la ultimele două elemente din șir (penultimul și ultimul). Dacă da și cnt este încă 0, atunci se scrie ultimul element în fișierul de ieșire.&lt;br /&gt;
&lt;br /&gt;
 În main, se apelează cele două funcții pentru a rezolva problema.&lt;br /&gt;
&lt;br /&gt;
 În general, acest cod respectă bunele practici de programare, cum ar fi folosirea de variabile cu denumiri sugestive, comentarea codului acolo unde este necesar, respectarea indentării și utilizarea unor funcții separate pentru a împărți sarcinile în codul mai mic.&lt;/div&gt;</summary>
		<author><name>MiclausIoana</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=2781_-_Wildfire&amp;diff=3967</id>
		<title>2781 - Wildfire</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=2781_-_Wildfire&amp;diff=3967"/>
		<updated>2023-04-22T07:48:53Z</updated>

		<summary type="html">&lt;p&gt;MiclausIoana: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Sursă: [https://www.pbinfo.ro/probleme/2781/wildfire]&lt;br /&gt;
== Enunț ==&lt;br /&gt;
Se consideră o pădure ce conține &#039;&#039;&#039;n•m&#039;&#039;&#039; copaci aranjați pe &#039;&#039;&#039;n&#039;&#039;&#039; linii și &#039;&#039;&#039;m&#039;&#039;&#039; coloane în care s-a produs un incendiu. Pădurarii cunosc coordonatele &#039;&#039;&#039;x&#039;&#039;&#039; și &#039;&#039;&#039;y&#039;&#039;&#039; ale copacului de la care a izbucnit focul și modalitatea prin care acesta se extinde. Astfel, dacă un copac se aprinde într-o anumită zi, în ziua următoare se vor aprind copacii vecini cu acesta pe linie sau coloană care nu sunt încă afectați de incendiu.&lt;br /&gt;
== Cerință ==&lt;br /&gt;
Știind &#039;&#039;&#039;x&#039;&#039;&#039; și &#039;&#039;&#039;y&#039;&#039;&#039;, coordonatele inițiale ale focului și &#039;&#039;&#039;n&#039;&#039;&#039; și &#039;&#039;&#039;m&#039;&#039;&#039;, dimensiunile pădurii, ajutați pădurarii să determine numărul minim de zile după care întreaga pădure va fi afectată.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Programul citește de la tastatură numerele &#039;&#039;&#039;x y n m&#039;&#039;&#039;, cu semnificația de mai sus.&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;Z&#039;&#039;&#039;, reprezentând numărul de zile după care va fi afectată întreaga pădure. Î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 ≤ x ≤ n ≤ 1.000.000.000&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;1 ≤ y ≤ m ≤ 1.000.000.000&#039;&#039;&#039;&lt;br /&gt;
== Exemple ==&lt;br /&gt;
=== Exemplu 1 ===&lt;br /&gt;
În funcție de numărul de zile, fiecare zonă va fi distrusă în numărul de zile corespunzător figurii de mai jos:&lt;br /&gt;
; Intrare&lt;br /&gt;
: 2 2 4 5&lt;br /&gt;
; Ieșire&lt;br /&gt;
: 6&lt;br /&gt;
=== Exemplu 2 ===&lt;br /&gt;
; Intrare&lt;br /&gt;
: 2 2 0 6&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele nu sunt comform restricțiilor impuse&lt;br /&gt;
=== Exemplu 3 ===&lt;br /&gt;
; Intrare&lt;br /&gt;
: 2 -2 0 5&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele nu sunt comform restricțiilor impuse&lt;br /&gt;
==== Explicație ====&lt;br /&gt;
În funcție de numărul de zile, fiecare zonă va fi distrusă în numărul de zile corespunzător figurii de mai jos:&lt;br /&gt;
=== Exemplu 3 ===&lt;br /&gt;
; Intrare&lt;br /&gt;
: 3 3 9 9&lt;br /&gt;
; Ieșire&lt;br /&gt;
: 13&lt;br /&gt;
==== Explicație ====&lt;br /&gt;
În funcție de numărul de zile, fiecare zonă va fi distrusă în numărul de zile corespunzător figurii de mai jos:&lt;br /&gt;
: 5 4 3 4 5 6 7 8 9&lt;br /&gt;
: 4 3 2 3 4 5 6 7 8&lt;br /&gt;
: 3 2 1 2 3 4 5 6 7&lt;br /&gt;
: 4 3 2 3 4 5 6 7 8&lt;br /&gt;
: 5 4 3 4 5 6 7 8 9&lt;br /&gt;
: 6 5 4 5 6 7 8 9 10&lt;br /&gt;
: 7 6 5 6 7 8 9 10 11&lt;br /&gt;
: 8 7 6 7 8 9 10 11 12&lt;br /&gt;
: 9 8 7 8 9 10 11 12 13&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_valori():&lt;br /&gt;
    valori = []&lt;br /&gt;
    for i in range(4):&lt;br /&gt;
        while True:&lt;br /&gt;
            try:&lt;br /&gt;
                valoare = int(input(&amp;quot;Introduceti o valoare: &amp;quot;))&lt;br /&gt;
                if valoare &amp;gt;= 1 and valoare &amp;lt;= 1000000000:&lt;br /&gt;
                    print(&amp;quot;Datele sunt corecte.&amp;quot;)&lt;br /&gt;
                    valori.append(valoare)&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 naturale cu mai putin de 10 cifre.&amp;quot;)&lt;br /&gt;
    return valori&lt;br /&gt;
&lt;br /&gt;
def numar_zile(valori):&lt;br /&gt;
    x, y, n, m = valori&lt;br /&gt;
    lc1 = x + y - 2&lt;br /&gt;
    lc2 = x - 1 + m - y&lt;br /&gt;
    lc3 = y - 1 + n - x&lt;br /&gt;
    lc4 = m - y + n - x&lt;br /&gt;
    return max(lc1, lc2, lc3, lc4) + 1&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    valori = citeste_valori()&lt;br /&gt;
    Z = numar_zile(valori)&lt;br /&gt;
    print(&amp;quot;Numărul de zile după care va fi afectată întreaga pădure este:&amp;quot;, Z)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
== Explicații ==&lt;br /&gt;
 citeste_valori(): Această funcție citește de la tastatură patru valori întregi și le validează astfel încât să se încadreze în anumite restricții. Dacă valorile nu se încadrează în aceste restricții, utilizatorul este notificat și trebuie să introducă din nou valorile până când acestea sunt corecte. Funcția returnează lista valorilor corecte.&lt;br /&gt;
&lt;br /&gt;
 numar_zile(): Această funcție primește o listă de patru valori întregi și calculează numărul de zile după care va fi afectată întreaga pădure. Acest calcul este realizat folosind patru formule matematice, care iau în considerare poziția arborelui inițial (x, y) și a celui final (n, m). Funcția returnează numărul de zile calculat.&lt;br /&gt;
&lt;br /&gt;
 La final, programul apelează cele două funcții și afișează numărul de zile obținut.&lt;/div&gt;</summary>
		<author><name>MiclausIoana</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=0347_-_Suma_Max_Min&amp;diff=3963</id>
		<title>0347 - Suma Max Min</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=0347_-_Suma_Max_Min&amp;diff=3963"/>
		<updated>2023-04-22T07:44:47Z</updated>

		<summary type="html">&lt;p&gt;MiclausIoana: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Sursă: [https://www.pbinfo.ro/probleme/347/summaxmin]&lt;br /&gt;
== Cerință ==&lt;br /&gt;
Se dau &#039;&#039;&#039;n&#039;&#039;&#039; numere naturale. Calculaţi suma dintre cel mai mare și cel mai mic număr dat.&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 &#039;&#039;&#039;n&#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 afișează pe ecran numărul &#039;&#039;&#039;S&#039;&#039;&#039;, reprezentând suma dintre cel mai mare și cel mai mic număr dat. Î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;
* 1 ≤ &#039;&#039;&#039;n&#039;&#039;&#039; ≤ 100&lt;br /&gt;
* cele &#039;&#039;&#039;n&#039;&#039;&#039; numere citite vor avea cel mult &#039;&#039;&#039;6&#039;&#039;&#039; cifre&lt;br /&gt;
== Exemple ===&lt;br /&gt;
=== Exemplu 1 ===&lt;br /&gt;
; Date de intrare&lt;br /&gt;
: 5&lt;br /&gt;
: 7 2 8 4 8&lt;br /&gt;
; Date de ieșire&lt;br /&gt;
: Datele sunt corecte. Rezultat: 10&lt;br /&gt;
=== Exemplu 2 ===&lt;br /&gt;
; Date de intrare&lt;br /&gt;
: 6&lt;br /&gt;
: 8 6 5 4 7 8&lt;br /&gt;
; Date de ieșire&lt;br /&gt;
: Datele sunt corecte. Rezultat:12&lt;br /&gt;
=== Exemplu 3 ===&lt;br /&gt;
; Date de intrare&lt;br /&gt;
: 4&lt;br /&gt;
: 1 86547458968 3 4 &lt;br /&gt;
; Date de ieșire&lt;br /&gt;
: Datele nu sunt conform restricțiilor impuse.&lt;br /&gt;
==== Explicație ====&lt;br /&gt;
; &#039;&#039;&#039;8 + 2 = 10.&#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 citeste_n():&lt;br /&gt;
    while True:&lt;br /&gt;
        try:&lt;br /&gt;
            n = int(input(&amp;quot;Introduceti numarul de valori: &amp;quot;))&lt;br /&gt;
            if n &amp;gt;= 1 and n &amp;lt;= 1000:&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 restricțiilor 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;
&lt;br /&gt;
def nrcifre(nr):&lt;br /&gt;
    nrcif = 0&lt;br /&gt;
    while nr != 0:&lt;br /&gt;
        nrcif += 1&lt;br /&gt;
        nr //= 10&lt;br /&gt;
    return nrcif&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def citeste_valori(n):&lt;br /&gt;
    valori = []&lt;br /&gt;
    for i in range(n):&lt;br /&gt;
        valoare = input(&amp;quot;Introduceti o valoare: &amp;quot;)&lt;br /&gt;
        while True:&lt;br /&gt;
            try:&lt;br /&gt;
                cifre = nrcifre(int(valoare))&lt;br /&gt;
                if cifre &amp;lt;= 9:&lt;br /&gt;
                    print(&amp;quot;Datele sunt corecte.&amp;quot;)&lt;br /&gt;
                    valori.append(int(valoare))&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;
                    exit()&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;
                exit()&lt;br /&gt;
    return valori&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def gaseste_suma(valori):&lt;br /&gt;
    numar_minim = 100&lt;br /&gt;
    numar_maxim = 0&lt;br /&gt;
    for x in valori:&lt;br /&gt;
        if numar_maxim is None or x &amp;gt; numar_maxim:&lt;br /&gt;
            numar_maxim = x&lt;br /&gt;
        if numar_minim is None or x &amp;lt; numar_minim:&lt;br /&gt;
            numar_minim = x&lt;br /&gt;
    suma = numar_maxim + numar_minim&lt;br /&gt;
    return suma&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    n = citeste_n()&lt;br /&gt;
    valori = citeste_valori(n)&lt;br /&gt;
    sum = gaseste_suma(valori)&lt;br /&gt;
    print(&amp;quot;Suma dintre numarul minim și maxim este:&amp;quot;, sum)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Explicații ==&lt;br /&gt;
   Acest cod reprezintă o aplicație simplă care citește un număr specificat de valori de la tastatură, verifică dacă acestea respectă anumite restricții, găsește valoarea maximă dintre acestea și o afișează la final.&lt;br /&gt;
   Funcția citeste_n() primește numărul de valori de la utilizator și verifică dacă acesta respectă restricțiile impuse (număr întreg între 1 și 1000). Dacă valorile introduse de utilizator nu respectă restricțiile sau nu sunt un număr întreg, funcția afișează un mesaj de eroare și încheie programul.&lt;br /&gt;
   Funcția nrcifre(nr) primește un număr și returnează numărul de cifre ale acestuia.&lt;br /&gt;
   Funcția citeste_valori(n) primește ca parametru un număr întreg n și citește n valori de la utilizator. În timpul citirii, acesta verifică dacă valorile introduse de utilizator au mai puțin de 9 cifre și dacă nu, cere introducerea altor valori.Dacă valorile introduse de utilizator sunt conforme cu restricțiile impuse, acestea sunt adăugate într-o listă valori, care este returnată de subprogram.&lt;br /&gt;
   În programul principal, se citește un număr întreg n, se apelează subprogramul citeste_valori(n) pentru a citi n valori, se găsește cel mai mic și cel mai mare număr din lista de valori, se face suma lor folosind subprogramul gaseste_suma(valori) și o afișează.&lt;/div&gt;</summary>
		<author><name>MiclausIoana</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=1881_-_Platou_4&amp;diff=3956</id>
		<title>1881 - Platou 4</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=1881_-_Platou_4&amp;diff=3956"/>
		<updated>2023-04-22T07:04:09Z</updated>

		<summary type="html">&lt;p&gt;MiclausIoana: Pagină nouă: Sursă: [https://www.pbinfo.ro/probleme/1881/platou4] == Cerinţa == Se consideră un şir &amp;#039;&amp;#039;&amp;#039;s&amp;#039;&amp;#039;&amp;#039; format din numere întregi. Să se determine numărul de termeni ai şirului obţinut prin eliminarea din cele două extremităţi ale lui &amp;#039;&amp;#039;&amp;#039;s&amp;#039;&amp;#039;&amp;#039; a unui număr minim de termeni, astfel încât şirul rezultat să înceapă şi să se termine cu câte un număr par. == Date de intrare == Fișierul de intrare &amp;#039;&amp;#039;&amp;#039;platou4.in&amp;#039;&amp;#039;&amp;#039; conține numere întregi separate prin spații. == Dat...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Sursă: [https://www.pbinfo.ro/probleme/1881/platou4]&lt;br /&gt;
== Cerinţa ==&lt;br /&gt;
Se consideră un şir &#039;&#039;&#039;s&#039;&#039;&#039; format din numere întregi. Să se determine numărul de termeni ai şirului obţinut prin eliminarea din cele două extremităţi ale lui &#039;&#039;&#039;s&#039;&#039;&#039; a unui număr minim de termeni, astfel încât şirul rezultat să înceapă şi să se termine cu câte un număr par.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Fișierul de intrare &#039;&#039;&#039;platou4.in&#039;&#039;&#039; conține numere întregi 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;. Fișierul de ieșire &#039;&#039;&#039;platou4.out&#039;&#039;&#039; va conține pe prima linie numărul &#039;&#039;&#039;k&#039;&#039;&#039;, reprezentând lungimea șirului obținut. Î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;
* fișierul de intrare conține cel mult &#039;&#039;&#039;1000&#039;&#039;&#039; de numere întregi&lt;br /&gt;
* numerele din fișier de intrare vor fi din intervalul &#039;&#039;&#039;[-99,99]&#039;&#039;&#039;&lt;br /&gt;
* fișierul de intrare conține cel puțin un număr par.&lt;br /&gt;
== Exemple ==&lt;br /&gt;
=== Exemplu 1 ===&lt;br /&gt;
; &#039;&#039;&#039;platou4.in&#039;&#039;&#039;&lt;br /&gt;
: 7 -22 -13 10 31 41 -6 2 101 83&lt;br /&gt;
; &#039;&#039;&#039;platou4.out&#039;&#039;&#039;&lt;br /&gt;
: 7&lt;br /&gt;
==== Explicatie ====&lt;br /&gt;
Sunt eliminate din șirul s numerele 7 101 83.&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_sir():&lt;br /&gt;
    while True:&lt;br /&gt;
        try:&lt;br /&gt;
            with open(&#039;platou4.in&#039;) as fin:&lt;br /&gt;
                n = int(fin.readline())&lt;br /&gt;
                a = [int(x) for x in fin.readline().split()]&lt;br /&gt;
                if len(a) == n and all(-99 &amp;lt;= x &amp;lt;= 99 for x in a):&lt;br /&gt;
                    print(&amp;quot;Datele sunt corecte.&amp;quot;)&lt;br /&gt;
                    return a&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 întregi.&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def platou4():&lt;br /&gt;
    with open(&#039;platou4.in&#039;) as fin, open(&#039;platou4.out&#039;, &#039;w&#039;) as fout:&lt;br /&gt;
        a = list(map(int, fin.readline().split()))&lt;br /&gt;
        while a[0] % 2 != 0:&lt;br /&gt;
            a.pop(0)&lt;br /&gt;
        while a[-1] % 2 != 0:&lt;br /&gt;
            a.pop(-1)&lt;br /&gt;
        fout.write(str(len(a)) + &#039;\n&#039;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if _name_ == &#039;_main_&#039;:&lt;br /&gt;
    platou4()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Explicații ==&lt;br /&gt;
 Acest cod rezolvă problema de la cerința pentru șiruri de numere întregi din fișierul de intrare platou4.in.&lt;br /&gt;
&lt;br /&gt;
 Funcția citeste_sir() primește ca intrare un fișier text și returnează lista de numere întregi citite din fișier, după ce a verificat dacă sunt conform restricțiilor impuse.&lt;br /&gt;
&lt;br /&gt;
 Funcția platou4() deschide fișierul de intrare și fișierul de ieșire și citește prima linie din fișierul de intrare, care conține numărul de elemente din șir. Acest număr nu este folosit în restul codului. În continuare, se citește linia cu numerele întregi și se creează o listă a prin aplicarea funcției map(int, fin.readline().split()).&lt;br /&gt;
&lt;br /&gt;
 Se elimină elementele de la începutul listei a care nu sunt numere pare prin parcurgerea listei și eliminarea elementelor până când primul element rămas este un număr par. Se elimină și elementele de la finalul listei a care nu sunt numere pare prin parcurgerea listei în ordine inversă și eliminarea elementelor până când ultimul element rămas este un număr par.&lt;br /&gt;
&lt;br /&gt;
 Se scrie în fișierul de ieșire lungimea listei a rămase după eliminarea elementelor nedorite, adică numărul de termeni ai șirului obținut prin eliminarea din cele două extremități ale lui s a unui număr minim de termeni, astfel încât șirul rezultat să înceapă și să se termine cu câte un număr par.&lt;/div&gt;</summary>
		<author><name>MiclausIoana</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=1880_-_Platou_3&amp;diff=3955</id>
		<title>1880 - Platou 3</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=1880_-_Platou_3&amp;diff=3955"/>
		<updated>2023-04-22T06:58:53Z</updated>

		<summary type="html">&lt;p&gt;MiclausIoana: Pagină nouă: Sursă: [https://www.pbinfo.ro/probleme/1880/platou3] == Cerinţa == Se consideră un şir format din &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039; numere întregi. Șirul conține cel puțin un număr pozitiv. Să se determine lungimea maximă a unei secvenţe din şir care are proprietatea că este formată doar din valori strict pozitive. == Date de intrare == Fișierul de intrare &amp;#039;&amp;#039;&amp;#039;platou3.in&amp;#039;&amp;#039;&amp;#039; conține pe prima linie numărul &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039;, iar pe a doua linie n numere întregi separate prin spații. == Date de...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Sursă: [https://www.pbinfo.ro/probleme/1880/platou3]&lt;br /&gt;
== Cerinţa ==&lt;br /&gt;
Se consideră un şir format din &#039;&#039;&#039;n&#039;&#039;&#039; numere întregi. Șirul conține cel puțin un număr pozitiv. Să se determine lungimea maximă a unei secvenţe din şir care are proprietatea că este formată doar din valori strict pozitive.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Fișierul de intrare &#039;&#039;&#039;platou3.in&#039;&#039;&#039; conține pe prima linie numărul &#039;&#039;&#039;n&#039;&#039;&#039;, iar pe a doua linie n numere întregi 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;. Fișierul de ieșire &#039;&#039;&#039;platou3.out&#039;&#039;&#039; va conține pe prima linie numărul &#039;&#039;&#039;k&#039;&#039;&#039;, reprezentând lungimea maximă a secvenței determinate. Î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 ≤ 1000&#039;&#039;&#039;&lt;br /&gt;
* numerele de pe a doua linie a fișierului de intrare vor fi din intervalul &#039;&#039;&#039;[-99,99]&#039;&#039;&#039;&lt;br /&gt;
* O secvenţă a unui şir constă în elemente aflate pe poziţii consecutive în şirul considerat.&lt;br /&gt;
== Exemple ==&lt;br /&gt;
=== Exemplu 1 ===&lt;br /&gt;
; &#039;&#039;&#039;platou3.in&#039;&#039;&#039;&lt;br /&gt;
: 10                          &lt;br /&gt;
: 7 -22 -13 10 31 41 -6 2 10 8 &lt;br /&gt;
; &#039;&#039;&#039;platou3.out&#039;&#039;&#039;&lt;br /&gt;
: 3&lt;br /&gt;
==== Explicatie ====&lt;br /&gt;
În fișierul de intrare, secvențele de lungime maximă (k=3) sunt: 10 31 41 și 2 10 8.&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_sir():&lt;br /&gt;
    while True:&lt;br /&gt;
        try:&lt;br /&gt;
            with open(&#039;platou3.in&#039;) as fin:&lt;br /&gt;
                n = int(fin.readline())&lt;br /&gt;
                a = [int(x) for x in fin.readline().split()]&lt;br /&gt;
                if len(a) == n and all(-99 &amp;lt;= x &amp;lt;= 99 for x in a):&lt;br /&gt;
                    print(&amp;quot;Datele sunt corecte.&amp;quot;)&lt;br /&gt;
                    return a&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 întregi.&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def platou3():&lt;br /&gt;
    with open(&amp;quot;platou3.in&amp;quot;) as fin, open(&amp;quot;platou3.out&amp;quot;, &amp;quot;w&amp;quot;) as fout:&lt;br /&gt;
        n = int(fin.readline())&lt;br /&gt;
        a = [-1] + list(map(int, fin.readline().split()))&lt;br /&gt;
        l = 0&lt;br /&gt;
        lmax = 0&lt;br /&gt;
        for i in range(1, n + 1):&lt;br /&gt;
            if a[i] &amp;gt; 0 and a[i - 1] &amp;gt; 0:&lt;br /&gt;
                l += 1&lt;br /&gt;
                if l &amp;gt; lmax:&lt;br /&gt;
                    lmax = l&lt;br /&gt;
            else:&lt;br /&gt;
                l = 0&lt;br /&gt;
        fout.write(str(lmax + 1))&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if _name_ == &#039;_main_&#039;:&lt;br /&gt;
    platou3()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Explicații ==&lt;br /&gt;
 Acest cod rezolvă problema de determinare a lungimii maxime a unei secvențe formate doar din valori strict pozitive într-un șir de întregi dat.&lt;br /&gt;
&lt;br /&gt;
 Funcția citeste_sir() citește datele de intrare din fișierul &amp;quot;platou3.in&amp;quot;, verifică dacă acestea sunt valide și le returnează sub formă de listă de întregi.&lt;br /&gt;
&lt;br /&gt;
 Funcția platou3() deschide fișierul de intrare și fișierul de ieșire și citește datele de intrare, reprezentând un șir de întregi cu cel puțin un element pozitiv. Apoi, calculează lungimea maximă a unei secvențe din șir care are proprietatea că este formată doar din valori strict pozitive și o scrie în fișierul de ieșire.&lt;br /&gt;
&lt;br /&gt;
 Dacă fișierul este executat direct, atunci funcția platou3() este apelată.&lt;/div&gt;</summary>
		<author><name>MiclausIoana</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=1879_-_Platou_2&amp;diff=3954</id>
		<title>1879 - Platou 2</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=1879_-_Platou_2&amp;diff=3954"/>
		<updated>2023-04-22T06:53:29Z</updated>

		<summary type="html">&lt;p&gt;MiclausIoana: Pagină nouă: Sursă: [https://www.pbinfo.ro/probleme/1879/platou2] == Cerinţa == Se consideră un şir format din &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039; numere naturale nenule. Să se determine lungimea maximă a unei secvenţe strict crescătoare din şirul dat. == Date de intrare == Fișierul de intrare &amp;#039;&amp;#039;&amp;#039;platou2.in&amp;#039;&amp;#039;&amp;#039; conține pe prima linie numărul &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039;, iar pe a doua linie &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039; numere naturale separate prin spații. == Date de ieșire == Dacă datele sunt introduse corect, pe ecran se va afișa: &amp;quot;Datele s...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Sursă: [https://www.pbinfo.ro/probleme/1879/platou2]&lt;br /&gt;
== Cerinţa ==&lt;br /&gt;
Se consideră un şir format din &#039;&#039;&#039;n&#039;&#039;&#039; numere naturale nenule. Să se determine lungimea maximă a unei secvenţe strict crescătoare din şirul dat.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Fișierul de intrare &#039;&#039;&#039;platou2.in&#039;&#039;&#039; conține pe prima linie numărul &#039;&#039;&#039;n&#039;&#039;&#039;, iar pe a doua linie &#039;&#039;&#039;n&#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;. Fișierul de ieșire &#039;&#039;&#039;platou2.out&#039;&#039;&#039; va conține pe prima linie numărul &#039;&#039;&#039;k&#039;&#039;&#039;, reprezentând lungimea maximă a secvenței determinate. Î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 ≤ 1000&#039;&#039;&#039;&lt;br /&gt;
* numerele de pe a doua linie a fișierului de intrare vor fi mai mici decât &#039;&#039;&#039;100&#039;&#039;&#039;&lt;br /&gt;
* O secvenţă a unui şir constă în elemente aflate pe poziţii consecutive în şirul considerat.&lt;br /&gt;
=== Exemplu 1 ===&lt;br /&gt;
; &#039;&#039;&#039;platou2.in&#039;&#039;&#039;&lt;br /&gt;
: 10                          &lt;br /&gt;
: 7 22 13 10 31 41 6 7 10 8&lt;br /&gt;
; &#039;&#039;&#039;platou2.out&#039;&#039;&#039;&lt;br /&gt;
: 3&lt;br /&gt;
==== Explicatie ====&lt;br /&gt;
În fișierul de intrare, secvențele de lungime maximă (k=3) sunt: 10 31 41 și 6 7 10.&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_sir():&lt;br /&gt;
    while True:&lt;br /&gt;
        try:&lt;br /&gt;
            with open(&#039;platou2.in&#039;) as fin:&lt;br /&gt;
                n = int(fin.readline())&lt;br /&gt;
                a = [int(x) for x in fin.readline().split()]&lt;br /&gt;
                if len(a) == n and all(1 &amp;lt;= x &amp;lt;= 100 for x in a):&lt;br /&gt;
                    print(&amp;quot;Datele sunt corecte.&amp;quot;)&lt;br /&gt;
                    return a&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 întregi.&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
def platou2():&lt;br /&gt;
    a = citeste_sir()&lt;br /&gt;
    n = len(a)&lt;br /&gt;
    k = 1&lt;br /&gt;
    maxi = 1&lt;br /&gt;
    for i in range(1, n):&lt;br /&gt;
        if a[i-1] &amp;lt; a[i]:&lt;br /&gt;
            k += 1&lt;br /&gt;
            if k &amp;gt; maxi:&lt;br /&gt;
                maxi = k&lt;br /&gt;
        else:&lt;br /&gt;
            k = 1&lt;br /&gt;
    with open(&amp;quot;platou2.out&amp;quot;, &amp;quot;w&amp;quot;) as fout:&lt;br /&gt;
        fout.write(str(maxi))&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if _name_ == &#039;_main_&#039;:&lt;br /&gt;
    platou2()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Explicații ==&lt;br /&gt;
 Acest cod este scris in Python si contine doua functii: &amp;quot;citeste_sir()&amp;quot; si &amp;quot;platou2()&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
 Functia &amp;quot;citeste_sir()&amp;quot; citeste datele de intrare din fisierul &amp;quot;platou2.in&amp;quot; si verifica daca acestea respecta anumite restrictii impuse. Mai precis, functia verifica daca primul element din fisierul de intrare este un numar intreg, iar al doilea element este o lista de n numere intregi intre 1 si 100. Daca datele de intrare sunt corecte, functia returneaza aceasta lista de numere intregi. In caz contrar, se afiseaza un mesaj corespunzator erorii si se reia citirea datelor de intrare.&lt;br /&gt;
&lt;br /&gt;
 Functia &amp;quot;platou2()&amp;quot; apeleaza functia &amp;quot;citeste_sir()&amp;quot; pentru a obtine lista de numere intregi reprezentand datele de intrare. Apoi, se determina lungimea acestei liste si se initializeaza doua variabile, &amp;quot;k&amp;quot; si &amp;quot;maxi&amp;quot;, cu valorile 1. In urmatoarea bucla, se parcurge lista de numere intregi si se compara fiecare element cu predecesorul sau. Daca elementul curent este mai mare decat predecesorul sau, atunci se incrementeaza valoarea lui &amp;quot;k&amp;quot;. Daca valoarea lui &amp;quot;k&amp;quot; este mai mare decat valoarea lui &amp;quot;maxi&amp;quot;, atunci se actualizeaza valoarea lui &amp;quot;maxi&amp;quot; cu valoarea lui &amp;quot;k&amp;quot;. Daca elementul curent nu este mai mare decat predecesorul sau, atunci valoarea lui &amp;quot;k&amp;quot; este resetata la 1. La final, functia scrie valoarea variabilei &amp;quot;maxi&amp;quot; in fisierul &amp;quot;platou2.out&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
 Partea finala a codului verifica daca fisierul a fost executat ca program principal si, in caz afirmativ, apeleaza functia &amp;quot;platou2()&amp;quot;.&lt;/div&gt;</summary>
		<author><name>MiclausIoana</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=0282_-_Poz_Max&amp;diff=3875</id>
		<title>0282 - Poz Max</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=0282_-_Poz_Max&amp;diff=3875"/>
		<updated>2023-04-20T15:20:12Z</updated>

		<summary type="html">&lt;p&gt;MiclausIoana: Pagină nouă: Sursă: [https://www.pbinfo.ro/probleme/282/pozmax] == Cerinţa == Se dă un şir cu &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039; elemente, numere reale, numerotate de la &amp;#039;&amp;#039;&amp;#039;1&amp;#039;&amp;#039;&amp;#039; la &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039;. Determinaţi numărul de ordine al primei şi al ultimei apariţii a valorii maxime din şir. == Date de intrare == Fişierul de intrare &amp;#039;&amp;#039;&amp;#039;pozmax.in&amp;#039;&amp;#039;&amp;#039; conţine pe prima linie numărul &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039;; urmează &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039; numere reale, dispuse pe mai multe linii şi separate prin spaţii. == Date de ieșire == Dacă datele sunt introd...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Sursă: [https://www.pbinfo.ro/probleme/282/pozmax]&lt;br /&gt;
== Cerinţa ==&lt;br /&gt;
Se dă un şir cu &#039;&#039;&#039;n&#039;&#039;&#039; elemente, numere reale, numerotate de la &#039;&#039;&#039;1&#039;&#039;&#039; la &#039;&#039;&#039;n&#039;&#039;&#039;. Determinaţi numărul de ordine al primei şi al ultimei apariţii a valorii maxime din şir.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Fişierul de intrare &#039;&#039;&#039;pozmax.in&#039;&#039;&#039; conţine pe prima linie numărul &#039;&#039;&#039;n&#039;&#039;&#039;; urmează &#039;&#039;&#039;n&#039;&#039;&#039; numere reale, dispuse pe mai multe linii şi 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;. Fişierul de ieşire &#039;&#039;&#039;pozmax.out&#039;&#039;&#039; va conţine pe prima linie două numere &#039;&#039;&#039;p&#039;&#039;&#039; şi &#039;&#039;&#039;u&#039;&#039;&#039;, reprezentând valorile cerute. Î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;n&#039;&#039;&#039; este un număr natural cu cel mult &#039;&#039;&#039;9&#039;&#039;&#039; cifre;&lt;br /&gt;
== Exemple ==&lt;br /&gt;
=== Exemplu 1 ===&lt;br /&gt;
; &#039;&#039;&#039;pozmax.in&#039;&#039;&#039;&lt;br /&gt;
: 8&lt;br /&gt;
: 3.5 7 -4 7 2 7 6.3 5&lt;br /&gt;
; &#039;&#039;&#039;pozmax.out&#039;&#039;&#039;&lt;br /&gt;
: 2 6&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():&lt;br /&gt;
    while True:&lt;br /&gt;
        try:&lt;br /&gt;
            with open(&amp;quot;pozmax.in&amp;quot;, &amp;quot;r&amp;quot;) as fin:&lt;br /&gt;
                n = int(fin.readline())&lt;br /&gt;
                if n &amp;gt;= 1 and n &amp;lt;= 1000000000:&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 restricțiilor 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(n):&lt;br /&gt;
    valori = []&lt;br /&gt;
    with open(&amp;quot;pozmax.in&amp;quot;, &amp;quot;r&amp;quot;) as fin:&lt;br /&gt;
        fin.readline()&lt;br /&gt;
        for i in range(n):&lt;br /&gt;
            linie = fin.readline().strip().split()&lt;br /&gt;
            while len(linie) != n:&lt;br /&gt;
                linie += fin.readline().strip().split()&lt;br /&gt;
            try:&lt;br /&gt;
                for j in range(n):&lt;br /&gt;
                    if float(linie[j]) &amp;lt;= 10**9:&lt;br /&gt;
                        valori.append(float(linie[j]))&lt;br /&gt;
                    else:&lt;br /&gt;
                        print(&amp;quot;Datele nu sunt conform restricțiilor impuse.&amp;quot;)&lt;br /&gt;
                        exit()&lt;br /&gt;
            except ValueError:&lt;br /&gt;
                print(&amp;quot;Trebuie introduse doar numere reale.&amp;quot;)&lt;br /&gt;
                exit()&lt;br /&gt;
    return valori&lt;br /&gt;
&lt;br /&gt;
def pozitii_max(valori):&lt;br /&gt;
    max_val = max(valori)&lt;br /&gt;
    p = valori.index(max_val) + 1&lt;br /&gt;
    u = len(valori) - valori[::-1].index(max_val)&lt;br /&gt;
    return p, u&lt;br /&gt;
&lt;br /&gt;
if _name_ == &#039;_main_&#039;:&lt;br /&gt;
    n = citeste_n()&lt;br /&gt;
    valori = citeste_valori(n)&lt;br /&gt;
    p, u = pozitii_max(valori)&lt;br /&gt;
    with open(&amp;quot;pozmax.out&amp;quot;, &#039;w&#039;) as f:&lt;br /&gt;
        f.write(str(p) + &amp;quot; &amp;quot; + str(u))&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Explicații ==&lt;br /&gt;
 Acest cod implementează o soluție pentru problema de găsire a pozițiilor primei și ultimei apariții a valorii maxime dintr-un șir de numere reale.&lt;br /&gt;
&lt;br /&gt;
 Funcția citeste_n() este folosită pentru a citi valoarea n din fișierul de intrare &amp;quot;pozmax.in&amp;quot; și verifică dacă se încadrează în restricțiile impuse (între 1 și 1 miliard).&lt;br /&gt;
&lt;br /&gt;
 Funcția citeste_valori(n) este utilizată pentru a citi șirul de n numere reale din fișierul de intrare &amp;quot;pozmax.in&amp;quot;. Aceasta verifică dacă numerele sunt conforme cu restricțiile impuse (valori între -1 miliard și 1 miliard) și, în caz contrar, iese din program cu un mesaj de eroare.&lt;br /&gt;
&lt;br /&gt;
 Funcția pozitii_max(valori) primește șirul de numere reale și găsește valoarea maximă din șir folosind funcția max(). Folosind metoda index(), aceasta determină poziția primei apariții a valorii maxime și adaugă 1 pentru a obține poziția în numerotare de la 1. De asemenea, calculează poziția ultimei apariții a valorii maxime folosind metoda index() combinată cu o inversare a șirului și adaugă lungimea șirului pentru a obține poziția în numerotare de la 1.&lt;br /&gt;
&lt;br /&gt;
 În funcția main(), se apelează cele trei funcții pentru a citi datele de intrare, a determina pozițiile valorii maxime și a scrie rezultatul în fișierul de ieșire &amp;quot;pozmax.out&amp;quot;.&lt;/div&gt;</summary>
		<author><name>MiclausIoana</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=2275_-_Minim_Doua&amp;diff=3873</id>
		<title>2275 - Minim Doua</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=2275_-_Minim_Doua&amp;diff=3873"/>
		<updated>2023-04-20T15:07:13Z</updated>

		<summary type="html">&lt;p&gt;MiclausIoana: Pagină nouă: Sursă: [https://www.pbinfo.ro/probleme/2275/minimdoua] == Cerinţa == Se dau &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039; numere naturale. Determinați cele mai mici două numere dintre cele introduse care au ultimele două cifre egale. Dacă nu există cel puțin două astfel de numere se va afișa &amp;#039;&amp;#039;&amp;#039;numere insuficiente&amp;#039;&amp;#039;&amp;#039;. == Date de intrare == Fișierul de intrare &amp;#039;&amp;#039;&amp;#039;minimdoua.in&amp;#039;&amp;#039;&amp;#039; conține pe prima linie numărul &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039;, iar pe a doua linie &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039; numere naturale separate prin spații. == Date de ieșir...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Sursă: [https://www.pbinfo.ro/probleme/2275/minimdoua]&lt;br /&gt;
== Cerinţa ==&lt;br /&gt;
Se dau &#039;&#039;&#039;n&#039;&#039;&#039; numere naturale. Determinați cele mai mici două numere dintre cele introduse care au ultimele două cifre egale. Dacă nu există cel puțin două astfel de numere se va afișa &#039;&#039;&#039;numere insuficiente&#039;&#039;&#039;.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Fișierul de intrare &#039;&#039;&#039;minimdoua.in&#039;&#039;&#039; conține pe prima linie numărul &#039;&#039;&#039;n&#039;&#039;&#039;, iar pe a doua linie &#039;&#039;&#039;n&#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; Fișierul de ieșire &#039;&#039;&#039;minimdoua.out&#039;&#039;&#039; va conține pe prima linie numerele &#039;&#039;&#039;minim1&#039;&#039;&#039; si &#039;&#039;&#039;minim2&#039;&#039;&#039;, reprezentând minimele cerute, în ordine crescătoare, dacă fișierul de intrare conține cel puțin două astfel de numere, respectiv &#039;&#039;&#039;numere insuficiente&#039;&#039;&#039;, în caz contrar. Î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 ≤ 200&#039;&#039;&#039;&lt;br /&gt;
* pentru fiecare număr x de pe a doua linie a fișierului de intrare este îndeplinită relația &#039;&#039;&#039;0 ≤ x ≤ 1.000.000&#039;&#039;&#039;&lt;br /&gt;
* minimele cerute vor avea cel puțin două cifre&lt;br /&gt;
== Exemple ==&lt;br /&gt;
=== Exemplu 1 ===&lt;br /&gt;
; &#039;&#039;&#039;minimdoua.in&#039;&#039;&#039;&lt;br /&gt;
: 7&lt;br /&gt;
: 12 55 112 322 477 115 7&lt;br /&gt;
; &#039;&#039;&#039;minimdoua.out&#039;&#039;&#039;&lt;br /&gt;
: 55 322&lt;br /&gt;
=== Exemplu 2 ===&lt;br /&gt;
; &#039;&#039;&#039;minimdoua.in&#039;&#039;&#039;&lt;br /&gt;
: 6&lt;br /&gt;
: 12 55 112 3 4774 115 &lt;br /&gt;
; &#039;&#039;&#039;minimdoua.out&#039;&#039;&#039;&lt;br /&gt;
: numere insuficiente&lt;br /&gt;
==== Explicație ====&lt;br /&gt;
În fișierul de intrare este doar un singur număr cu proprietatea cerută.&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():&lt;br /&gt;
    while True:&lt;br /&gt;
        try:&lt;br /&gt;
            with open(&amp;quot;minimdoua.in&amp;quot;, &amp;quot;r&amp;quot;) as fin:&lt;br /&gt;
                n = int(fin.readline())&lt;br /&gt;
                if n &amp;gt;= 2 and n &amp;lt;= 1000:&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 restricțiilor 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;
&lt;br /&gt;
def citeste_valori(n):&lt;br /&gt;
    valori = []&lt;br /&gt;
    for i in range(n):&lt;br /&gt;
        with open(&amp;quot;minimdoua.in&amp;quot;, &amp;quot;r&amp;quot;) as fin:&lt;br /&gt;
            fin.readline()&lt;br /&gt;
            linie = fin.readline().strip().split()&lt;br /&gt;
            while len(linie) != n:&lt;br /&gt;
                linie += fin.readline().strip().split()&lt;br /&gt;
            try:&lt;br /&gt;
                if len(linie[i]) &amp;lt;= 9:&lt;br /&gt;
                    print(&amp;quot;Datele sunt corecte.&amp;quot;)&lt;br /&gt;
                    valori.append(int(linie[i]))&lt;br /&gt;
                else:&lt;br /&gt;
                    print(&amp;quot;Trebuie introduse doar valori cu mai putin de 9 cifre.&amp;quot;)&lt;br /&gt;
                    exit()&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;
                exit()&lt;br /&gt;
    return valori&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def minim_doua(valori):&lt;br /&gt;
    a = []&lt;br /&gt;
    v = []&lt;br /&gt;
    for i in range(len(valori)):&lt;br /&gt;
        if valori[i] % 10 == (valori[i] // 10) % 10 and valori[i] &amp;gt; 9:&lt;br /&gt;
            v.append(valori[i])&lt;br /&gt;
    v.sort()&lt;br /&gt;
    if len(v) &amp;gt;= 2:&lt;br /&gt;
        return v[0], v[1]&lt;br /&gt;
    else:&lt;br /&gt;
        return &amp;quot;numere insuficiente&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if _name_ == &#039;_main_&#039;:&lt;br /&gt;
    n = citeste_n()&lt;br /&gt;
    valori = citeste_valori(n)&lt;br /&gt;
    minim1, minim2 = minim_doua(valori)&lt;br /&gt;
    with open(&amp;quot;minimdoua.out&amp;quot;, &#039;w&#039;) as f:&lt;br /&gt;
        if isinstance(minim1, str):&lt;br /&gt;
            f.write(minim1)&lt;br /&gt;
        else:&lt;br /&gt;
            f.write(str(minim1) + &#039; &#039; + str(minim2))&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Explicații ==&lt;br /&gt;
 Acesta este un cod Python care rezolvă o problemă de găsire a celor mai mici două numere întregi pozitive cu aceeași cifră zecimală de unitate.&lt;br /&gt;
&lt;br /&gt;
 Funcția citeste_n() deschide fișierul &amp;quot;minimdoua.in&amp;quot; și încearcă să citească un singur număr întreg de pe prima linie. Dacă numărul îndeplinește condițiile de a fi între 2 și 1000, atunci funcția va returna acest număr. În caz contrar, se va afișa un mesaj de eroare și se va ieși din program.&lt;br /&gt;
&lt;br /&gt;
 Funcția citeste_valori(n) primește ca argument numărul de valori pe care trebuie să le citească. Apoi, pentru fiecare linie din fișier, funcția va citi o linie, va elimina caracterele de tip newline și apoi va împărți acea linie în cuvinte. Dacă numărul de cuvinte împărțite nu este egal cu n, atunci vor fi citite noi linii până când numărul de cuvinte va fi egal cu n. În continuare, funcția va verifica fiecare cuvânt și dacă lungimea sa este mai mică sau egală cu 9, va adăuga numărul într-o listă. Altfel, se va afișa un mesaj de eroare și se va ieși din program. Funcția va returna lista de numere citite.&lt;br /&gt;
&lt;br /&gt;
 Funcția minim_doua(valori) primește lista de numere și va adăuga numerele care îndeplinesc condiția specificată într-o altă listă, v. Această listă va fi sortată în ordine crescătoare, iar dacă are cel puțin două elemente, atunci primele două elemente vor fi cele două numere cu cifra zecimală de unitate identică și mai mici. Altfel, funcția va returna un mesaj care indică faptul că lista de numere nu are suficiente elemente.&lt;br /&gt;
&lt;br /&gt;
 În funcția principală _main_, se vor apela funcțiile citeste_n(), citeste_valori(n) și minim_doua(valori) pentru a obține cele mai mici două numere întregi pozitive cu aceeași cifră zecimală de unitate. Apoi, rezultatele vor fi scrise în fișierul &amp;quot;minimdoua.out&amp;quot; în funcție de rezultatul returnat de minim_doua(valori). Dacă funcția returnează un mesaj de eroare, atunci mesajul va fi scris în fișier.&lt;/div&gt;</summary>
		<author><name>MiclausIoana</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=0281_-_Maxim_5&amp;diff=3872</id>
		<title>0281 - Maxim 5</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=0281_-_Maxim_5&amp;diff=3872"/>
		<updated>2023-04-20T14:57:29Z</updated>

		<summary type="html">&lt;p&gt;MiclausIoana: Pagină nouă: Sursă: [https://www.pbinfo.ro/probleme/281/maxim5] == Cerinţa == Se dă un fişier text care conţine mai multe linii, pe fiecare linie existând câte un şir de numere naturale nenule, despărţite prin câte un spaţiu; fiecare linie se termină cu numarul &amp;#039;&amp;#039;&amp;#039;0&amp;#039;&amp;#039;&amp;#039; (care se consideră că nu face parte din şirul aflat pe linia respectivă) şi conţine cel puţin două valori. Se cere să se afişeze valoarea maximă din şirul care conţine cele mai puţine numere. În...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Sursă: [https://www.pbinfo.ro/probleme/281/maxim5]&lt;br /&gt;
== Cerinţa ==&lt;br /&gt;
Se dă un fişier text care conţine mai multe linii, pe fiecare linie existând câte un şir de numere naturale nenule, despărţite prin câte un spaţiu; fiecare linie se termină cu numarul &#039;&#039;&#039;0&#039;&#039;&#039; (care se consideră că nu face parte din şirul aflat pe linia respectivă) şi conţine cel puţin două valori.&lt;br /&gt;
Se cere să se afişeze valoarea maximă din şirul care conţine cele mai puţine numere. În cazul în care există mai multe şiruri cu acelaşi număr minim de numere, se va afişa cea mai mare valoare care apare în unul dintre aceste şiruri.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Fişierul de intrare &#039;&#039;&#039;maxim5.in&#039;&#039;&#039; conţine şirurile de numere, aşa cu a fost descris mai sus.&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;maxim5.out&#039;&#039;&#039; va conţine pe prima linie numărul M, reprezentând valoarea maximă din şirul care conţine cele mai puţine numere. Î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 din şirurile date au cel mult 9 cifre&lt;br /&gt;
== Exemple ==&lt;br /&gt;
=== Exemplu 1 ===&lt;br /&gt;
; &#039;&#039;&#039;maxim5.in&#039;&#039;&#039;&lt;br /&gt;
: 2 253 34 3 0&lt;br /&gt;
: 6 88 9 3 0&lt;br /&gt;
: 4 54 88 12345 98 234 546 0&lt;br /&gt;
; &#039;&#039;&#039;maxim5.out&#039;&#039;&#039;&lt;br /&gt;
: 253&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 nrcifre(nr):&lt;br /&gt;
    nrcif = 0&lt;br /&gt;
    while nr != 0:&lt;br /&gt;
        nrcif += 1&lt;br /&gt;
        nr //= 10&lt;br /&gt;
    return nrcif&lt;br /&gt;
&lt;br /&gt;
def citeste_valori():&lt;br /&gt;
    valori = []&lt;br /&gt;
    with open(&amp;quot;maxim5.in&amp;quot;, &#039;r&#039;) as f:&lt;br /&gt;
        for linie in f:&lt;br /&gt;
            nums = linie.strip().split()&lt;br /&gt;
            if nums[-1] != &amp;quot;0&amp;quot; or len(nums) &amp;lt; 2:&lt;br /&gt;
                raise ValueError(&amp;quot;Linia nu se termina cu 0 sau contine mai putin de 2 valori.&amp;quot;)&lt;br /&gt;
            valoare = [int(num) for num in nums[:-1]]&lt;br /&gt;
            if any(nrcifre(num) &amp;gt; 9 for num in valoare):&lt;br /&gt;
                raise ValueError(&amp;quot;Datele nu sunt conform restricțiilor impuse.&amp;quot;)&lt;br /&gt;
            valori.append(valoare)&lt;br /&gt;
    return valori&lt;br /&gt;
&lt;br /&gt;
def valoare_maxima_si_lungimea_minima(valori):&lt;br /&gt;
    lmax = float(&#039;inf&#039;)  # initializam cu infinit&lt;br /&gt;
    st, dr = -1, -1&lt;br /&gt;
    for i in range(len(valori)):&lt;br /&gt;
        l = len(valori[i])&lt;br /&gt;
        if l &amp;lt; lmax:&lt;br /&gt;
            lmax = l&lt;br /&gt;
            st, dr = i, i&lt;br /&gt;
        elif l == lmax:&lt;br /&gt;
            dr = i&lt;br /&gt;
    max_val = 0&lt;br /&gt;
    for i in range(st, dr+1):&lt;br /&gt;
        for val in valori[i]:&lt;br /&gt;
            if val &amp;gt; max_val:&lt;br /&gt;
                max_val = val&lt;br /&gt;
    return max_val&lt;br /&gt;
&lt;br /&gt;
if _name_ == &#039;_main_&#039;:&lt;br /&gt;
    valori = citeste_valori()&lt;br /&gt;
    max_val = valoare_maxima_si_lungimea_minima(valori)&lt;br /&gt;
    with open(&amp;quot;maxim5.out&amp;quot;, &#039;w&#039;) as f:&lt;br /&gt;
        f.write(str(max_val))&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Explicații ==&lt;br /&gt;
 Acest cod citeste date dintr-un fisier &amp;quot;maxim5.in&amp;quot; care contine o lista de liste de numere intregi si gaseste valoarea maxima dintre aceste numere intregi, care se afla in sub-listele cu lungimea minima.&lt;br /&gt;
&lt;br /&gt;
 Functia &amp;quot;nrcifre&amp;quot; calculeaza numarul de cifre al unui numar intreg.&lt;br /&gt;
&lt;br /&gt;
 Functia &amp;quot;citeste_valori&amp;quot; citeste datele din fisierul &amp;quot;maxim5.in&amp;quot; si verifica daca fiecare linie se termina cu &amp;quot;0&amp;quot; si contine cel putin 2 valori. De asemenea, verifica daca fiecare valoare din sub-liste are cel mult 9 cifre. Daca datele nu sunt conforme cu aceste reguli, functia arunca o exceptie de tipul ValueError. In final, functia returneaza lista de liste de numere intregi citite din fisier.&lt;br /&gt;
&lt;br /&gt;
 Functia &amp;quot;valoare_maxima_si_lungimea_minima&amp;quot; gaseste lungimea minima a sub-listelor din lista de liste de numere intregi si gaseste valoarea maxima dintre numerele intregi din sub-listele cu aceasta lungime minima.&lt;br /&gt;
&lt;br /&gt;
 In main, se citesc valorile din fisier, se gaseste valoarea maxima, si se scrie aceasta valoare in fisierul &amp;quot;maxim5.out&amp;quot;.&lt;/div&gt;</summary>
		<author><name>MiclausIoana</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=4001_-_Min_Max_K_9&amp;diff=3871</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=3871"/>
		<updated>2023-04-20T14:50:02Z</updated>

		<summary type="html">&lt;p&gt;MiclausIoana: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;ursă: [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>MiclausIoana</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=2873_-_Sort_Matrix_Lin&amp;diff=3840</id>
		<title>2873 - Sort Matrix Lin</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=2873_-_Sort_Matrix_Lin&amp;diff=3840"/>
		<updated>2023-04-19T15:26:30Z</updated>

		<summary type="html">&lt;p&gt;MiclausIoana: Pagină nouă: Sursă: [https://www.pbinfo.ro/probleme/2873/sortmatrixlin] == 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 un caracter &amp;#039;&amp;#039;&amp;#039;c&amp;#039;&amp;#039;&amp;#039; care poate fi &amp;#039;&amp;#039;&amp;#039;+&amp;#039;&amp;#039;&amp;#039; sau &amp;#039;&amp;#039;&amp;#039;-&amp;#039;&amp;#039;&amp;#039;. Să se sorteze, după linii, matricea crescător dacă semnul este &amp;#039;&amp;#039;&amp;#039;+&amp;#039;&amp;#039;&amp;#039; sau descrescător dacă semnul este &amp;#039;&amp;#039;&amp;#039;-&amp;#039;&amp;#039;&amp;#039;. Sortarea matricei după linii este rearanjarea elementelor astfel încât, parcurgând matricea pe linii, de sus în jos și de la stânga la dreapta, elementele sunt în o...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Sursă: [https://www.pbinfo.ro/probleme/2873/sortmatrixlin]&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 un caracter &#039;&#039;&#039;c&#039;&#039;&#039; care poate fi &#039;&#039;&#039;+&#039;&#039;&#039; sau &#039;&#039;&#039;-&#039;&#039;&#039;. Să se sorteze, după linii, matricea crescător dacă semnul este &#039;&#039;&#039;+&#039;&#039;&#039; sau descrescător dacă semnul este &#039;&#039;&#039;-&#039;&#039;&#039;.&lt;br /&gt;
Sortarea matricei după linii este rearanjarea elementelor astfel încât, parcurgând matricea pe linii, de sus în jos și de la stânga la dreapta, elementele sunt în ordine crescătoare/descrescătoare.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Programul citește de la tastatură numerele &#039;&#039;&#039;n m&#039;&#039;&#039; și caracterul &#039;&#039;&#039;c&#039;&#039;&#039;, iar apoi &#039;&#039;&#039;n&#039;&#039;&#039; linii cu &#039;&#039;&#039;m&#039;&#039;&#039; numere naturale. Fiecare linie pe câte un rând, toate numerele de pe fiecare linie separate prin câte un spațiu.&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 matricea sortată conform cerinței, câte o linie a matricei pe o linie a ecranului, elementele fiecărei linii fiind separate prin câte un spațiu. Î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;
* elementele matricei vor fi mai mici sau egale cu &#039;&#039;&#039;1.000&#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;
: 2 4 1 3&lt;br /&gt;
: 9 8 7 6&lt;br /&gt;
: 20 19 18 16&lt;br /&gt;
: 30 29 124 12&lt;br /&gt;
: 59 21 0 3&lt;br /&gt;
; Date de iesire&lt;br /&gt;
: 0 1 2 3&lt;br /&gt;
:3 4 6 7&lt;br /&gt;
: 8 9 12 16&lt;br /&gt;
: 18 19 20 21&lt;br /&gt;
: 29 30 59 124&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;
        linie_matrice = []&lt;br /&gt;
        for coloana in range(m):&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;= 1000:&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;
        matrice.append(linie_matrice)&lt;br /&gt;
&lt;br /&gt;
    return n, m, matrice&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def SortMatrixLin(n, m, matrice):&lt;br /&gt;
    semn = input(&amp;quot;Introduceti caracterul + sau -: &amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    # transforma matricea intr-o lista unidimensionala&lt;br /&gt;
    lista_unidimensionala = []&lt;br /&gt;
    for i in range(n):&lt;br /&gt;
        for j in range(m):&lt;br /&gt;
            lista_unidimensionala.append(matrice[i][j])&lt;br /&gt;
&lt;br /&gt;
    # sorteaza lista unidimensionala&lt;br /&gt;
    if semn == &#039;+&#039;:&lt;br /&gt;
        lista_unidimensionala.sort()&lt;br /&gt;
    elif semn == &#039;-&#039;:&lt;br /&gt;
        lista_unidimensionala.sort(reverse=True)&lt;br /&gt;
    else:&lt;br /&gt;
        print(&amp;quot;Semnul trebuie să fie + sau -.&amp;quot;)&lt;br /&gt;
        return&lt;br /&gt;
&lt;br /&gt;
    # retransforma lista unidimensionala in matrice&lt;br /&gt;
    matrice_sortata = []&lt;br /&gt;
    for i in range(n):&lt;br /&gt;
        linie_matrice = []&lt;br /&gt;
        for j in range(m):&lt;br /&gt;
            linie_matrice.append(lista_unidimensionala.pop(0))&lt;br /&gt;
        matrice_sortata.append(linie_matrice)&lt;br /&gt;
&lt;br /&gt;
    # afiseaza matricea sortata&lt;br /&gt;
    for i in range(n):&lt;br /&gt;
        for j in range(m):&lt;br /&gt;
            print(matrice_sortata[i][j], end=&amp;quot; &amp;quot;)&lt;br /&gt;
        print()&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;
    print(&amp;quot;Matricea initiala:&amp;quot;)&lt;br /&gt;
    for linie in matrice:&lt;br /&gt;
        print(linie)&lt;br /&gt;
    print(&amp;quot;Matricea modificata:&amp;quot;)&lt;br /&gt;
    SortMatrixLin(n, m, matrice)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
== Explicații ==&lt;br /&gt;
 Acest cod definește două funcții: citire_matrice() și SortMatrixLin(n, m, matrice).&lt;br /&gt;
&lt;br /&gt;
 Funcția citire_matrice() primește de la utilizator numărul de linii și de coloane ale unei matrice și apoi primește de la utilizator elementele matricei, verificând dacă acestea respectă anumite condiții și returnează dimensiunile matricei și matricea însăși.&lt;br /&gt;
&lt;br /&gt;
 Funcția SortMatrixLin(n, m, matrice) primește dimensiunile și matricea, apoi transformă matricea într-o listă unidimensională și sortează lista, utilizând semnul introdus de utilizator. Ulterior, funcția transformă lista unidimensională sortată înapoi în matrice și o afișează.&lt;br /&gt;
&lt;br /&gt;
 În funcția main, programul apelează funcția citire_matrice() și afișează matricea inițială. Apoi, programul apelează funcția SortMatrixLin(n, m, matrice) și afișează matricea sortată.&lt;/div&gt;</summary>
		<author><name>MiclausIoana</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=0620_-_Sort_Col&amp;diff=3838</id>
		<title>0620 - Sort Col</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=0620_-_Sort_Col&amp;diff=3838"/>
		<updated>2023-04-19T15:20:57Z</updated>

		<summary type="html">&lt;p&gt;MiclausIoana: Pagină nouă: Sursă: [https://www.pbinfo.ro/probleme/620/sortcol] == 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. Ordonați descrescător elementele de pe fiecare coloană a matricei și apoi afișați matricea. == 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 == Dacă date...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Sursă: [https://www.pbinfo.ro/probleme/620/sortcol]&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. Ordonați descrescător elementele de pe fiecare coloană a matricei și apoi afișați matricea.&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;
Dacă datele sunt introduse corect, pe ecran se va afișa: &amp;quot;Datele sunt corecte.&amp;quot; Programul afișează pe ecran matricea modificată, câte o linie a matricei pe câte o linie a ecranului, elementele fiecărei linii fiind separate prin câte un spaţiu. Î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 ≤ m,n ≤ 100&#039;&#039;&#039;&lt;br /&gt;
* elementele matricei vor fi mai mici decât &#039;&#039;&#039;10000&#039;&#039;&#039;&lt;br /&gt;
== Exemple ==&lt;br /&gt;
=== Exemplu 1 ===&lt;br /&gt;
; Date de 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 18 13 18 12 15 &lt;br /&gt;
: 3 18 8 20 12 5 &lt;br /&gt;
; Date de iesire&lt;br /&gt;
: 17 20 23 23 18 18 &lt;br /&gt;
: 4 18 15 22 14 15 &lt;br /&gt;
: 3 18 13 20 12 9 &lt;br /&gt;
: 1 8 8 18 12 5&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;
        linie_matrice = []&lt;br /&gt;
        for coloana in range(m):&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;= 10000:&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;
        matrice.append(linie_matrice)&lt;br /&gt;
&lt;br /&gt;
    return n, m, matrice&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def SortCol(n, m, matrice):&lt;br /&gt;
    def sort(col):&lt;br /&gt;
        for i in range(n):&lt;br /&gt;
            for j in range(i + 1, n):&lt;br /&gt;
                if matrice[i][col] &amp;lt; matrice[j][col]:&lt;br /&gt;
                    matrice[i][col], matrice[j][col] = matrice[j][col], matrice[i][col]&lt;br /&gt;
&lt;br /&gt;
    for j in range(m):&lt;br /&gt;
        sort(j)&lt;br /&gt;
&lt;br /&gt;
    for i in range(n):&lt;br /&gt;
        for j in range(m):&lt;br /&gt;
            print(matrice[i][j], end=&amp;quot; &amp;quot;)&lt;br /&gt;
        print()&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;
    print(&amp;quot;Matricea initiala:&amp;quot;)&lt;br /&gt;
    for linie in matrice:&lt;br /&gt;
        print(linie)&lt;br /&gt;
    print(&amp;quot;Matricea modificata:&amp;quot;)&lt;br /&gt;
    SortCol(n, m, matrice)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Explicații ==&lt;br /&gt;
 Acest cod definește două funcții: citire_matrice() și SortCol(), și conține blocul principal care citește matricea de la tastatură, o afișează și apoi o sortează descrescător pe coloane, afișând matricea modificată.&lt;br /&gt;
&lt;br /&gt;
 Funcția citire_matrice() citește numărul de linii și coloane ale matricei de la tastatură, și apoi citește elementele matricei, verificând dacă acestea sunt numere întregi și mai mici decât 10000. Funcția returnează numărul de linii, coloane și matricea în sine.&lt;br /&gt;
&lt;br /&gt;
 Funcția SortCol() primește ca parametri numărul de linii, numărul de coloane și matricea, și definește o funcție internă numită sort(), care sortează matricea descrescător pe o anumită coloană dată ca argument. În bucla principală, această funcție este apelată pentru fiecare coloană a matricei, iar apoi matricea modificată este afișată pe ecran. Blocul principal apelează funcția citire_matrice() pentru a citi matricea, o afișează pe ecran, apoi apelează funcția SortCol() pentru a o sorta și a o afișa pe ecran.&lt;br /&gt;
&lt;br /&gt;
 Mai trebuie menționat că în ultima linie din cod, if _name_ == &amp;quot;_main_&amp;quot;: este o construcție care se asigură că codul care urmează va fi executat doar dacă acest script este rulat direct, și nu importat ca un modul într-un alt script.&lt;/div&gt;</summary>
		<author><name>MiclausIoana</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=0619_-_Sort_Lin&amp;diff=3837</id>
		<title>0619 - Sort Lin</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=0619_-_Sort_Lin&amp;diff=3837"/>
		<updated>2023-04-19T15:16:24Z</updated>

		<summary type="html">&lt;p&gt;MiclausIoana: Pagină nouă: Sursă: [https://www.pbinfo.ro/probleme/619/sortlin] == 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. Ordonați crescător elementele de pe fiecare linie a matricei și apoi afişați matricea. == 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 == Dacă datele sun...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Sursă: [https://www.pbinfo.ro/probleme/619/sortlin]&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. Ordonați crescător elementele de pe fiecare linie a matricei și apoi afişați matricea.&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;
Dacă datele sunt introduse corect, pe ecran se va afișa: &amp;quot;Datele sunt corecte.&amp;quot; Programul afișează pe ecran matricea modificată, câte o linie a matricei pe câte o linie a ecranului, elementele fiecărei linii fiind separate prin câte un spaţiu. Î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 ≤ m,n ≤ 100&#039;&#039;&#039;&lt;br /&gt;
* elementele matricei vor fi mai mici decât &#039;&#039;&#039;10000&#039;&#039;&#039;&lt;br /&gt;
=== Exemplu 1 ===&lt;br /&gt;
; Date de 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 18 13 18 12 15 &lt;br /&gt;
: 3 18 8 20 12 5 &lt;br /&gt;
; Date de iesire&lt;br /&gt;
: 4 9 15 18 20 23 &lt;br /&gt;
: 1 8 14 18 22 23 &lt;br /&gt;
: 12 13 15 17 18 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;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;
        linie_matrice = []&lt;br /&gt;
        try:&lt;br /&gt;
            row = list(map(int, input(&amp;quot;Introduceti elementele liniei:&amp;quot;).split()))&lt;br /&gt;
            if len(row) != m:&lt;br /&gt;
                print(f&amp;quot;Linia {linie+1} nu are {m} elemente.&amp;quot;)&lt;br /&gt;
                exit()&lt;br /&gt;
            for valoare in row:&lt;br /&gt;
                if valoare &amp;lt;= 10000:&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;
            linie_matrice.sort()&lt;br /&gt;
            matrice.append(linie_matrice)&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;
    return n, m, matrice&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def afisare_matrice(n, m, matrice):&lt;br /&gt;
    for i in range(n):&lt;br /&gt;
        for j in range(m):&lt;br /&gt;
            print(matrice[i][j], end=&amp;quot; &amp;quot;)&lt;br /&gt;
        print()&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;
    print(&amp;quot;Matricea initiala:&amp;quot;)&lt;br /&gt;
    afisare_matrice(n, m, matrice)&lt;br /&gt;
    print(&amp;quot;Matricea sortata:&amp;quot;)&lt;br /&gt;
    afisare_matrice(n, m, matrice)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
== Explicații ==&lt;br /&gt;
 Codul dat primește o matrice cu n linii și m coloane și elemente numere naturale. Scopul este de a sorta elementele de pe fiecare linie a matricei în ordine crescătoare și de a afișa matricea sortată.&lt;br /&gt;
&lt;br /&gt;
 Funcția citire_matrice primește numărul de linii și coloane ale matricei și apoi citește elementele matricei linie cu linie de la tastatură. Verifică dacă datele de intrare sunt valide și în caz contrar afișează un mesaj corespunzător și iese din program. De asemenea, funcția sortează elementele de pe fiecare linie a matricei în ordine crescătoare și returnează matricea sortată.&lt;br /&gt;
&lt;br /&gt;
 Funcția afisare_matrice primește matricea sortată și afișează elementele sale pe ecran, linie cu linie, separate prin spații.&lt;br /&gt;
 &lt;br /&gt;
 În blocul principal, se apelează funcția citire_matrice pentru a citi matricea de la tastatură, se afișează matricea inițială cu ajutorul funcției afisare_matrice, se sortează și se afișează matricea sortată cu ajutorul aceleiași funcții.&lt;br /&gt;
&lt;br /&gt;
 În general, codul este structurat bine și respectă cerințele problemei. Au fost adăugate verificări suplimentare pentru a gestiona cazurile de date invalide și a oferi o interfață mai bună pentru utilizator.&lt;/div&gt;</summary>
		<author><name>MiclausIoana</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=0762_-_Identice_2&amp;diff=3836</id>
		<title>0762 - Identice 2</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=0762_-_Identice_2&amp;diff=3836"/>
		<updated>2023-04-19T15:07:20Z</updated>

		<summary type="html">&lt;p&gt;MiclausIoana: Pagină nouă: Sursă: [https://www.pbinfo.ro/probleme/762/identice2] == 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 determine câte perechi de linii din matrice sunt identice. == 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 ecran se va afișa: &amp;quot;Datel...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Sursă: [https://www.pbinfo.ro/probleme/762/identice2]&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 determine câte perechi de linii din matrice sunt identice.&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 C, reprezentând valoare determinată. Î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;
* elementele matricei sunt numere naturale 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;
: 6 3&lt;br /&gt;
: 10 2 5&lt;br /&gt;
: 2 1 4&lt;br /&gt;
: 10 2 5&lt;br /&gt;
: 7 10 9&lt;br /&gt;
: 10 2 5&lt;br /&gt;
: 2 1 4&lt;br /&gt;
; Date de iesire&lt;br /&gt;
: 4&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 m % 2 == 0:&lt;br /&gt;
            print(&amp;quot;Numarul de coloane trebuie sa fie impar.&amp;quot;)&lt;br /&gt;
            exit()&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;
        linie_matrice = []&lt;br /&gt;
        for coloana in range(m):&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;
                    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;
        matrice.append(linie_matrice)&lt;br /&gt;
&lt;br /&gt;
    return n, m, matrice&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def identice2(n, m, matrice):&lt;br /&gt;
    cnt = 0&lt;br /&gt;
    for i in range(n - 1):&lt;br /&gt;
        for k in range(i + 1, n):&lt;br /&gt;
            ok = all(matrice[i][j] == matrice[k][j] for j in range(m))&lt;br /&gt;
            if ok:&lt;br /&gt;
                cnt += 1&lt;br /&gt;
&lt;br /&gt;
    print(cnt)&lt;br /&gt;
&lt;br /&gt;
if _name_ == &amp;quot;_main_&amp;quot;:&lt;br /&gt;
    n, m, matrice = citire_matrice()&lt;br /&gt;
    print(&amp;quot;Matricea initiala:&amp;quot;)&lt;br /&gt;
    for linie in matrice:&lt;br /&gt;
        print(linie)&lt;br /&gt;
    print(&amp;quot;Numarul de perechi de linii consecutive identice:&amp;quot;)&lt;br /&gt;
    identice2(n, m, matrice)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Explicații ==&lt;br /&gt;
 Acest cod reprezintă o soluție pentru problema de a determina câte perechi de linii consecutive identice există într-o matrice dată.&lt;br /&gt;
&lt;br /&gt;
 Funcția citire_matrice() se ocupă de citirea datelor de intrare de la tastatură și returnează numărul de linii și coloane ale matricei, precum și matricea propriu-zisă. Mai întâi se verifică dacă numărul de coloane este impar (conform cerințelor problemei) și se validează datele de intrare (numerele de linii și coloane trebuie să fie cuprinse între 1 și 100, iar elementele matricei să fie numere naturale mai mici decât 1.000.000).&lt;br /&gt;
&lt;br /&gt;
 Funcția identice2() primește ca parametri numărul de linii și coloane ale matricei și matricea însăși. Apoi, folosind două bucle for, se compară fiecare pereche de linii din matrice (exceptând cele cu aceeași poziție) și se verifică dacă sunt identice. Pentru a verifica acest lucru, se folosește funcția all() împreună cu o expresie generatoare, care verifică dacă elementele de pe fiecare poziție a celor două linii sunt egale. Dacă da, se incrementează un contor cnt. La final, funcția afișează valoarea acestui contor.&lt;br /&gt;
&lt;br /&gt;
 În funcția main(), se apelează mai întâi funcția citire_matrice() pentru a obține datele de intrare. Apoi, se afișează matricea inițială și se apelează funcția identice2() pentru a determina numărul de perechi de linii consecutive identice&lt;/div&gt;</summary>
		<author><name>MiclausIoana</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=0668_-_Identice_1&amp;diff=3835</id>
		<title>0668 - Identice 1</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=0668_-_Identice_1&amp;diff=3835"/>
		<updated>2023-04-19T15:00:45Z</updated>

		<summary type="html">&lt;p&gt;MiclausIoana: Pagină nouă: Sursă: [https://www.pbinfo.ro/probleme/668/identice1] == 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 determine câte perechi de linii consecutive din matrice sunt identice. == 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 ecran se va af...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Sursă: [https://www.pbinfo.ro/probleme/668/identice1]&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 determine câte perechi de linii consecutive din matrice sunt identice.&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 C numere, reprezentând valoare determinată. Î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;
* elementele matricei sunt numere naturale 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;
: 5 3&lt;br /&gt;
: 10 2 5 &lt;br /&gt;
: 2 1 4 &lt;br /&gt;
: 2 1 4 &lt;br /&gt;
: 7 10 9 &lt;br /&gt;
: 7 10 9 &lt;br /&gt;
; Date de iesire&lt;br /&gt;
: 2&lt;br /&gt;
==== Explicatie ====&lt;br /&gt;
Sunt identice a doua și a treia linie, respectiv a patra și a cincea.&lt;br /&gt;
&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 m % 2 == 0:&lt;br /&gt;
            print(&amp;quot;Numarul de coloane trebuie sa fie impar.&amp;quot;)&lt;br /&gt;
            exit()&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;
        linie_matrice = []&lt;br /&gt;
        for coloana in range(m):&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;
                    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;
        matrice.append(linie_matrice)&lt;br /&gt;
&lt;br /&gt;
    return n, m, matrice&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def identice(n, m, matrice):&lt;br /&gt;
    cnt = 0&lt;br /&gt;
    for i in range(n-1):&lt;br /&gt;
        if matrice[i] == matrice[i+1]:&lt;br /&gt;
            cnt += 1&lt;br /&gt;
&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, matrice = citire_matrice()&lt;br /&gt;
    print(&amp;quot;Matricea initiala:&amp;quot;)&lt;br /&gt;
    for linie in matrice:&lt;br /&gt;
        print(linie)&lt;br /&gt;
    print(&amp;quot;Numarul de perechi de linii consecutive identice:&amp;quot;)&lt;br /&gt;
    identice(n, m, matrice)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Explicatie ===&lt;br /&gt;
Acest program citeste de la tastatura numerele n si m, apoi citeste o matrice cu n linii si m coloane, formata din numere intregi mai mici decat 1.000.000, verificand in acelasi timp daca datele introduse sunt valide. Dupa ce matricea este citita, programul afiseaza matricea initiala si numarul de perechi de linii consecutive identice din matricea data.&lt;br /&gt;
&lt;br /&gt;
Functia citire_matrice primeste input-ul de la tastatura si creeaza si returneaza matricea corespunzatoare. Verifica daca numarul de coloane este impar si daca valorile introduse se incadreaza in intervalul permis. Dupa ce matricea este citita, aceasta este returnata impreuna cu dimensiunile sale.&lt;br /&gt;
&lt;br /&gt;
Functia identice primeste dimensiunile si matricea si calculeaza numarul de perechi de linii consecutive identice. Parcurge matricea linie cu linie si verifica daca linia curenta si cea urmatoare sunt identice, daca da, adauga unu la numarul de perechi identice. La final afiseaza numarul de perechi identice gasite&lt;/div&gt;</summary>
		<author><name>MiclausIoana</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=3120_-_Simetrica_Bac&amp;diff=3834</id>
		<title>3120 - Simetrica Bac</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=3120_-_Simetrica_Bac&amp;diff=3834"/>
		<updated>2023-04-19T14:48:24Z</updated>

		<summary type="html">&lt;p&gt;MiclausIoana: Pagină nouă: Sursă: [https://www.pbinfo.ro/probleme/3120/simetrica-bac] == Cerinţa == Un tablou bidimensional cu număr impar de coloane este numit simetric faţă de coloana din mijloc dacă, pe fiecare linie a tabloului, elementele dispuse simetric faţă de elementul din mijloc al liniei respective au valori egale. Scrieţi un program care citește de la tastatură două numere naturale, &amp;#039;&amp;#039;&amp;#039;m&amp;#039;&amp;#039;&amp;#039; și &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039; (&amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039; impar), și elementele unui tablou bidimensional cu &amp;#039;&amp;#039;&amp;#039;m&amp;#039;&amp;#039;&amp;#039; linii ș...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Sursă: [https://www.pbinfo.ro/probleme/3120/simetrica-bac]&lt;br /&gt;
== Cerinţa ==&lt;br /&gt;
Un tablou bidimensional cu număr impar de coloane este numit simetric faţă de coloana din mijloc dacă, pe fiecare linie a tabloului, elementele dispuse simetric faţă de elementul din mijloc al liniei respective au valori egale.&lt;br /&gt;
Scrieţi un program care citește de la tastatură două numere naturale, &#039;&#039;&#039;m&#039;&#039;&#039; și &#039;&#039;&#039;n&#039;&#039;&#039; (&#039;&#039;&#039;n&#039;&#039;&#039; impar), și elementele unui tablou bidimensional cu &#039;&#039;&#039;m&#039;&#039;&#039; linii și &#039;&#039;&#039;n&#039;&#039;&#039; coloane, numere naturale. Programul afișează pe ecran mesajul &#039;&#039;&#039;DA&#039;&#039;&#039;, dacă tabloul este simetric față de coloana din mijloc, sau mesajul &#039;&#039;&#039;NU&#039;&#039;&#039; în caz contrar.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Programul citește de la tastatură numerele &#039;&#039;&#039;m&#039;&#039;&#039; și &#039;&#039;&#039;n&#039;&#039;&#039;, iar apoi cele n*m elemente ale 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 mesajul DA sau NU, conform eununțului. Î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;3 ≤ n, m ≤ 21&#039;&#039;&#039;&lt;br /&gt;
* numerele citite din matrice vor fi mai mici decât &#039;&#039;&#039;10.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;
: 1 2 4 2 1&lt;br /&gt;
: 3 5 5 5 3&lt;br /&gt;
: 2 4 1 4 2&lt;br /&gt;
: 1 1 1 1 1&lt;br /&gt;
; Date de iesire&lt;br /&gt;
: DA&lt;br /&gt;
=== Exemplu 2 ===&lt;br /&gt;
; Date de intrare&lt;br /&gt;
: 2 4&lt;br /&gt;
: 2 3 1 3&lt;br /&gt;
: 1 1 1 5&lt;br /&gt;
; Date de iesire&lt;br /&gt;
: NU, Datele nu sunt comform restirctiilor impuse&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 m % 2 == 0:&lt;br /&gt;
            print(&amp;quot;Numarul de coloane trebuie sa fie impar.&amp;quot;)&lt;br /&gt;
            exit()&lt;br /&gt;
        if 3 &amp;lt;= n &amp;lt;= 21 and 3 &amp;lt;= m &amp;lt;= 21:&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;= 10000:&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;
&lt;br /&gt;
def simetrie(n, m, matrice):&lt;br /&gt;
    mijl = m // 2&lt;br /&gt;
    for i in range(n):&lt;br /&gt;
        for j in range(mijl):&lt;br /&gt;
            if matrice[i][j] != matrice[i][m-j-1]:&lt;br /&gt;
                print(&amp;quot;NU&amp;quot;)&lt;br /&gt;
                return&lt;br /&gt;
    print(&amp;quot;DA&amp;quot;)&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;
    print(&amp;quot;Matricea initiala:&amp;quot;)&lt;br /&gt;
    for linie in matrice:&lt;br /&gt;
        print(linie)&lt;br /&gt;
    print(&amp;quot;Matricea transformata:&amp;quot;)&lt;br /&gt;
    simetrie(n, m, matrice)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
== Explicații ==&lt;br /&gt;
  Acest cod reprezintă o implementare a unui program care citeste o matrice de dimensiuni date de utilizator, verifica daca matricea respecta anumite restrictii (numarul de linii si coloane trebuie sa fie intre 3 si 21, numarul de coloane trebuie sa fie impar, valorile din matrice trebuie sa fie mai mici sau egale cu 10000), si verifica daca matricea este simetrica fata de mijlocul ei.&lt;br /&gt;
&lt;br /&gt;
 Functia citire_matrice() citeste numarul de linii si coloane ale matricei si verifica daca sunt conforme cu restrictiile, iar apoi citeste elementele matricei, verificand daca sunt numere intregi si sunt conforme cu restrictiile. Daca aceste conditii nu sunt respectate, programul se opreste prin intermediul functiei exit(). Aceasta functie returneaza dimensiunile si matricea citite.&lt;br /&gt;
&lt;br /&gt;
 Functia simetrie(n, m, matrice) verifica daca matricea primita ca parametru este simetrica fata de mijlocul ei. Acest lucru este realizat prin compararea fiecarui element din matrice cu elementul corespunzator de pe partea opusa. Daca exista cel putin o pereche de elemente care nu sunt simetrice, programul afiseaza &amp;quot;NU&amp;quot;. Daca toate elementele sunt simetrice, programul afiseaza &amp;quot;DA&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
 In final, programul citeste si afiseaza matricea initiala, apoi verifica daca matricea este simetrica si afiseaza matricea transformata.&lt;/div&gt;</summary>
		<author><name>MiclausIoana</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=0788_-_Oglindire&amp;diff=3833</id>
		<title>0788 - Oglindire</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=0788_-_Oglindire&amp;diff=3833"/>
		<updated>2023-04-19T14:35:34Z</updated>

		<summary type="html">&lt;p&gt;MiclausIoana: Pagină nouă: Sursă: [https://www.pbinfo.ro/probleme/788/oglindire] == 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 oglindească toate liniile matricei care încep cu un număr prim și apoi să se afișeze matricea. == 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;Sursă: [https://www.pbinfo.ro/probleme/788/oglindire]&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 oglindească toate liniile matricei care încep cu un număr prim și apoi să se afișeze matricea.&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;
Dacă datele sunt introduse corect, pe ecran se va afișa: &amp;quot;Datele sunt corecte.&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 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 ≤ m,n ≤ 100&#039;&#039;&#039;&lt;br /&gt;
*elementele matricei 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 6&lt;br /&gt;
: 4 20 15 23 18 9 &lt;br /&gt;
: 17 15 13 18 12 1 &lt;br /&gt;
: 15 8 23 23 14 18 &lt;br /&gt;
: 3 18 8 23 12 15 &lt;br /&gt;
; Date de iesire&lt;br /&gt;
: 4 20 15 23 18 9 &lt;br /&gt;
: 1 12 18 13 15 17 &lt;br /&gt;
: 15 8 23 23 14 18 &lt;br /&gt;
: 15 12 23 8 18 3&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 oglindit(n, m, matrice):&lt;br /&gt;
    for i in range(n):&lt;br /&gt;
        if prim(matrice[i][0]):&lt;br /&gt;
            for j in range(m - 1, -1, -1):&lt;br /&gt;
                print(matrice[i][j], end=&#039; &#039;)&lt;br /&gt;
        else:&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;
&lt;br /&gt;
&lt;br /&gt;
if _name_ == &amp;quot;_main_&amp;quot;:&lt;br /&gt;
    n, m, matrice = citire_matrice()&lt;br /&gt;
    print(&amp;quot;Matricea initiala:&amp;quot;)&lt;br /&gt;
    for linie in matrice:&lt;br /&gt;
        print(linie)&lt;br /&gt;
    print(&amp;quot;Matricea transformata:&amp;quot;)&lt;br /&gt;
    oglindit(n, m, matrice)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
== Explicatii ==&lt;br /&gt;
Acest cod definește două funcții: &amp;quot;citire_matrice()&amp;quot; și &amp;quot;oglindit()&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Funcția &amp;quot;citire_matrice()&amp;quot; cere utilizatorului să introducă numărul de linii și de coloane ale matricei și validează datele introduse pentru a se asigura că sunt corecte. Apoi, se introduce matricea element cu element, pentru fiecare linie și coloană, și se validează valoarea introdusă. Dacă datele nu sunt valide, se afișează un mesaj corespunzător și se iese din program.&lt;br /&gt;
&lt;br /&gt;
Funcția &amp;quot;oglindit()&amp;quot; primește numărul de linii și coloane ale matricei, împreună cu matricea în sine. Aceasta verifică dacă primul element al fiecărei linii este prim sau nu, și dacă este prim, afișează elementele acelei linii în ordine inversă, altfel le afișează în ordine directă.&lt;br /&gt;
&lt;br /&gt;
În programul principal, se apelează funcția &amp;quot;citire_matrice()&amp;quot; pentru a citi matricea de intrare, se afișează matricea de intrare și apoi se apelează funcția &amp;quot;oglindit()&amp;quot; pentru a afișa matricea transformată.&lt;/div&gt;</summary>
		<author><name>MiclausIoana</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=0796_-_Eliminare_3&amp;diff=3832</id>
		<title>0796 - Eliminare 3</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=0796_-_Eliminare_3&amp;diff=3832"/>
		<updated>2023-04-19T14:29:08Z</updated>

		<summary type="html">&lt;p&gt;MiclausIoana: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Sursă: [https://www.pbinfo.ro/probleme/796/eliminare3]&lt;br /&gt;
== Cerinţa ==&lt;br /&gt;
Se dă o matrice cu &#039;&#039;&#039;m&#039;&#039;&#039; linii și &#039;&#039;&#039;n&#039;&#039;&#039; coloane și elemente numere naturale cu cel mult patru cifre. Să se modifice matricea, eliminând penultima linie și penultima coloană.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Programul citește de la tastatură numerele &#039;&#039;&#039;m n&#039;&#039;&#039;, iar apoi &#039;&#039;&#039;m*n&#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 matricea obținută fiecare linie a matricei pe câte o linie a ecranului, elementele de pe aceeași linie fiind separate prin câte un spațiu. Î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;3 ≤ m,n ≤ 50&#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;
: 5 1 2 3 4&lt;br /&gt;
: 8 2 2 5 3&lt;br /&gt;
: 2 1 7 3 9&lt;br /&gt;
: 3 0 9 8 5&lt;br /&gt;
; Date de iesire&lt;br /&gt;
: 5 1 2 4&lt;br /&gt;
: 8 2 2 3&lt;br /&gt;
: 3 0 9 5&lt;br /&gt;
=== Exemplu 2 ===&lt;br /&gt;
; Date de intrare&lt;br /&gt;
: 2 3&lt;br /&gt;
; Date de iesire&lt;br /&gt;
: Datele nu sunt comform restrictiilor impuse&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 3 &amp;lt;= n &amp;lt;= 50 and 3 &amp;lt;= m &amp;lt;= 50:&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;gt;= 0:&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 eliminare_penultima_linie_si_coloana(matrice):&lt;br /&gt;
    n = len(matrice)&lt;br /&gt;
    m = len(matrice[0])&lt;br /&gt;
    for i in range(n):&lt;br /&gt;
        for j in range(m):&lt;br /&gt;
            if i != n - 2 and j != m - 2:&lt;br /&gt;
                print(matrice[i][j], end=&#039; &#039;)&lt;br /&gt;
        if i != n - 2:&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;
    print(&amp;quot;Matricea initiala:&amp;quot;)&lt;br /&gt;
    for linie in matrice:&lt;br /&gt;
        print(linie)&lt;br /&gt;
    print(&amp;quot;Matricea transformata:&amp;quot;)&lt;br /&gt;
    eliminare_penultima_linie_si_coloana(matrice)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Explicatii ==&lt;br /&gt;
 Acest cod definește două funcții și apoi apelează funcțiile respective în funcția principală, care este protejată de instrucțiunea if _name_ == &amp;quot;_main_&amp;quot;:.&lt;br /&gt;
&lt;br /&gt;
 Funcția citire_matrice() primește input-ul de la utilizator pentru dimensiunile matricei și valorile pentru fiecare element din matrice. În primul rând, funcția cere numărul de linii și de coloane ale matricei și verifică dacă numerele introduse sunt în intervalul [3, 50]. Dacă nu sunt, funcția afișează un mesaj corespunzător și se termină. Dacă input-ul este corect, funcția continuă să ceară valori pentru fiecare element al matricei și să le stocheze într-o listă bidimensională matrice. Dacă valoarea introdusă nu este un număr întreg, funcția afișează un mesaj corespunzător și se termină. Dacă numărul introdus este mai mic decât zero, funcția afișează un mesaj corespunzător și încearcă din nou să ceară o valoare de la utilizator până când aceasta este validă. Funcția returnează matricea.&lt;br /&gt;
&lt;br /&gt;
 Funcția eliminare_penultima_linie_si_coloana(matrice) primește matricea ca argument și afișează matricea fără a doua linie și a doua coloană. Pentru fiecare element din matrice, funcția verifică dacă linia și coloana curentă sunt penultimele și, dacă da, afișează elementul următor. În caz contrar, afișează elementul curent. După afișarea tuturor elementelor dintr-o linie, funcția afișează o linie goală.&lt;br /&gt;
&lt;br /&gt;
 Funcția principală apelează citire_matrice() și afișează matricea inițială. Apoi, apelează eliminare_penultima_linie_si_coloana(matrice) și afișează matricea transformată.&lt;/div&gt;</summary>
		<author><name>MiclausIoana</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=0785_-_Elim_Min_Max&amp;diff=3831</id>
		<title>0785 - Elim Min Max</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=0785_-_Elim_Min_Max&amp;diff=3831"/>
		<updated>2023-04-19T14:18:48Z</updated>

		<summary type="html">&lt;p&gt;MiclausIoana: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Sursă: [https://www.pbinfo.ro/probleme/785/elimminmax]&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 distincte două câte două. Să se elimine din matrice linia și coloana pe care se află elementul maxim și linia și coloana pe care se află elementul minim.&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;
Dacă datele sunt introduse corect, pe ecran se va afișa: &amp;quot;Datele sunt corecte.&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 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 ≤ m,n ≤ 100&#039;&#039;&#039;&lt;br /&gt;
* elementele matricei 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 6&lt;br /&gt;
: 45 49 28 43 19 30 &lt;br /&gt;
: 24 12 9 55 52 39 &lt;br /&gt;
: 7 13 48 15 3 51 &lt;br /&gt;
: 37 4 25 8 20 34 &lt;br /&gt;
; Date de iesire&lt;br /&gt;
: 45 49 28 30 &lt;br /&gt;
: 37 4 25 34&lt;br /&gt;
==== Explicatie ====&lt;br /&gt;
 S-au eliminat liniile 2 și 3, respectiv coloanele 4 și 5.&lt;br /&gt;
&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 matrice&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def eliminare_linie(matrice):&lt;br /&gt;
    # gasirea pozitiei elementului maxim&lt;br /&gt;
    max_val = matrice[0][0]&lt;br /&gt;
    max_i, max_j = 0, 0&lt;br /&gt;
    for i in range(len(matrice)):&lt;br /&gt;
        for j in range(len(matrice[0])):&lt;br /&gt;
            if matrice[i][j] &amp;gt; max_val:&lt;br /&gt;
                max_val = matrice[i][j]&lt;br /&gt;
                max_i, max_j = i, j&lt;br /&gt;
&lt;br /&gt;
    # gasirea pozitiei elementului minim&lt;br /&gt;
    min_val = matrice[0][0]&lt;br /&gt;
    min_i, min_j = 0, 0&lt;br /&gt;
    for i in range(len(matrice)):&lt;br /&gt;
        for j in range(len(matrice[0])):&lt;br /&gt;
            if matrice[i][j] &amp;lt; min_val:&lt;br /&gt;
                min_val = matrice[i][j]&lt;br /&gt;
                min_i, min_j = i, j&lt;br /&gt;
&lt;br /&gt;
    # eliminarea liniilor si coloanelor&lt;br /&gt;
    new_matrice = []&lt;br /&gt;
    for i in range(len(matrice)):&lt;br /&gt;
        if i == max_i or i == min_i:&lt;br /&gt;
            continue&lt;br /&gt;
        new_row = []&lt;br /&gt;
        for j in range(len(matrice[0])):&lt;br /&gt;
            if j == max_j or j == min_j:&lt;br /&gt;
                continue&lt;br /&gt;
            new_row.append(matrice[i][j])&lt;br /&gt;
        new_matrice.append(new_row)&lt;br /&gt;
&lt;br /&gt;
    # afisarea matricei transformate&lt;br /&gt;
    for row in new_matrice:&lt;br /&gt;
        print(*row)&lt;br /&gt;
&lt;br /&gt;
if _name_ == &amp;quot;_main_&amp;quot;:&lt;br /&gt;
    matrice = citire_matrice()&lt;br /&gt;
    print(&amp;quot;Matricea initiala:&amp;quot;)&lt;br /&gt;
    for linie in matrice:&lt;br /&gt;
        print(linie)&lt;br /&gt;
    print(&amp;quot;Matricea transformata:&amp;quot;)&lt;br /&gt;
    eliminare_linie(matrice)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Explicati ==&lt;br /&gt;
 citire_matrice() - această funcție primește de la utilizator numărul de linii și coloane ale matricei și apoi îl solicită să introducă valorile matricei. Dacă valorile introduse sunt în intervalul [1, 100] și sunt numere întregi, atunci funcția returnează matricea creată.&lt;br /&gt;
&lt;br /&gt;
 eliminare_linie(matrice) - această funcție primește o matrice și urmărește două obiective: să găsească pozițiile elementului maxim și minim din matrice și să elimine liniile și coloanele care conțin aceste elemente. Apoi, funcția afișează matricea modificată.&lt;br /&gt;
&lt;br /&gt;
 main() - această funcție este punctul de intrare în program. Ea inițializează matricea cu ajutorul funcției citire_matrice(), afișează matricea inițială și apoi aplică funcția eliminare_linie() pentru a obține matricea modificată.&lt;/div&gt;</summary>
		<author><name>MiclausIoana</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=0774_-_Elim_Linii&amp;diff=3829</id>
		<title>0774 - Elim Linii</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=0774_-_Elim_Linii&amp;diff=3829"/>
		<updated>2023-04-19T14:09:26Z</updated>

		<summary type="html">&lt;p&gt;MiclausIoana: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Sursă: [https://www.pbinfo.ro/probleme/774/elimlinii]&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 elimine din matrice toate liniile care încep cu un număr prim și apoi să se afișeze matricea.&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;
Dacă datele sunt introduse corect, pe ecran se va afișa: &amp;quot;Datele sunt corecte.&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 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 ≤ m,n ≤ 100&#039;&#039;&#039;&lt;br /&gt;
* elementele matricei 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 6&lt;br /&gt;
:4 20 15 23 18 9 &lt;br /&gt;
:17 15 13 18 12 1 &lt;br /&gt;
:15 8 23 23 14 18 &lt;br /&gt;
:3 18 8 23 12 15 &lt;br /&gt;
; Date de iesire&lt;br /&gt;
: 4 20 15 23 18 9 &lt;br /&gt;
: 15 8 23 23 14 18 &lt;br /&gt;
=== Exemplu 2 ===&lt;br /&gt;
; Date de intrare&lt;br /&gt;
: 0 2&lt;br /&gt;
; Date de iesire&lt;br /&gt;
: Datele nu sunt comform restrictiilor impuse&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 matrice&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def is_prime(n):&lt;br /&gt;
    if n == 0 or n == 1:&lt;br /&gt;
        return False&lt;br /&gt;
    elif n == 2:&lt;br /&gt;
        return True&lt;br /&gt;
    elif n % 2 == 0:&lt;br /&gt;
        return False&lt;br /&gt;
    else:&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;
&lt;br /&gt;
def eliminare_linii(matrice):&lt;br /&gt;
    n = len(matrice)&lt;br /&gt;
    m = len(matrice[0])&lt;br /&gt;
    k = 0&lt;br /&gt;
    while k &amp;lt; n:&lt;br /&gt;
        if is_prime(matrice[k][0]):&lt;br /&gt;
            for i in range(k, n - 1):&lt;br /&gt;
                for j in range(m):&lt;br /&gt;
                    matrice[i][j] = matrice[i + 1][j]&lt;br /&gt;
            n -= 1&lt;br /&gt;
        else:&lt;br /&gt;
            k += 1&lt;br /&gt;
&lt;br /&gt;
    for i in range(n):&lt;br /&gt;
        for j in range(m):&lt;br /&gt;
            print(matrice[i][j], end=&amp;quot; &amp;quot;)&lt;br /&gt;
        print()&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;
    print(&amp;quot;Matricea initiala:&amp;quot;)&lt;br /&gt;
    for linie in matrice:&lt;br /&gt;
        print(linie)&lt;br /&gt;
    eliminare_linii(matrice)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Explicații ==&lt;br /&gt;
 citire_matrice(): Această funcție cere utilizatorului să introducă dimensiunile matricei și valorile fiecărui element al matricei. Dacă valorile introduse nu respectă condițiile, funcția se încheie cu un mesaj de eroare. Funcția returnează matricea introdusă.&lt;br /&gt;
&lt;br /&gt;
 is_prime(n): Această funcție primește un număr întreg n și returnează True dacă n este prim și False în caz contrar.&lt;br /&gt;
&lt;br /&gt;
 eliminare_linii(matrice): Această funcție primește matricea introdusă și elimină liniile care au primul element prim, conform descrierii de mai sus. Matricea rezultată este afișată pe ecran.&lt;br /&gt;
&lt;br /&gt;
 În partea de jos a codului se citește matricea introdusă de utilizator și se afișează pe ecran. Apoi, funcția eliminare_linii() este apelată cu matricea introdusă ca argument.&lt;/div&gt;</summary>
		<author><name>MiclausIoana</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=0796_-_Eliminare_3&amp;diff=3827</id>
		<title>0796 - Eliminare 3</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=0796_-_Eliminare_3&amp;diff=3827"/>
		<updated>2023-04-19T14:00:31Z</updated>

		<summary type="html">&lt;p&gt;MiclausIoana: Pagină nouă: == Rezolvare == def citire_matrice():     try:         n = int(input(&amp;quot;Introduceti numarul de linii: &amp;quot;))         m = int(input(&amp;quot;Introduceti numarul de coloane: &amp;quot;))         if 3 &amp;lt;= n &amp;lt;= 50 and 3 &amp;lt;= m &amp;lt;= 50:             print(&amp;quot;Datele sunt corecte.&amp;quot;)         else:             print(&amp;quot;Datele nu sunt conform restrictiilor impuse.&amp;quot;)             exit()     except ValueError:         print(&amp;quot;Trebuie introduse doar numere intregi.&amp;quot;)         exit()      matrice = []     for linie in range...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Rezolvare ==&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 3 &amp;lt;= n &amp;lt;= 50 and 3 &amp;lt;= m &amp;lt;= 50:&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;gt;= 0:&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 eliminare_penultima_linie_si_coloana(matrice):&lt;br /&gt;
    n = len(matrice)&lt;br /&gt;
    m = len(matrice[0])&lt;br /&gt;
    for i in range(n):&lt;br /&gt;
        for j in range(m):&lt;br /&gt;
            if i != n - 2 and j != m - 2:&lt;br /&gt;
                print(matrice[i][j], end=&#039; &#039;)&lt;br /&gt;
        if i != n - 2:&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;
    print(&amp;quot;Matricea initiala:&amp;quot;)&lt;br /&gt;
    for linie in matrice:&lt;br /&gt;
        print(linie)&lt;br /&gt;
    print(&amp;quot;Matricea transformata:&amp;quot;)&lt;br /&gt;
    eliminare_penultima_linie_si_coloana(matrice)&lt;br /&gt;
== Explicatii ==&lt;br /&gt;
Acest cod definește două funcții și apoi apelează funcțiile respective în funcția principală, care este protejată de instrucțiunea if _name_ == &amp;quot;_main_&amp;quot;:.&lt;br /&gt;
&lt;br /&gt;
Funcția citire_matrice() primește input-ul de la utilizator pentru dimensiunile matricei și valorile pentru fiecare element din matrice. În primul rând, funcția cere numărul de linii și de coloane ale matricei și verifică dacă numerele introduse sunt în intervalul [3, 50]. Dacă nu sunt, funcția afișează un mesaj corespunzător și se termină. Dacă input-ul este corect, funcția continuă să ceară valori pentru fiecare element al matricei și să le stocheze într-o listă bidimensională matrice. Dacă valoarea introdusă nu este un număr întreg, funcția afișează un mesaj corespunzător și se termină. Dacă numărul introdus este mai mic decât zero, funcția afișează un mesaj corespunzător și încearcă din nou să ceară o valoare de la utilizator până când aceasta este validă. Funcția returnează matricea.&lt;br /&gt;
&lt;br /&gt;
Funcția eliminare_penultima_linie_si_coloana(matrice) primește matricea ca argument și afișează matricea fără a doua linie și a doua coloană. Pentru fiecare element din matrice, funcția verifică dacă linia și coloana curentă sunt penultimele și, dacă da, afișează elementul următor. În caz contrar, afișează elementul curent. După afișarea tuturor elementelor dintr-o linie, funcția afișează o linie goală.&lt;br /&gt;
&lt;br /&gt;
Funcția principală apelează citire_matrice() și afișează matricea inițială. Apoi, apelează eliminare_penultima_linie_si_coloana(matrice) și afișează matricea transformată.&lt;/div&gt;</summary>
		<author><name>MiclausIoana</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=0785_-_Elim_Min_Max&amp;diff=3826</id>
		<title>0785 - Elim Min Max</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=0785_-_Elim_Min_Max&amp;diff=3826"/>
		<updated>2023-04-19T13:58:35Z</updated>

		<summary type="html">&lt;p&gt;MiclausIoana: Pagină nouă: == Rezolvare == def citire_matrice():     try:         n = int(input(&amp;quot;Introduceti numarul de linii: &amp;quot;))         m = int(input(&amp;quot;Introduceti numarul de coloane: &amp;quot;))         if 1 &amp;lt;= n &amp;lt;= 100 and 1 &amp;lt;= m &amp;lt;= 100:             print(&amp;quot;Datele sunt corecte.&amp;quot;)         else:             print(&amp;quot;Datele nu sunt conform restrictiilor impuse.&amp;quot;)             exit()     except ValueError:         print(&amp;quot;Trebuie introduse doar numere intregi.&amp;quot;)         exit()      matrice = []     for linie in ran...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Rezolvare ==&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 eliminare_linie(matrice):&lt;br /&gt;
    # gasirea pozitiei elementului maxim&lt;br /&gt;
    max_val = matrice[0][0]&lt;br /&gt;
    max_i, max_j = 0, 0&lt;br /&gt;
    for i in range(len(matrice)):&lt;br /&gt;
        for j in range(len(matrice[0])):&lt;br /&gt;
            if matrice[i][j] &amp;gt; max_val:&lt;br /&gt;
                max_val = matrice[i][j]&lt;br /&gt;
                max_i, max_j = i, j&lt;br /&gt;
&lt;br /&gt;
    # gasirea pozitiei elementului minim&lt;br /&gt;
    min_val = matrice[0][0]&lt;br /&gt;
    min_i, min_j = 0, 0&lt;br /&gt;
    for i in range(len(matrice)):&lt;br /&gt;
        for j in range(len(matrice[0])):&lt;br /&gt;
            if matrice[i][j] &amp;lt; min_val:&lt;br /&gt;
                min_val = matrice[i][j]&lt;br /&gt;
                min_i, min_j = i, j&lt;br /&gt;
&lt;br /&gt;
    # eliminarea liniilor si coloanelor&lt;br /&gt;
    new_matrice = []&lt;br /&gt;
    for i in range(len(matrice)):&lt;br /&gt;
        if i == max_i or i == min_i:&lt;br /&gt;
            continue&lt;br /&gt;
        new_row = []&lt;br /&gt;
        for j in range(len(matrice[0])):&lt;br /&gt;
            if j == max_j or j == min_j:&lt;br /&gt;
                continue&lt;br /&gt;
            new_row.append(matrice[i][j])&lt;br /&gt;
        new_matrice.append(new_row)&lt;br /&gt;
&lt;br /&gt;
    # afisarea matricei transformate&lt;br /&gt;
    for row in new_matrice:&lt;br /&gt;
        print(*row)&lt;br /&gt;
&lt;br /&gt;
if _name_ == &amp;quot;_main_&amp;quot;:&lt;br /&gt;
    matrice = citire_matrice()&lt;br /&gt;
    print(&amp;quot;Matricea initiala:&amp;quot;)&lt;br /&gt;
    for linie in matrice:&lt;br /&gt;
        print(linie)&lt;br /&gt;
    print(&amp;quot;Matricea transformata:&amp;quot;)&lt;br /&gt;
    eliminare_linie(matrice)&lt;br /&gt;
&lt;br /&gt;
== Explicati ==&lt;br /&gt;
citire_matrice() - această funcție primește de la utilizator numărul de linii și coloane ale matricei și apoi îl solicită să introducă valorile matricei. Dacă valorile introduse sunt în intervalul [1, 100] și sunt numere întregi, atunci funcția returnează matricea creată.&lt;br /&gt;
&lt;br /&gt;
eliminare_linie(matrice) - această funcție primește o matrice și urmărește două obiective: să găsească pozițiile elementului maxim și minim din matrice și să elimine liniile și coloanele care conțin aceste elemente. Apoi, funcția afișează matricea modificată.&lt;br /&gt;
&lt;br /&gt;
main() - această funcție este punctul de intrare în program. Ea inițializează matricea cu ajutorul funcției citire_matrice(), afișează matricea inițială și apoi aplică funcția eliminare_linie() pentru a obține matricea modificată.&lt;/div&gt;</summary>
		<author><name>MiclausIoana</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=0774_-_Elim_Linii&amp;diff=3825</id>
		<title>0774 - Elim Linii</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=0774_-_Elim_Linii&amp;diff=3825"/>
		<updated>2023-04-19T13:47:06Z</updated>

		<summary type="html">&lt;p&gt;MiclausIoana: Pagină nouă: Sursă: [] == Cerinţa ==  == Date de intrare ==  == Date de ieșire == 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 &amp;#039;&amp;#039;&amp;#039;MAX&amp;#039;&amp;#039;&amp;#039;, reprezentând cel mai mare dintre cele &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039; numere date,. În caz contrar, se va afișa pe ecran: &amp;quot;Datele nu sunt comform restricțiilor impuse.&amp;quot;.  == Restricții și precizări == * 1 ≤ n ≤ 1.000 * cele &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039; numere citite vor avea cel mult &amp;#039;&amp;#039;&amp;#039;9&amp;#039;&amp;#039;&amp;#039; cifre == Exemple...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Sursă: []&lt;br /&gt;
== Cerinţa ==&lt;br /&gt;
&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
&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 &#039;&#039;&#039;MAX&#039;&#039;&#039;, reprezentând cel mai mare dintre cele &#039;&#039;&#039;n&#039;&#039;&#039; numere date,. Î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;
* 1 ≤ n ≤ 1.000&lt;br /&gt;
* cele &#039;&#039;&#039;n&#039;&#039;&#039; numere citite vor avea cel mult &#039;&#039;&#039;9&#039;&#039;&#039; cifre&lt;br /&gt;
== Exemple ==&lt;br /&gt;
=== Exemplu 1 ===&lt;br /&gt;
; Date de intrare&lt;br /&gt;
: 5&lt;br /&gt;
: 7 6 9 6 8&lt;br /&gt;
; Date de iesire&lt;br /&gt;
:Datele sunt corecte. Rezultat: 9&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;
==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 matrice&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def is_prime(n):&lt;br /&gt;
    if n == 0 or n == 1:&lt;br /&gt;
        return False&lt;br /&gt;
    elif n == 2:&lt;br /&gt;
        return True&lt;br /&gt;
    elif n % 2 == 0:&lt;br /&gt;
        return False&lt;br /&gt;
    else:&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;
&lt;br /&gt;
def eliminare_linii(matrice):&lt;br /&gt;
    n = len(matrice)&lt;br /&gt;
    m = len(matrice[0])&lt;br /&gt;
    k = 0&lt;br /&gt;
    while k &amp;lt; n:&lt;br /&gt;
        if is_prime(matrice[k][0]):&lt;br /&gt;
            for i in range(k, n - 1):&lt;br /&gt;
                for j in range(m):&lt;br /&gt;
                    matrice[i][j] = matrice[i + 1][j]&lt;br /&gt;
            n -= 1&lt;br /&gt;
        else:&lt;br /&gt;
            k += 1&lt;br /&gt;
&lt;br /&gt;
    for i in range(n):&lt;br /&gt;
        for j in range(m):&lt;br /&gt;
            print(matrice[i][j], end=&amp;quot; &amp;quot;)&lt;br /&gt;
        print()&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;
    print(&amp;quot;Matricea initiala:&amp;quot;)&lt;br /&gt;
    for linie in matrice:&lt;br /&gt;
        print(linie)&lt;br /&gt;
    eliminare_linii(matrice)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Explicații ==&lt;br /&gt;
 citire_matrice(): Această funcție cere utilizatorului să introducă dimensiunile matricei și valorile fiecărui element al matricei. Dacă valorile introduse nu respectă condițiile, funcția se încheie cu un mesaj de eroare. Funcția returnează matricea introdusă.&lt;br /&gt;
&lt;br /&gt;
 is_prime(n): Această funcție primește un număr întreg n și returnează True dacă n este prim și False în caz contrar.&lt;br /&gt;
&lt;br /&gt;
 eliminare_linii(matrice): Această funcție primește matricea introdusă și elimină liniile care au primul element prim, conform descrierii de mai sus. Matricea rezultată este afișată pe ecran.&lt;br /&gt;
&lt;br /&gt;
 În partea de jos a codului se citește matricea introdusă de utilizator și se afișează pe ecran. Apoi, funcția eliminare_linii() este apelată cu matricea introdusă ca argument.&lt;/div&gt;</summary>
		<author><name>MiclausIoana</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=0775_-_Elim_Coloane&amp;diff=3824</id>
		<title>0775 - Elim Coloane</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=0775_-_Elim_Coloane&amp;diff=3824"/>
		<updated>2023-04-19T13:29:25Z</updated>

		<summary type="html">&lt;p&gt;MiclausIoana: Pagină nouă: Sursă: [https://www.pbinfo.ro/probleme/775/elimcoloane] == 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 elimine din matrice toate coloanele care conțin elemente nule și apoi să se afișeze matricea. == 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;Sursă: [https://www.pbinfo.ro/probleme/775/elimcoloane]&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 elimine din matrice toate coloanele care conțin elemente nule și apoi să se afișeze matricea.&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;
Dacă datele sunt introduse corect, pe ecran se va afișa: &amp;quot;Datele sunt corecte.&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 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 ≤ m,n ≤ 100&#039;&#039;&#039;&lt;br /&gt;
* elementele matricei 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 6&lt;br /&gt;
: 4 20 15 23 0 9 &lt;br /&gt;
: 17 0 13 18 12 1 &lt;br /&gt;
: 15 8 23 23 14 18 &lt;br /&gt;
: 3 0 8 23 12 15 &lt;br /&gt;
; Date de iesire&lt;br /&gt;
: 4 15 23 9 &lt;br /&gt;
: 17 13 18 1 &lt;br /&gt;
: 15 23 23 18 &lt;br /&gt;
: 3 8 23 15&lt;br /&gt;
=== Exemplu 2 ===&lt;br /&gt;
; Date de intrare&lt;br /&gt;
: 4 0&lt;br /&gt;
; Date de iesire&lt;br /&gt;
:Datele nu sunt comform restrictiilor impuse&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 matrice&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def eliminare_coloane(matrice):&lt;br /&gt;
    n = len(matrice)&lt;br /&gt;
    m = len(matrice[0])&lt;br /&gt;
    j = m&lt;br /&gt;
    while j &amp;gt;= 1:&lt;br /&gt;
        ok = False&lt;br /&gt;
        for i in range(n):&lt;br /&gt;
            if matrice[i][j - 1] == 0:&lt;br /&gt;
                ok = True&lt;br /&gt;
                break&lt;br /&gt;
        if ok:&lt;br /&gt;
            for k in range(j - 1, m - 1):&lt;br /&gt;
                for i in range(n):&lt;br /&gt;
                    matrice[i][k] = matrice[i][k + 1]&lt;br /&gt;
            m -= 1&lt;br /&gt;
        else:&lt;br /&gt;
            j -= 1&lt;br /&gt;
&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;
&lt;br /&gt;
&lt;br /&gt;
if _name_ == &amp;quot;_main_&amp;quot;:&lt;br /&gt;
    matrice = citire_matrice()&lt;br /&gt;
    eliminare_coloane(matrice)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
== Explicații ==&lt;br /&gt;
 Acest cod este scris in Python si consta din 4 functii:&lt;br /&gt;
&lt;br /&gt;
 citire_lin_col(): Aceasta functie citeste de la utilizator numarul de linii si de coloane pentru matrice si verifica daca valorile respecta restrictiile impuse. Daca valorile sunt corecte, acestea sunt returnate. Daca valorile nu sunt corecte, programul se va inchide.&lt;br /&gt;
&lt;br /&gt;
 citeste_valori_matrice(lin, col): Aceasta functie citeste valorile matricei de la utilizator si le valideaza, asigurandu-se ca fiecare valoare introdusa este un numar intreg si nu depaseste o anumita valoare maxima. Daca valorile sunt valide, acestea sunt adaugate la matrice si matricea este returnata.&lt;br /&gt;
&lt;br /&gt;
 eliminare_coloane(matrice, n, m): Aceasta functie primeste matricea citita anterior si dimensiunile acesteia si elimina toate coloanele care contin cel putin o valoare 0. Pentru a face acest lucru, functia parcurge matricea de la dreapta la stanga si verifica fiecare coloana daca contine cel putin o valoare 0. Daca o coloana contine o astfel de valoare, functia elimina acea coloana din matrice si actualizeaza numarul de coloane. Daca o coloana nu contine valoarea 0, functia trece la urmatoarea coloana pana ajunge la prima coloana a matricei. La final, functia afiseaza matricea actualizata fara coloanele eliminate.&lt;br /&gt;
&lt;br /&gt;
 if _name_ == &amp;quot;_main_&amp;quot;: : Aceasta instructiune verifica daca fisierul curent este fisierul principal care este executat, nu este importat ca un modul in alt program. Daca acesta este fisierul principal, atunci se vor apela functiile in ordine pentru a citi datele de intrare, pentru a elimina coloanele si pentru a afisa rezultatul.&lt;/div&gt;</summary>
		<author><name>MiclausIoana</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=0316_-_Min_Cols_2&amp;diff=3823</id>
		<title>0316 - Min Cols 2</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=0316_-_Min_Cols_2&amp;diff=3823"/>
		<updated>2023-04-19T13:15:52Z</updated>

		<summary type="html">&lt;p&gt;MiclausIoana: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Sursă: [https://www.pbinfo.ro/probleme/316/mincols2]&lt;br /&gt;
== Cerinţa ==&lt;br /&gt;
Se dă o matrice cu &#039;&#039;&#039;m&#039;&#039;&#039; linii şi &#039;&#039;&#039;n&#039;&#039;&#039; coloane şi elemente numere naturale. Înlocuiţi cu valoarea minimă din matrice toate elementele de pe coloanele care conţin valoarea minimă.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Programul citește de la tastatură numerele &#039;&#039;&#039;m&#039;&#039;&#039; şi &#039;&#039;&#039;n&#039;&#039;&#039;, iar apoi &#039;&#039;&#039;m*n&#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;
Dacă datele sunt introduse corect, pe ecran se va afișa: &amp;quot;Datele sunt corecte.&amp;quot;. Programul afișează pe ecran matricea modificată, câte o linie a matricei pe câte o linie a ecranului, elementele fiecărei linii fiind separate prin câte un spaţiu. Î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 ≤ m,n ≤ 20&#039;&#039;&#039;&lt;br /&gt;
* elementele matricei vor fi mai mici decât &#039;&#039;&#039;10000&#039;&#039;&#039;&lt;br /&gt;
== Exemple ==&lt;br /&gt;
=== Exemplu 1 ===&lt;br /&gt;
; Date de intrare&lt;br /&gt;
: 4 4&lt;br /&gt;
:8 3 3 7 &lt;br /&gt;
:2 1 6 5 &lt;br /&gt;
:8 7 3 1 &lt;br /&gt;
:9 8 7 1 &lt;br /&gt;
; Date de iesire&lt;br /&gt;
:8 1 3 1 &lt;br /&gt;
:2 1 6 1 &lt;br /&gt;
:8 1 3 1 &lt;br /&gt;
:9 1 7 1 &lt;br /&gt;
=== Exemplu 2 ===&lt;br /&gt;
; Date de intrare&lt;br /&gt;
: 0&lt;br /&gt;
; Date de iesire&lt;br /&gt;
: Datele nu sunt comform restrictiilor impuse&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 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;= 20 and 1 &amp;lt;= m &amp;lt;= 20:&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;
&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 = int(input(f&amp;quot;Introduceti un numar pentru linia {linie+1}, coloana {coloana+1}: &amp;quot;))&lt;br /&gt;
                    if n &amp;lt;= 10000:&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;
                    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;
    return matrice&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def valoare_minima(matrice, n, m):&lt;br /&gt;
    # determinarea valorii minime din matrice&lt;br /&gt;
    min_val = min(min(matrice))&lt;br /&gt;
&lt;br /&gt;
    # determinarea coloanelor care contin valoarea minima&lt;br /&gt;
    coloane_min = []&lt;br /&gt;
    for j in range(m):&lt;br /&gt;
        for i in range(n):&lt;br /&gt;
            if matrice[i][j] == min_val:&lt;br /&gt;
                coloane_min.append(j)&lt;br /&gt;
                break&lt;br /&gt;
&lt;br /&gt;
    # inlocuirea elementelor de pe coloanele care contin valoarea minima&lt;br /&gt;
    for j in coloane_min:&lt;br /&gt;
        for i in range(n):&lt;br /&gt;
            matrice[i][j] = min_val&lt;br /&gt;
&lt;br /&gt;
    # afisarea matricei finale&lt;br /&gt;
    print(&amp;quot;Matricea finala:&amp;quot;)&lt;br /&gt;
    for linie in matrice:&lt;br /&gt;
        print(*linie)&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;
    valoare_minima(matrice, n, m)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
== Explicati ==&lt;br /&gt;
citire_lin_col(): aceasta functie citeste numarul de linii si coloane ale matricei de la utilizator si verifica daca acestea sunt valide. Daca valorile introduse sunt valide, functia returneaza cele doua valori. Daca nu, functia va afisa un mesaj de eroare si va iesi din program.&lt;br /&gt;
&lt;br /&gt;
citeste_valori_matrice(lin, col): aceasta functie citeste elementele matricei de la utilizator, linie cu linie, si le valideaza. Aceasta returneaza o lista bidimensionala care reprezinta matricea.&lt;br /&gt;
&lt;br /&gt;
valoare_minima(matrice, n, m): aceasta functie determina valoarea minima din matrice, coloanele care contin aceasta valoare si inlocuieste elementele din aceste coloane cu valoarea minima.&lt;br /&gt;
&lt;br /&gt;
afisare_matrice(matrice, n, m): aceasta functie afiseaza matricea sub forma de tabel, cu valorile aliniate corespunzator.&lt;br /&gt;
&lt;br /&gt;
main(): aceasta functie ruleaza toate celelalte functii, in ordinea corespunzatoare, pentru a citi matricea de la utilizator, a modifica elementele matricei si a afisa matricea rezultata.&lt;/div&gt;</summary>
		<author><name>MiclausIoana</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=0779_-_Vecini_Pari&amp;diff=2882</id>
		<title>0779 - Vecini Pari</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=0779_-_Vecini_Pari&amp;diff=2882"/>
		<updated>2023-04-03T19:26:52Z</updated>

		<summary type="html">&lt;p&gt;MiclausIoana: Pagină nouă: == Rezolvare == &amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt; n, m = map(int, input().split()) matrix = [] for i in range(n):     row = list(map(int, input().split()))     matrix.append(row)  count = 0 for i in range(n):     for j in range(m):         if i &amp;gt; 0 and matrix[i-1][j] % 2 == 1:  # verificăm vecinul de sus             continue         if i &amp;lt; n-1 and matrix[i+1][j] % 2 == 1:  # verificăm vecinul de jos             continue         if j &amp;gt; 0 and matrix[i][j-1] % 2 == 1:...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&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;
n, m = map(int, input().split())&lt;br /&gt;
matrix = []&lt;br /&gt;
for i in range(n):&lt;br /&gt;
    row = list(map(int, input().split()))&lt;br /&gt;
    matrix.append(row)&lt;br /&gt;
&lt;br /&gt;
count = 0&lt;br /&gt;
for i in range(n):&lt;br /&gt;
    for j in range(m):&lt;br /&gt;
        if i &amp;gt; 0 and matrix[i-1][j] % 2 == 1:  # verificăm vecinul de sus&lt;br /&gt;
            continue&lt;br /&gt;
        if i &amp;lt; n-1 and matrix[i+1][j] % 2 == 1:  # verificăm vecinul de jos&lt;br /&gt;
            continue&lt;br /&gt;
        if j &amp;gt; 0 and matrix[i][j-1] % 2 == 1:  # verificăm vecinul din stânga&lt;br /&gt;
            continue&lt;br /&gt;
        if j &amp;lt; m-1 and matrix[i][j+1] % 2 == 1:  # verificăm vecinul din dreapta&lt;br /&gt;
            continue&lt;br /&gt;
        count += 1&lt;br /&gt;
&lt;br /&gt;
print(count)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>MiclausIoana</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=0778_-_MChenar&amp;diff=2881</id>
		<title>0778 - MChenar</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=0778_-_MChenar&amp;diff=2881"/>
		<updated>2023-04-03T19:06:59Z</updated>

		<summary type="html">&lt;p&gt;MiclausIoana: Pagină nouă: == Rezolvare == &amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt; n, m = map(int, input().split())  # Inițializăm matricea cu zero-uri matrix = [[0 for j in range(m)] for i in range(n)]  # Citim elementele matricei de la tastatură for i in range(n):     row = list(map(int, input().split()))     for j in range(m):         matrix[i][j] = row[j]  # Parcurgem chenarul și adăugăm elementele distincte într-un set distinct_elements = set() for j in range(m):     distinct_elements.add(...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&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;
n, m = map(int, input().split())&lt;br /&gt;
&lt;br /&gt;
# Inițializăm matricea cu zero-uri&lt;br /&gt;
matrix = [[0 for j in range(m)] for i in range(n)]&lt;br /&gt;
&lt;br /&gt;
# Citim elementele matricei de la tastatură&lt;br /&gt;
for i in range(n):&lt;br /&gt;
    row = list(map(int, input().split()))&lt;br /&gt;
    for j in range(m):&lt;br /&gt;
        matrix[i][j] = row[j]&lt;br /&gt;
&lt;br /&gt;
# Parcurgem chenarul și adăugăm elementele distincte într-un set&lt;br /&gt;
distinct_elements = set()&lt;br /&gt;
for j in range(m):&lt;br /&gt;
    distinct_elements.add(matrix[0][j])&lt;br /&gt;
    distinct_elements.add(matrix[n-1][j])&lt;br /&gt;
&lt;br /&gt;
for i in range(1, n-1):&lt;br /&gt;
    distinct_elements.add(matrix[i][0])&lt;br /&gt;
    distinct_elements.add(matrix[i][m-1])&lt;br /&gt;
&lt;br /&gt;
# Sortăm setul și afișăm elementele în ordine crescătoare&lt;br /&gt;
distinct_elements = sorted(distinct_elements)&lt;br /&gt;
for element in distinct_elements:&lt;br /&gt;
    print(element, end=&#039; &#039;)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>MiclausIoana</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=2825_-_Chenar_2&amp;diff=2880</id>
		<title>2825 - Chenar 2</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=2825_-_Chenar_2&amp;diff=2880"/>
		<updated>2023-04-03T18:53:58Z</updated>

		<summary type="html">&lt;p&gt;MiclausIoana: Pagină nouă: == Rezolvare == &amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt; n, m = map(int, input().split()) a = [list(map(int, input().split())) for _ in range(n)] x = int(input())  for i in range(n):     for j in range(m):         if i == 0 or i == n-1 or j == 0 or j == m-1:             if a[i][j] == x:                 print(&amp;quot;DA&amp;quot;)                 exit()  print(&amp;quot;NU&amp;quot;) &amp;lt;/syntaxhighlight&amp;gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&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;
n, m = map(int, input().split())&lt;br /&gt;
a = [list(map(int, input().split())) for _ in range(n)]&lt;br /&gt;
x = int(input())&lt;br /&gt;
&lt;br /&gt;
for i in range(n):&lt;br /&gt;
    for j in range(m):&lt;br /&gt;
        if i == 0 or i == n-1 or j == 0 or j == m-1:&lt;br /&gt;
            if a[i][j] == x:&lt;br /&gt;
                print(&amp;quot;DA&amp;quot;)&lt;br /&gt;
                exit()&lt;br /&gt;
&lt;br /&gt;
print(&amp;quot;NU&amp;quot;)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>MiclausIoana</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=0777_-_Cnt_Coloane&amp;diff=2879</id>
		<title>0777 - Cnt Coloane</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=0777_-_Cnt_Coloane&amp;diff=2879"/>
		<updated>2023-04-03T18:45:57Z</updated>

		<summary type="html">&lt;p&gt;MiclausIoana: Pagină nouă: == Rezolvare == &amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt; n, m = map(int, input().split())  matrix = [] for i in range(n):     row = list(map(int, input().split()))     matrix.append(row)  count = 0 for j in range(m):     column = [matrix[i][j] for i in range(n)]     if len(set(column)) == n:         count += 1  print(count) &amp;lt;/syntaxhighlight&amp;gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&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;
n, m = map(int, input().split())&lt;br /&gt;
&lt;br /&gt;
matrix = []&lt;br /&gt;
for i in range(n):&lt;br /&gt;
    row = list(map(int, input().split()))&lt;br /&gt;
    matrix.append(row)&lt;br /&gt;
&lt;br /&gt;
count = 0&lt;br /&gt;
for j in range(m):&lt;br /&gt;
    column = [matrix[i][j] for i in range(n)]&lt;br /&gt;
    if len(set(column)) == n:&lt;br /&gt;
        count += 1&lt;br /&gt;
&lt;br /&gt;
print(count)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>MiclausIoana</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=0776_-_Cnt_Linii&amp;diff=2878</id>
		<title>0776 - Cnt Linii</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=0776_-_Cnt_Linii&amp;diff=2878"/>
		<updated>2023-04-03T18:42:53Z</updated>

		<summary type="html">&lt;p&gt;MiclausIoana: Pagină nouă: == Rezolvare == &amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt; n, m = map(int, input().split())  # citim elementele matricei matrix = [] for i in range(n):     row = list(map(int, input().split()))     matrix.append(row)  # determinăm numărul de linii cu toate elementele egale count = 0 for row in matrix:     if all(elem == row[0] for elem in row):         count += 1  # afișăm rezultatul print(count) &amp;lt;/syntaxhighlight&amp;gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&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;
n, m = map(int, input().split())&lt;br /&gt;
&lt;br /&gt;
# citim elementele matricei&lt;br /&gt;
matrix = []&lt;br /&gt;
for i in range(n):&lt;br /&gt;
    row = list(map(int, input().split()))&lt;br /&gt;
    matrix.append(row)&lt;br /&gt;
&lt;br /&gt;
# determinăm numărul de linii cu toate elementele egale&lt;br /&gt;
count = 0&lt;br /&gt;
for row in matrix:&lt;br /&gt;
    if all(elem == row[0] for elem in row):&lt;br /&gt;
        count += 1&lt;br /&gt;
&lt;br /&gt;
# afișăm rezultatul&lt;br /&gt;
print(count)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>MiclausIoana</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=2807_-_Matrice_10&amp;diff=2877</id>
		<title>2807 - Matrice 10</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=2807_-_Matrice_10&amp;diff=2877"/>
		<updated>2023-04-03T18:38:47Z</updated>

		<summary type="html">&lt;p&gt;MiclausIoana: Pagină nouă: == Rezolvare == &amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt; # citim dimensiunile matricei n, m = map(int, input().split())  # citim elementele matricei matrix = [] for i in range(n):     row = list(map(int, input().split()))     matrix.append(row)  # găsim minimul din prima și ultima coloană min_first_col = matrix[0][0] min_last_col = matrix[0][-1]  for i in range(n):     if matrix[i][0] &amp;lt; min_first_col:         min_first_col = matrix[i][0]     if matrix[i][-1] &amp;lt; min_last_col...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&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;
# citim dimensiunile matricei&lt;br /&gt;
n, m = map(int, input().split())&lt;br /&gt;
&lt;br /&gt;
# citim elementele matricei&lt;br /&gt;
matrix = []&lt;br /&gt;
for i in range(n):&lt;br /&gt;
    row = list(map(int, input().split()))&lt;br /&gt;
    matrix.append(row)&lt;br /&gt;
&lt;br /&gt;
# găsim minimul din prima și ultima coloană&lt;br /&gt;
min_first_col = matrix[0][0]&lt;br /&gt;
min_last_col = matrix[0][-1]&lt;br /&gt;
&lt;br /&gt;
for i in range(n):&lt;br /&gt;
    if matrix[i][0] &amp;lt; min_first_col:&lt;br /&gt;
        min_first_col = matrix[i][0]&lt;br /&gt;
    if matrix[i][-1] &amp;lt; min_last_col:&lt;br /&gt;
        min_last_col = matrix[i][-1]&lt;br /&gt;
&lt;br /&gt;
# înlocuim elementul minim din ultima coloană cu elementul minim din prima coloană&lt;br /&gt;
for i in range(n):&lt;br /&gt;
    if matrix[i][-1] == min_last_col:&lt;br /&gt;
        matrix[i][-1] = min_first_col&lt;br /&gt;
    elif matrix[i][0] == min_first_col:&lt;br /&gt;
        matrix[i][0] = min_last_col&lt;br /&gt;
&lt;br /&gt;
# afișăm matricea modificată&lt;br /&gt;
for i in range(n):&lt;br /&gt;
    for j in range(m):&lt;br /&gt;
        print(matrix[i][j], end=&amp;quot; &amp;quot;)&lt;br /&gt;
    print()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>MiclausIoana</name></author>
	</entry>
</feed>