<?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=Paul+Ungur</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=Paul+Ungur"/>
	<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/wiki/Special:Contributions/Paul_Ungur"/>
	<updated>2026-05-02T01:46:52Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.42.1</generator>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=S:E18.128&amp;diff=9478</id>
		<title>S:E18.128</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=S:E18.128&amp;diff=9478"/>
		<updated>2024-01-16T07:57:06Z</updated>

		<summary type="html">&lt;p&gt;Paul Ungur: Soluția&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;S:E18.128 (Vasile Ienuțaș)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Scrieți numărul &amp;lt;math&amp;gt;2018^{2017}&amp;lt;/math&amp;gt; ca sumă de patru pătrate perfecte nenule distincte.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Soluție:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Din &amp;lt;math&amp;gt;2018 = 3^2+4^2+12^2+43^2&amp;lt;/math&amp;gt; se obține&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&amp;lt;math display=&amp;quot;block&amp;quot;&amp;gt;2018^{2017} = 2018 \cdot 2018^{2016} = \left ( 3^2 + 4^2 + 12^2 + 43^2 \right ) \cdot \left( 2018^{1008}\right)^2  &amp;lt;/math&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Deci&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&amp;lt;math display=&amp;quot;block&amp;quot;&amp;gt;2018^{2017} = \left( 3 \cdot 2018^{1008}\right)^2 + \left( 4 \cdot 2018^{1008}\right)^2 + \left( 12 \cdot 2018^{1008}\right)^2 + \left( 43 \cdot 2018^{1008}\right)^2&amp;lt;/math&amp;gt;&#039;&#039;&lt;/div&gt;</summary>
		<author><name>Paul Ungur</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=2112_-_Tablita&amp;diff=6859</id>
		<title>2112 - Tablita</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=2112_-_Tablita&amp;diff=6859"/>
		<updated>2023-06-29T19:10:01Z</updated>

		<summary type="html">&lt;p&gt;Paul Ungur: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Adrian participă la o expediţie, împreună cu colegii lui. La un moment dat, copiii descoperă, lângă un copac, &amp;lt;span style=“color: red”&amp;gt; 5&amp;lt;/span&amp;gt; tăbliţe vechi. Primele &amp;lt;span style=“color: red”&amp;gt; 4&amp;lt;/span&amp;gt; tăbliţe sunt inscripţionate complet. Prima tăbliţă conţinea textul : “Grupa &amp;lt;span style=“color: red”&amp;gt; 1&amp;lt;/span&amp;gt; conţine numărul &amp;lt;span style=“color: red”&amp;gt; 1&amp;lt;/span&amp;gt;”, a doua tăbliţă avea textul : „Grupa &amp;lt;span style=“color: red”&amp;gt; 2&amp;lt;/span&amp;gt; conţine numerele &amp;lt;span style=“color: red”&amp;gt; 2&amp;lt;/span&amp;gt; şi &amp;lt;span style=“color: red”&amp;gt; 3&amp;lt;/span&amp;gt;”, a treia tăbliţă avea textul: „Grupa 3 contine numerele &amp;lt;span style=“color: red”&amp;gt; 4&amp;lt;/span&amp;gt;,&amp;lt;span style=“color: red”&amp;gt; 5&amp;lt;/span&amp;gt; şi &amp;lt;span style=“color: red”&amp;gt; 6&amp;lt;/span&amp;gt;” , a patra tăbliţă avea textul: „Grupa &amp;lt;span style=“color: red”&amp;gt; 4&amp;lt;/span&amp;gt; conţine numerele &amp;lt;span style=“color: red”&amp;gt; 7&amp;lt;/span&amp;gt;,&amp;lt;span style=“color: red”&amp;gt; 8&amp;lt;/span&amp;gt;,&amp;lt;span style=“color: red”&amp;gt; 9&amp;lt;/span&amp;gt; şi &amp;lt;span style=“color: red”&amp;gt; 10&amp;lt;/span&amp;gt;.” Pe următoarea tăbliţă găsită era înscris un singur număr, celelalte numere şi numărul grupei erau şterse. Adrian le solicită colegilor lui să descopere ce grupă era scrisă pe a cincea tabliţă găsită.&lt;br /&gt;
&lt;br /&gt;
==Cerința==&lt;br /&gt;
Descoperiţi regula de inscripţionare a tăbliţelor şi pentru numărul găsit pe a cincea tăbliţă, determinaţi din ce grupă face parte.&lt;br /&gt;
&lt;br /&gt;
==Date de intrare==&lt;br /&gt;
Fişierul de intrare tablita.in conţine pe prima linie un număr natural &amp;lt;span style=“color: red”&amp;gt; N&amp;lt;/span&amp;gt;, ce reprezintă numărul care era înscris pe a cincea tăbliţă descoperită de Adrian.&lt;br /&gt;
&lt;br /&gt;
==Date de ieșire==&lt;br /&gt;
Dacă datele sunt introduse corect, pe ecran se va afișa: &#039;&#039;&#039;&amp;quot;Date de intrare valide.&amp;quot;&#039;&#039;&#039;, apoi fişierul de ieşire tablita.out va conţine un număr natural ce reprezintă grupa în care se află numărul &amp;lt;span style=“color: red”&amp;gt; N&amp;lt;/span&amp;gt;, înscris pe a cincea tabliţă găsită. În cazul în care datele nu respectă restricțiile, se va afișa pe ecran: &#039;&#039;&#039;&amp;quot;Date de intrare invalide&amp;quot;.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Restricții și precizări==&lt;br /&gt;
Un număr înscris pe o tăbliţă este nenul şi conţine cel mult &amp;lt;span style=“color: red”&amp;gt; 8&amp;lt;/span&amp;gt; cifre;&lt;br /&gt;
&lt;br /&gt;
==Exemplu:==&lt;br /&gt;
&amp;lt;span style=“color: red”&amp;gt; tablita.in&amp;lt;/span&amp;gt;&lt;br /&gt;
: 100&lt;br /&gt;
&lt;br /&gt;
Iesire&lt;br /&gt;
: Date de intrare valide&lt;br /&gt;
&amp;lt;span style=“color: red”&amp;gt; tablita.out&amp;lt;/span&amp;gt;&lt;br /&gt;
: 14&lt;br /&gt;
&lt;br /&gt;
==Explicație==&lt;br /&gt;
Numărul &amp;lt;span style=“color: red”&amp;gt; 100&amp;lt;/span&amp;gt; ce apare pe a cincea tăbliţă face parte din grupa &amp;lt;span style=“color: red”&amp;gt; 14&amp;lt;/span&amp;gt;.&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 validare(n):&lt;br /&gt;
    if not (1 &amp;lt;= n &amp;lt;= 100_000_000):&lt;br /&gt;
        return False&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def tablita(n):&lt;br /&gt;
    x, cnt = 1, 1&lt;br /&gt;
    while x &amp;lt; n:&lt;br /&gt;
        cnt += 1&lt;br /&gt;
        x += cnt&lt;br /&gt;
&lt;br /&gt;
    with open(&amp;quot;tablita.out&amp;quot;, &amp;quot;w&amp;quot;) as fout:&lt;br /&gt;
        fout.write(str(cnt))&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    fin = open(&amp;quot;tablita.in&amp;quot;)&lt;br /&gt;
    fout = open(&amp;quot;tablita.out&amp;quot;, &amp;quot;w&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    n = int(fin.readline())&lt;br /&gt;
    if validare(n):&lt;br /&gt;
        print(&amp;quot;Date de intrare valide&amp;quot;)&lt;br /&gt;
        tablita(n)&lt;br /&gt;
    else:&lt;br /&gt;
        print(&amp;quot;Date de intrare invalide&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    fin.close()&lt;br /&gt;
    fout.close()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
==Explicatie cod:==&lt;br /&gt;
validare(n): Această funcție primește un număr întreg n și verifică dacă acesta se află în intervalul specificat, adică între 1 și 100.000.000. Dacă n nu se află în acest interval, funcția returnează False, altfel returnează True.&lt;br /&gt;
tablita(n): Această funcție primește un număr întreg n și calculează valoarea cnt reprezentând numărul de iterații necesare pentru a ajunge la x &amp;gt;= n. Inițial, x este setat la 1 și cnt este setat la 1. Apoi, se crește cnt cu 1 și se adaugă valoarea cnt la x până când x devine mai mare sau egal cu n. La final, rezultatul cnt este scris în fișierul &amp;quot;tablita.out&amp;quot;.&lt;br /&gt;
În blocul __main__, se deschide fișierul de intrare &amp;quot;tablita.in&amp;quot; pentru citire și fișierul de ieșire &amp;quot;tablita.out&amp;quot; pentru scriere. Se citește numărul n din fișierul de intrare și se validează folosind funcția validare(). Dacă n este valid, se afișează &amp;quot;Date de intrare valide&amp;quot; și se apelează funcția tablita(n) pentru a calcula rezultatul și a-l scrie în fișierul de ieșire. În caz contrar, se afișează &amp;quot;Date de intrare invalide&amp;quot;. La final, fișierele de intrare și de ieșire sunt închise.&lt;/div&gt;</summary>
		<author><name>Paul Ungur</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=0555_-_Overflow&amp;diff=6858</id>
		<title>0555 - Overflow</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=0555_-_Overflow&amp;diff=6858"/>
		<updated>2023-06-29T19:08:59Z</updated>

		<summary type="html">&lt;p&gt;Paul Ungur: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Cerința==&lt;br /&gt;
Lui Gigel i s-a cerut să scrie un program care realizează înmulțirea dintre două numere naturale. Pentru a-i da o provocare lui Gigel, profesorul îi dă ca date de intrare un set de perechi de numere naturale pentru care produsul poate depăși &amp;lt;span style=“color: red”&amp;gt; 2 64&amp;lt;/span&amp;gt;. Gigel trebuie acum să-și modifice programul pentru ca să poată detecta cazurile speciale.&lt;br /&gt;
&lt;br /&gt;
==Date de intrare==&lt;br /&gt;
Programul citește de la tastatură numărul &amp;lt;span style=“color: red”&amp;gt; n&amp;lt;/span&amp;gt;, iar apoi n perechi de numere naturale, care trebuie înmulțite.&lt;br /&gt;
&lt;br /&gt;
==Date de ieșire==&lt;br /&gt;
Dacă datele sunt introduse corect, pe ecran se va afișa: &#039;&#039;&#039;&amp;quot;Date de intrare valide.&amp;quot;&#039;&#039;&#039;, apoi programul va afișa pe ecran rezultatele pentru cele &amp;lt;span style=“color: red”&amp;gt; n&amp;lt;/span&amp;gt; operații, fiecare pe câte o linie. Rezultatul operației este produsul celor două numere, dacă acesta se poate reprezenta pe &amp;lt;span style=“color: red”&amp;gt; 8&amp;lt;/span&amp;gt; octeți fără semn, sau mesajul &amp;lt;span style=“color: red”&amp;gt; Overflow!&amp;lt;/span&amp;gt;, în caz contrar. În cazul în care datele nu respectă restricțiile, se va afișa pe ecran: &#039;&#039;&#039;&amp;quot;Date de intrare invalide&amp;quot;.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Restricții și precizări==&lt;br /&gt;
&amp;lt;span style=“color: red”&amp;gt; 1 ≤ n ≤ 100.000&amp;lt;/span&amp;gt;&lt;br /&gt;
pentru fiecare pereche, cele două numere se pot reprezenta pe &amp;lt;span style=“color: red”&amp;gt; 8&amp;lt;/span&amp;gt; octeți, fără semn&lt;br /&gt;
valorile care se pot reprezenta pe &amp;lt;span style=“color: red”&amp;gt; 8&amp;lt;/span&amp;gt; octeți fără semn sunt cuprinse între &amp;lt;span style=“color: red”&amp;gt; 0&amp;lt;/span&amp;gt; și &amp;lt;span style=“color: red”&amp;gt; 18.446.744.073.709.551.615&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Exemplu:==&lt;br /&gt;
Intrare&lt;br /&gt;
: 3&lt;br /&gt;
: 2147483647 2147483647&lt;br /&gt;
: 18446744073709551615 2&lt;br /&gt;
: 666013 1&lt;br /&gt;
&lt;br /&gt;
Ieșire&lt;br /&gt;
: Date de intrare valide&lt;br /&gt;
: 4611686014132420609&lt;br /&gt;
: Overflow!&lt;br /&gt;
: 666013&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 validare(n):&lt;br /&gt;
    if not (1 &amp;lt;= n &amp;lt;= 100_000):&lt;br /&gt;
        return False&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def overflow(nr1, nr2):&lt;br /&gt;
    return nr2 and nr1 &amp;gt; 18446744073709551615 // nr2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def produs(nr1, nr2):&lt;br /&gt;
    return nr1 * nr2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def verificare(n):&lt;br /&gt;
    nr = []&lt;br /&gt;
    for i in range(n):&lt;br /&gt;
        nr1, nr2 = map(int, input().split())&lt;br /&gt;
        nr.append((nr1, nr2))&lt;br /&gt;
    for i in range(n):&lt;br /&gt;
        if overflow(nr[i][0], nr[i][1]):&lt;br /&gt;
            print(&amp;quot;Overflow!&amp;quot;)&lt;br /&gt;
        else:&lt;br /&gt;
            print(produs(nr[i][0], nr[i][1]))&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    n = int(input())&lt;br /&gt;
    if validare(n):&lt;br /&gt;
        print(&amp;quot;Date de intrare valide&amp;quot;)&lt;br /&gt;
        verificare(n)&lt;br /&gt;
    else:&lt;br /&gt;
        print(&amp;quot;Date de intrare invalide&amp;quot;)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
==Explicatie cod:==&lt;br /&gt;
Acest cod Python realizează următoarele acțiuni:&lt;br /&gt;
&lt;br /&gt;
Funcția validare(n) primește un parametru n de tip întreg și verifică dacă acesta se află în intervalul [1, 100_000]. Dacă condiția este îndeplinită, funcția returnează True, altfel returnează False.&lt;br /&gt;
Funcția overflow(nr1, nr2) primește două parametri nr1 și nr2 de tip întreg și verifică dacă există un overflow în timpul efectuării operației de înmulțire nr1 * nr2. Dacă nr2 este diferit de zero și rezultatul înmulțirii depășește valoarea maximă acceptată de un număr întreg în Python (18446744073709551615), funcția returnează True, altfel returnează False.&lt;br /&gt;
Funcția produs(nr1, nr2) primește două parametri nr1 și nr2 de tip întreg și returnează rezultatul înmulțirii lor.&lt;br /&gt;
Funcția verificare(n) primește un parametru n de tip întreg și efectuează verificarea și afișarea produselor pentru perechile de numere citite de la intrare. În cadrul unei bucle, se citește fiecare pereche de numere și se apelează funcția overflow(nr1, nr2) pentru a verifica dacă există un overflow. Dacă există un overflow, se afișează mesajul &amp;quot;Overflow!&amp;quot;, altfel se calculează produsul folosind funcția produs(nr1, nr2) și se afișează rezultatul.&lt;br /&gt;
În blocul if __name__ == &#039;__main__&#039;:, se citește n de la intrare folosind funcția input(). Se validează datele de intrare utilizând funcția validare(n). Dacă datele de intrare sunt valide, se afișează un mesaj de confirmare, se apelează funcția verificare(n) și se afișează rezultatele pe ecran. Altfel, se afișează un mesaj de eroare.&lt;br /&gt;
Codul primește un număr de la intrare, validează datele și verifică dacă există un overflow în timpul înmulțirii perechilor de numere citite. Produsele sau mesajele de overflow sunt afișate pe ecran.&lt;/div&gt;</summary>
		<author><name>Paul Ungur</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=1006_-_Pal_Munte&amp;diff=6857</id>
		<title>1006 - Pal Munte</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=1006_-_Pal_Munte&amp;diff=6857"/>
		<updated>2023-06-29T19:07:51Z</updated>

		<summary type="html">&lt;p&gt;Paul Ungur: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Cerința==&lt;br /&gt;
Să se afișeze pe ecran, în ordine crescătoare, toate palindromurile de tip munte cu exact 9 cifre.&lt;br /&gt;
&lt;br /&gt;
Un palindrom este de tip munte dacă cifrele sale sunt în ordine strict crescătoare până la jumătatea numărului.&lt;br /&gt;
&lt;br /&gt;
==Date de intrare==&lt;br /&gt;
Nu există!&lt;br /&gt;
&lt;br /&gt;
==Date de ieșire==&lt;br /&gt;
Dacă datele sunt introduse corect, pe ecran se va afișa: &#039;&#039;&#039;&amp;quot;Date de intrare valide.&amp;quot;&#039;&#039;&#039;, apoi programul va afișa pe ecran în ordine crescătoare, toate palindromurile de tip munte cu exact 9 cifre. În cazul în care datele nu respectă restricțiile, se va afișa pe ecran: &#039;&#039;&#039;&amp;quot;Date de intrare invalide&amp;quot;.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Exemplu:==&lt;br /&gt;
Ieșire&lt;br /&gt;
: Date de intrare valide&lt;br /&gt;
: 123454321&lt;br /&gt;
: 123464321&lt;br /&gt;
: 123474321&lt;br /&gt;
...&lt;br /&gt;
: 457898754&lt;br /&gt;
: 467898764&lt;br /&gt;
: 567898765&lt;br /&gt;
&lt;br /&gt;
==Explicație==&lt;br /&gt;
Lista palindromurilor din exemplu nu este completă.&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 palindrom():&lt;br /&gt;
    for i in range(1, 6):&lt;br /&gt;
        for j in range(i + 1, 7):&lt;br /&gt;
            for n in range(j + 1, 8):&lt;br /&gt;
                for m in range(n + 1, 9):&lt;br /&gt;
                    for k in range(m + 1, 10):&lt;br /&gt;
                        print(i, j, n, m, k, m, n, j, i)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    palindrom()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
==Explicatie cod:==&lt;br /&gt;
Funcția palindrom generează și afișează toate palindroamele de lungime 9 compuse din cifrele de la 1 la 9. Un palindrom este un număr sau o secvență care poate fi citită în aceeași ordine și în ordine inversă.&lt;br /&gt;
&lt;br /&gt;
Explicația funcției:&lt;br /&gt;
&lt;br /&gt;
Funcția palindrom nu primește niciun argument.&lt;br /&gt;
Folosind instrucțiunea for, se realizează bucle înlănțuite pentru fiecare cifră în intervalul de la 1 la 5 pentru variabila i, de la i + 1 la 6 pentru variabila j, de la j + 1 la 7 pentru variabila n, de la n + 1 la 8 pentru variabila m, și de la m + 1 la 9 pentru variabila k.&lt;br /&gt;
În interiorul buclelor înlănțuite, se afișează palindromul format din valorile variabilelor i, j, n, m, k, m, n, j, i. Ordinea acestor cifre generează un palindrom de lungime 9, deoarece palindroamele sunt citite în aceeași ordine și în ordine inversă.&lt;/div&gt;</summary>
		<author><name>Paul Ungur</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=1504_-_Comori_1&amp;diff=6856</id>
		<title>1504 - Comori 1</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=1504_-_Comori_1&amp;diff=6856"/>
		<updated>2023-06-29T19:06:55Z</updated>

		<summary type="html">&lt;p&gt;Paul Ungur: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Diriginta clasei a V-a organizează cu cei n elevi ai clasei sale concursul „Căutătorii de comori”. În concurs, fiecare elev trebuie să treacă prin n puncte de control și să răspundă la o întrebare la care primește un punctaj cuprins între 0 și 100.&lt;br /&gt;
Mihai, elev în clasa a V-a, participă cu mare plăcere la concurs și își notează punctajele obținute la fiecare punct de control.&lt;br /&gt;
&lt;br /&gt;
==Cerința==&lt;br /&gt;
Să se specifice numerele de ordine ale punctelor de control la care Mihai a obținut un punctaj mai mic decât cel obținut la punctul de control anterior. Dacă punctajele obținute de Mihai au fost în ordine crescătoare, se va afișa valoarea 0.&lt;br /&gt;
&lt;br /&gt;
==Date de intrare==&lt;br /&gt;
Fișierul de intrare comori1.in conține:&lt;br /&gt;
pe prima linie, un număr natural n reprezentând numărul punctelor de control,&lt;br /&gt;
pe a doua linie, un șir format din n numere naturale reprezentând punctajele lui Mihai la fiecare punct de control, separate prin câte un spațiu.&lt;br /&gt;
&lt;br /&gt;
==Date de ieșire==&lt;br /&gt;
Dacă datele sunt introduse corect, pe ecran se va afișa: &#039;&#039;&#039;&amp;quot;Date de intrare valide.&amp;quot;&#039;&#039;&#039;, apoi fișierul de ieșire comori1.out va conține numerele de ordine ale punctele de control la care Mihai a obținut un punctaj mai mic decât cel obținut la punctul de control anterior sau valoarea 0 dacă punctajele obținute de Mihai au fost în ordine crescătoare. În cazul în care datele nu respectă restricțiile, se va afișa pe ecran: &#039;&#039;&#039;&amp;quot;Date de intrare invalide&amp;quot;.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Restricții și precizări==&lt;br /&gt;
1 ≤ n ≤ 1000&lt;br /&gt;
Numerele din şir nu depăşesc 100.&lt;br /&gt;
&lt;br /&gt;
==Exemplul 1==&lt;br /&gt;
comori1.in&lt;br /&gt;
&lt;br /&gt;
: 6 &lt;br /&gt;
: 50 60 65 70 70 80&lt;br /&gt;
&lt;br /&gt;
comori1.out&lt;br /&gt;
: Date de intrare valide&lt;br /&gt;
: 0&lt;br /&gt;
&lt;br /&gt;
==Explicație==&lt;br /&gt;
Mihai realizează la cele 6 puncte de control punctajele&lt;br /&gt;
50  ≤  60 ≤  65 ≤  70 ≤  70 ≤  80&lt;br /&gt;
Pentru că punctajele au fost în ordine crescătoare afișăm 0.&lt;br /&gt;
&lt;br /&gt;
==Exemplul 2==&lt;br /&gt;
comori1.in&lt;br /&gt;
9 &lt;br /&gt;
66 70 20 35 50 34 69 80 12&lt;br /&gt;
&lt;br /&gt;
comori1.out&lt;br /&gt;
3 6 9&lt;br /&gt;
&lt;br /&gt;
==Explicație==&lt;br /&gt;
La punctul de control 3 Mihai are punctajul 20 ≤ 70;&lt;br /&gt;
La punctul de control 6 Mihai are punctajul 34 ≤ 50;&lt;br /&gt;
La punctul de control 9 Mihai are punctajul 12 ≤ 80.&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 validare(n, nums):&lt;br /&gt;
    if not (1 &amp;lt;= n &amp;lt;= 1_000):&lt;br /&gt;
        return False&lt;br /&gt;
    if not all(0 &amp;lt;= nums &amp;lt;= 100 for nums in nums):&lt;br /&gt;
        return False&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def comori(n, a):&lt;br /&gt;
    cnt = 0&lt;br /&gt;
    for i in range(n-1):&lt;br /&gt;
        if a[i] &amp;gt; a[i+1]:&lt;br /&gt;
            cnt += 1&lt;br /&gt;
            fout.write(f&amp;quot;{i+2} &amp;quot;)&lt;br /&gt;
    if cnt == 0:&lt;br /&gt;
        fout.write(&amp;quot;0 &amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    fin = open(&amp;quot;comori1.in&amp;quot;)&lt;br /&gt;
    fout = open(&amp;quot;comori1.out&amp;quot;, &amp;quot;w&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    n = int(fin.readline().strip())&lt;br /&gt;
    nums = list(map(int, fin.readline().split()))&lt;br /&gt;
    if validare(n, nums):&lt;br /&gt;
        print(&amp;quot;Date de intrare valide&amp;quot;)&lt;br /&gt;
        comori(n, nums)&lt;br /&gt;
    else:&lt;br /&gt;
        print(&amp;quot;Date de intrare invalide&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    fin.close()&lt;br /&gt;
    fout.close()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
==Explicatie cod:==&lt;br /&gt;
Funcția validare(n, nums) primește doi parametri: n de tip întreg și nums o listă de numere întregi. Funcția verifică dacă n se află în intervalul [1, 1000] și dacă toate valorile din lista nums sunt în intervalul [0, 100]. Dacă toate aceste condiții sunt îndeplinite, funcția returnează True, altfel returnează False.&lt;br /&gt;
Funcția comori(n, a) primește doi parametri: n de tip întreg și a o listă de numere întregi. Funcția parcurge lista a și numără de câte ori un element este mai mare decât elementul următor. Dacă se găsește o astfel de situație, se incrementează un contor cnt și se scrie în fișierul de ieșire indexul elementului următor. Dacă cnt rămâne 0, înseamnă că nu s-au găsit astfel de situații și se scrie &amp;quot;0&amp;quot; în fișierul de ieșire.&lt;br /&gt;
În blocul if __name__ == &#039;__main__&#039;:, se deschid fișierele de intrare și de ieșire. Se citește n de la intrarea din fișier și se inițializează lista nums cu valorile citite. Se validează datele de intrare utilizând funcția validare(n, nums). Dacă datele de intrare sunt valide, se afișează un mesaj de confirmare, se apelează funcția comori(n, nums) și se scriu rezultatele în fișierul de ieșire. Altfel, se afișează un mesaj de eroare.&lt;br /&gt;
Codul primește datele de intrare din fișier, validează datele și efectuează operațiile specifice pentru a determina și afișa rezultatele în fișierul de ieșire.&lt;/div&gt;</summary>
		<author><name>Paul Ungur</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=0352_-_Sum_Cons&amp;diff=6855</id>
		<title>0352 - Sum Cons</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=0352_-_Sum_Cons&amp;diff=6855"/>
		<updated>2023-06-29T19:06:02Z</updated>

		<summary type="html">&lt;p&gt;Paul Ungur: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Cerinţa==&lt;br /&gt;
Se citește numărul natural nenul &amp;lt;span style=“color: red”&amp;gt;n&amp;lt;/span&amp;gt;. Determinați toate modalitățile de a-l scrie pe &amp;lt;span style=“color: red”&amp;gt;n&amp;lt;/span&amp;gt; ca sumă de cel puțin două numere naturale consecutive nenule.&lt;br /&gt;
&lt;br /&gt;
==Date de intrare==&lt;br /&gt;
Programul citește de la tastatură numărul &amp;lt;span style=“color: red”&amp;gt;n&amp;lt;/span&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Date de ieşire==&lt;br /&gt;
Dacă datele sunt introduse corect, pe ecran se va afișa: &#039;&#039;&#039;&amp;quot;Date de intrare valide.&amp;quot;&#039;&#039;&#039;, apoi programul afișează pe ecran descompunerile cerute, câte o descompunere pe o linie a ecranului, în ordine crescătoare a numărului de termeni din descompunere, termenii unei descompuneri fiind scriși în ordine crescătoare și separați prin exact un spațiu. În cazul în care datele nu respectă restricțiile, se va afișa pe ecran: &#039;&#039;&#039;&amp;quot;Date de intrare invalide&amp;quot;.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Restricţii şi precizări==&lt;br /&gt;
&amp;lt;span style=“color: red”&amp;gt;1 ≤ n ≤ 10.000.000&amp;lt;/span&amp;gt;&lt;br /&gt;
pentru fiecare test, numărul &amp;lt;span style=“color: red”&amp;gt;n&amp;lt;/span&amp;gt; se poate scrie ca sumă de cel puțin 2 numere naturale consecutive nenule în cel puțin un mod.&lt;br /&gt;
&lt;br /&gt;
==Exemplu:==&lt;br /&gt;
Date de intrare&lt;br /&gt;
: 30&lt;br /&gt;
&lt;br /&gt;
Date de ieșire&lt;br /&gt;
: Date de intrare valide&lt;br /&gt;
: 9 10 11 &lt;br /&gt;
: 6 7 8 9 &lt;br /&gt;
: 4 5 6 7 8&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 validare(n):&lt;br /&gt;
    if not (1 &amp;lt;= n &amp;lt;= 10_000_000):&lt;br /&gt;
        return False&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def gasire_secventa(n):&lt;br /&gt;
    for i in range(1, n // 2 + 1):&lt;br /&gt;
        a = int((2 * n - i - i ** 2) / (2 * i + 2))&lt;br /&gt;
        if a &amp;gt;= 1 and n == (i + 1) * (2 * a + i) // 2:&lt;br /&gt;
            for k in range(i + 1):&lt;br /&gt;
                print(k + a, end=&amp;quot; &amp;quot;)&lt;br /&gt;
            print()&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    n = int(input())&lt;br /&gt;
&lt;br /&gt;
    if validare(n):&lt;br /&gt;
        print(&amp;quot;Date de intrare valide&amp;quot;)&lt;br /&gt;
        gasire_secventa(n)&lt;br /&gt;
    else:&lt;br /&gt;
        print(&amp;quot;Date de intrare invalide&amp;quot;)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
==Explicatie cod:==&lt;br /&gt;
Funcția validare(n) primește un parametru n de tip întreg și verifică dacă acesta se află în intervalul [1, 10_000_000]. Dacă condiția este îndeplinită, funcția returnează True, altfel returnează False.&lt;br /&gt;
Funcția gasire_secventa(n) primește un parametru n de tip întreg și găsește secvențele de numere care satisfac o anumită condiție matematică. Aceasta parcurge un interval de la 1 până la jumătatea valorii lui n și verifică dacă există un număr a astfel încât formula (i + 1) * (2 * a + i) // 2 să fie egală cu n, unde i este un contor. Dacă găsește o astfel de secvență, o afișează pe ecran.&lt;br /&gt;
În blocul if __name__ == &#039;__main__&#039;:, se citește n de la intrare folosind funcția input(). Se validează datele de intrare utilizând funcția validare(n). Dacă datele de intrare sunt valide, se afișează un mesaj de confirmare, se apelează funcția gasire_secventa(n) și se afișează secvența găsită pe ecran. Altfel, se afișează un mesaj de eroare.&lt;br /&gt;
Codul primește un număr de la intrare, validează datele și găsește secvențele care îndeplinesc condiția specificată. Acestea sunt afișate pe ecran.&lt;/div&gt;</summary>
		<author><name>Paul Ungur</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=0254_-_Puteri&amp;diff=6854</id>
		<title>0254 - Puteri</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=0254_-_Puteri&amp;diff=6854"/>
		<updated>2023-06-29T19:05:01Z</updated>

		<summary type="html">&lt;p&gt;Paul Ungur: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Cerinţa==&lt;br /&gt;
Se dau &amp;lt;span style=“color: red”&amp;gt; n&amp;lt;/span&amp;gt; perechi de numere naturale &amp;lt;span style=“color: red”&amp;gt; a&amp;lt;/span&amp;gt;, &amp;lt;span style=“color: red”&amp;gt; b&amp;lt;/span&amp;gt;. Să se determine pentru fiecare pereche, dacă există, cea mai mare putere a lui &amp;lt;span style=“color: red”&amp;gt; 2&amp;lt;/span&amp;gt; din intervalul închis determinat de &amp;lt;span style=“color: red”&amp;gt; a&amp;lt;/span&amp;gt; şi &amp;lt;span style=“color: red”&amp;gt; b&amp;lt;/span&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Date de intrare==&lt;br /&gt;
Programul citeşte de la tastatură numărul &amp;lt;span style=“color: red”&amp;gt; n&amp;lt;/span&amp;gt;, apoi n perechi de numere &amp;lt;span style=“color: red”&amp;gt; a, b&amp;lt;/span&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Date de ieşire==&lt;br /&gt;
Dacă datele sunt introduse corect, pe ecran se va afișa: &#039;&#039;&#039;&amp;quot;Date de intrare valide.&amp;quot;&#039;&#039;&#039;, apoi programul va afişa pe câte o linie ecranului, pentru fiecare interval dat, cea mai mare putere a lui &amp;lt;span style=“color: red”&amp;gt; 2&amp;lt;/span&amp;gt; din interval, sau &amp;lt;span style=“color: red”&amp;gt; 0&amp;lt;/span&amp;gt;, dacă intervalul nu conţine nici o putere al lui &amp;lt;span style=“color: red”&amp;gt; 2&amp;lt;/span&amp;gt;. În cazul în care datele nu respectă restricțiile, se va afișa pe ecran: &#039;&#039;&#039;&amp;quot;Date de intrare invalide&amp;quot;.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Restricţii şi precizări==&lt;br /&gt;
&amp;lt;span style=“color: red”&amp;gt; 1 ≤ n ≤ 10000&amp;lt;/span&amp;gt;&lt;br /&gt;
fiecare dintre numerele &amp;lt;span style=“color: red”&amp;gt; a&amp;lt;/span&amp;gt; şi &amp;lt;span style=“color: red”&amp;gt; b&amp;lt;/span&amp;gt; au cel mult &amp;lt;span style=“color: red”&amp;gt; 9&amp;lt;/span&amp;gt; cifre.&lt;br /&gt;
intervalele sunt închise&lt;br /&gt;
&lt;br /&gt;
==Exemplu:==&lt;br /&gt;
Date de intrare&lt;br /&gt;
: 3&lt;br /&gt;
: 2 69&lt;br /&gt;
: 20 10&lt;br /&gt;
: 19 25 &lt;br /&gt;
&lt;br /&gt;
Date de ieşire&lt;br /&gt;
: Date de intrare valide&lt;br /&gt;
: 64&lt;br /&gt;
: 16&lt;br /&gt;
: 0&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 validare(n, a, b):&lt;br /&gt;
    for i in range(n):&lt;br /&gt;
        if not (1 &amp;lt;= n &amp;lt;= 10_000):&lt;br /&gt;
            return False&lt;br /&gt;
        if not (0 &amp;lt;= a[i] &amp;lt; 1_000_000_000 and 0 &amp;lt;= b[i] &amp;lt; 1_000_000_000):&lt;br /&gt;
            return False&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def puteri(n, a, b):&lt;br /&gt;
    for i in range(n):&lt;br /&gt;
        p = 1&lt;br /&gt;
        while p * 2 &amp;lt;= max(b[i], a[i]):&lt;br /&gt;
            p = p * 2&lt;br /&gt;
        if p &amp;gt;= min(a[i], b[i]):&lt;br /&gt;
            print(p)&lt;br /&gt;
        else:&lt;br /&gt;
            print(0)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    n = int(input())&lt;br /&gt;
    a, b = [], []&lt;br /&gt;
    for i in range(n):&lt;br /&gt;
        ai, bi = map(int, input().split())&lt;br /&gt;
        a.append(ai)&lt;br /&gt;
        b.append(bi)&lt;br /&gt;
&lt;br /&gt;
    if validare(n, a, b):&lt;br /&gt;
        print(&amp;quot;Date de intrare valide&amp;quot;)&lt;br /&gt;
        puteri(n, a, b)&lt;br /&gt;
    else:&lt;br /&gt;
        print(&amp;quot;Date de intrare invalide&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
==Explicatie cod:==&lt;br /&gt;
Funcția validare(n, a, b) primește trei parametri: n de tip întreg, a și b liste de numere întregi. Funcția parcurge fiecare element din listele a și b și verifică dacă n este în intervalul [1, 10000], iar valorile din listele a și b sunt în intervalul [0, 999999999]. Dacă toate aceste condiții sunt îndeplinite pentru fiecare pereche de numere, funcția returnează True, altfel returnează False.&lt;br /&gt;
Funcția puteri(n, a, b) primește trei parametri: n de tip întreg și a și b liste de numere întregi. Funcția parcurge fiecare element din listele a și b și calculează cea mai mare putere a lui 2 (p) care este mai mică sau egală cu maximul dintre cele două numere. Apoi, verifică dacă p este mai mare sau egal cu minimul dintre cele două numere. În funcție de această verificare, se afișează p sau 0.&lt;br /&gt;
În blocul if __name__ == &#039;__main__&#039;:, se citește n de la intrarea standard și se inițializează listele goale a și b. Se citește perechea de numere ai și bi de n ori și se adaugă valorile în listele corespunzătoare. Se validează datele de intrare utilizând funcția validare(n, a, b). Dacă datele de intrare sunt valide, se afișează un mesaj de confirmare, se apelează funcția puteri(n, a, b) și se afișează rezultatele. Altfel, se afișează un mesaj de eroare.&lt;br /&gt;
Codul primește datele de intrare de la utilizator, validează datele și efectuează operațiile specifice pentru a determina și afișa rezultatele.&lt;/div&gt;</summary>
		<author><name>Paul Ungur</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=1932_-_PC&amp;diff=6853</id>
		<title>1932 - PC</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=1932_-_PC&amp;diff=6853"/>
		<updated>2023-06-29T19:03:45Z</updated>

		<summary type="html">&lt;p&gt;Paul Ungur: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Cerința==&lt;br /&gt;
Gigel vrea un calculator nou care are prețul &amp;lt;span style=“color: red”&amp;gt; x&amp;lt;/span&amp;gt;. Tatăl acestuia, fiind profesor de matematica, i-a spus ca îi va cumpăra calculatorul dacă prețul &amp;lt;span style=“color: red”&amp;gt; x&amp;lt;/span&amp;gt; al acestuia este norocos. Un număr &amp;lt;span style=“color: red”&amp;gt; x&amp;lt;/span&amp;gt; este norocos dacă pătratul acestuia se poate scrie ca sumă de &amp;lt;span style=“color: red”&amp;gt; x&amp;lt;/span&amp;gt; numere consecutive. De exemplu, &amp;lt;span style=“color: red”&amp;gt; x = 7&amp;lt;/span&amp;gt; este număr norocos deoarece, &amp;lt;span style=“color: red”&amp;gt; 7 * 7 = 4 + 5 + 6 + 7 + 8 + 9 + 10&amp;lt;/span&amp;gt;.&lt;br /&gt;
Gigel a obţinut &amp;lt;span style=“color: red”&amp;gt; T&amp;lt;/span&amp;gt; oferte de preț și dorește să știe pentru fiecare dintre acestea dacă prețul este corespunzătar restricției pe care i-a impus-o tatăl său.&lt;br /&gt;
&lt;br /&gt;
==Date de intrare==&lt;br /&gt;
Fișierul de intrare pc.in conține pe prima linie un singur număr natural &amp;lt;span style=“color: red”&amp;gt; T&amp;lt;/span&amp;gt;, reprezentând numărul de oferte. Pe a doua linie se află &amp;lt;span style=“color: red”&amp;gt; T&amp;lt;/span&amp;gt; numere naturale &amp;lt;span style=“color: red”&amp;gt; x1 x2 x3 … xT&amp;lt;/span&amp;gt; separate prin câte un spaţiu, cu semnificația din enunț.&lt;br /&gt;
&lt;br /&gt;
==Date de ieșire==&lt;br /&gt;
Dacă datele sunt introduse corect, pe ecran se va afișa: &#039;&#039;&#039;&amp;quot;Date de intrare valide.&amp;quot;&#039;&#039;&#039;, apoi fișierul de ieșire pc.out va conține pe prima linie, separate prin câte un spațiu, cele &amp;lt;span style=“color: red”&amp;gt; T&amp;lt;/span&amp;gt; răspunsuri, în ordine: &amp;lt;span style=“color: red”&amp;gt; 1&amp;lt;/span&amp;gt; dacă oferta este corespunzătoare restricției impuse și &amp;lt;span style=“color: red”&amp;gt; 0&amp;lt;/span&amp;gt; în caz contrar. În cazul în care datele nu respectă restricțiile, se va afișa pe ecran: &#039;&#039;&#039;&amp;quot;Date de intrare invalide&amp;quot;.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Restricții și precizări==&lt;br /&gt;
&amp;lt;span style=“color: red”&amp;gt; x &amp;lt; 2.000.000.000&lt;br /&gt;
T &amp;lt; 10&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Exemplu:==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
def validare(n, nums):&lt;br /&gt;
    if not (1 &amp;lt;= n &amp;lt;= 2_000_000_000):&lt;br /&gt;
        return False&lt;br /&gt;
    if not all(0 &amp;lt;= nums &amp;lt; 10 for nums in nums):&lt;br /&gt;
        return False&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def pc(n, nums):&lt;br /&gt;
    for i in range(n):&lt;br /&gt;
        if nums[i] % 2 == 0:&lt;br /&gt;
            fout.write(&amp;quot;0 &amp;quot;)&lt;br /&gt;
        else:&lt;br /&gt;
            fout.write(&amp;quot;1 &amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    fin = open(&amp;quot;pc.in&amp;quot;)&lt;br /&gt;
    fout = open(&amp;quot;pc.out&amp;quot;, &amp;quot;w&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    n = int(fin.readline().strip())&lt;br /&gt;
    nums = list(map(int, fin.readline().split()))&lt;br /&gt;
    if validare(n, nums):&lt;br /&gt;
        print(&amp;quot;Date de intrare valide&amp;quot;)&lt;br /&gt;
        pc(n, nums)&lt;br /&gt;
    else:&lt;br /&gt;
        print(&amp;quot;Date de intrare invalide&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    fin.close()&lt;br /&gt;
    fout.close()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
==Explicatie cod:==&lt;br /&gt;
Funcția validare(n, nums) primește doi parametri: n de tip întreg și nums o listă de numere întregi. Funcția verifică dacă n este în intervalul [1, 2000000000] și dacă toate numerele din lista nums sunt în intervalul [0, 9]. Dacă toate aceste condiții sunt îndeplinite, funcția returnează True, altfel returnează False.&lt;br /&gt;
Funcția pc(n, nums) primește doi parametri: n de tip întreg și nums o listă de numere întregi. Funcția parcurge fiecare element din lista nums și verifică dacă elementul este par sau impar. Dacă este par, se scrie în fișierul de ieșire valoarea &amp;quot;0 &amp;quot;, altfel se scrie &amp;quot;1 &amp;quot;.&lt;br /&gt;
În blocul if __name__ == &#039;__main__&#039;:, se deschid fișierele de intrare și de ieșire. Se citește prima linie din fișierul de intrare și se extrage valoarea n. Apoi, se citește a doua linie și se obține lista de numere nums. Se validează datele de intrare utilizând funcția validare(n, nums). Dacă datele de intrare sunt valide, se afișează un mesaj de confirmare, se apelează funcția pc(n, nums) și se scriu rezultatele în fișierul de ieșire. Altfel, se afișează un mesaj de eroare.&lt;br /&gt;
Codul primește datele de intrare dintr-un fișier, validează datele și efectuează operațiile specifice pentru a determina și afișa rezultatele. La final, fișierele de intrare și de ieșire sunt închise.&lt;/div&gt;</summary>
		<author><name>Paul Ungur</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=2160_-_Prize&amp;diff=6852</id>
		<title>2160 - Prize</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=2160_-_Prize&amp;diff=6852"/>
		<updated>2023-06-29T19:02:52Z</updated>

		<summary type="html">&lt;p&gt;Paul Ungur: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Am câștigat un concurs și primim la școală foarte foarte multe echipamente pentru un nou laborator. Pentru amenajarea laboratorului am primit și o sală de clasă. Din păcate în sala de clasă există doar o singură priză, în care ar putea fi conectat doar un singur echipament. Cum nu putem reface imediat instalația electrică, am hotărât să utilizăm prelungitoare.&lt;br /&gt;
&lt;br /&gt;
Un prelungitor poate avea una sau mai multe prize în care pot fi conectate echipamente și eventual alte prelungitoare. Evident, pentru ca prelungitorul să poată fi utilizat el trebuie să fie alimentat la curentul electric.&lt;br /&gt;
&lt;br /&gt;
==Cerința==&lt;br /&gt;
Cunoscând configurația prelungitoarelor să se determine numărul maxim de echipamente ce pot fi alimentate la curentul electric.&lt;br /&gt;
&lt;br /&gt;
==Date de intrare==&lt;br /&gt;
Fișierul de intrare &amp;lt;span style=“color: red”&amp;gt; prize.in&amp;lt;/span&amp;gt; conține pe prima linie numărul natural &amp;lt;span style=“color: red”&amp;gt; N&amp;lt;/span&amp;gt;, care reprezintă numărul de prelungitoare. Pe următoarele &amp;lt;span style=“color: red”&amp;gt; N&amp;lt;/span&amp;gt; linii se află &amp;lt;span style=“color: red”&amp;gt; N&amp;lt;/span&amp;gt; numere naturale nenule, câte un număr pe o linie, reprezentând numărul de prize din fiecare dintre cele &amp;lt;span style=“color: red”&amp;gt; N&amp;lt;/span&amp;gt; prelungitoare.&lt;br /&gt;
&lt;br /&gt;
==Date de ieșire==&lt;br /&gt;
Dacă datele sunt introduse corect, pe ecran se va afișa: &#039;&#039;&#039;&amp;quot;Date de intrare valide.&amp;quot;&#039;&#039;&#039;, apoi fișierul de ieșire &amp;lt;span style=“color: red”&amp;gt; prize.out&amp;lt;/span&amp;gt; va conține o singură linie pe care va fi scris numărul maxim de echipamente ce pot fi alimentate la curent, utilizând cele &amp;lt;span style=“color: red”&amp;gt; N&amp;lt;/span&amp;gt; prelungitoare descrise în fișierul de intrare. În cazul în care datele nu respectă restricțiile, se va afișa pe ecran: &#039;&#039;&#039;&amp;quot;Date de intrare invalide&amp;quot;.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Restricții și precizări==&lt;br /&gt;
&amp;lt;span style=“color: red”&amp;gt; 1 ≤ N ≤ 1000&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;span style=“color: red”&amp;gt; 1 ≤ numărul de prize dintr-un prelungitor ≤ 5 000 000&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Exemplu:==&lt;br /&gt;
&amp;lt;span style=“color: red”&amp;gt; prize.in&amp;lt;/span&amp;gt;&lt;br /&gt;
: 3&lt;br /&gt;
: 3&lt;br /&gt;
: 2&lt;br /&gt;
: 5&lt;br /&gt;
&lt;br /&gt;
: Date de intrare valide&lt;br /&gt;
&amp;lt;span style=“color: red”&amp;gt; prize.out&amp;lt;/span&amp;gt;&lt;br /&gt;
: 8&lt;br /&gt;
&lt;br /&gt;
==Explicație==&lt;br /&gt;
O modalitate de conectare a prelungitoarelor pentru a alimenta la curent echipamente ar fi:&lt;br /&gt;
&lt;br /&gt;
punem în priză prelungitorul 3;&lt;br /&gt;
prelungitorul 1 îl punem în una dintre prizele prelungitorului 3 (mai rămân în prelungitorul 3 patru prize libere pentru echipamente)&lt;br /&gt;
prelungitorul 2 îl punem în una dintre prizele prelungitorului 1 (mai rămân în prelungitorul 1 două prize libere pentru echipamente).&lt;br /&gt;
În total vor exista 4+2+2=8 prize disponibile pentru echipamente.&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 validare(n, nums):&lt;br /&gt;
    if not (1 &amp;lt;= n &amp;lt;= 1000):&lt;br /&gt;
        return False&lt;br /&gt;
    if not all(0 &amp;lt;= nums &amp;lt;= 5_000_000 for nums in nums):&lt;br /&gt;
        return False&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def prize(n, nums):&lt;br /&gt;
    s = sum(nums)&lt;br /&gt;
    fout.write(str(s - (n - 1)))&lt;br /&gt;
    fin.close()&lt;br /&gt;
    fout.close()&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    fin = open(&amp;quot;prize.in&amp;quot;)&lt;br /&gt;
    fout = open(&amp;quot;prize.out&amp;quot;, &amp;quot;w&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    lines = fin.readlines()&lt;br /&gt;
    n = int(lines[0].strip())&lt;br /&gt;
    nums = list(map(int, lines[1:]))&lt;br /&gt;
    if validare(n, nums):&lt;br /&gt;
        print(&amp;quot;Date de intrare valide&amp;quot;)&lt;br /&gt;
        prize(n, nums)&lt;br /&gt;
    else:&lt;br /&gt;
        print(&amp;quot;Date de intrare invalide&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    fin.close()&lt;br /&gt;
    fout.close()&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
==Explicatie cod:==&lt;br /&gt;
Funcția validare(n, nums) primește doi parametri: n de tip întreg și nums o listă de numere întregi. Funcția verifică dacă n este în intervalul [1, 1000] și dacă toate numerele din lista nums sunt în intervalul [0, 5000000]. Dacă toate aceste condiții sunt îndeplinite, funcția returnează True, altfel returnează False.&lt;br /&gt;
Funcția prize(n, nums) primește doi parametri: n de tip întreg și nums o listă de numere întregi. Funcția calculează suma tuturor numerelor din lista nums utilizând funcția sum(), iar apoi scade n - 1 din această sumă. Rezultatul obținut este scris în fișierul de ieșire.&lt;br /&gt;
În blocul if __name__ == &#039;__main__&#039;:, se deschid fișierele de intrare și de ieșire. Se citește fiecare linie din fișierul de intrare și se extrag valorile corespunzătoare. Prima linie este citită ca n, iar liniile următoare sunt convertite într-o listă de numere nums. Se validează datele de intrare utilizând funcția validare(n, nums). Dacă datele de intrare sunt valide, se afișează un mesaj de confirmare, se apelează funcția prize(n, nums) și se scrie rezultatul în fișierul de ieșire. Altfel, se afișează un mesaj de eroare.&lt;/div&gt;</summary>
		<author><name>Paul Ungur</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=3568_-_Max_Cadou&amp;diff=6851</id>
		<title>3568 - Max Cadou</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=3568_-_Max_Cadou&amp;diff=6851"/>
		<updated>2023-06-29T19:01:28Z</updated>

		<summary type="html">&lt;p&gt;Paul Ungur: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Cerința==&lt;br /&gt;
Spiridușii lui Moș Crăciun au făcut un număr &amp;lt;span style=“color: red”&amp;gt;N&amp;lt;/span&amp;gt; de cadouri. Totuși, Moșul este nemulțumit de munca lor, așa că, prin interschimbarea cifrelor numărului &amp;lt;span style=“color: red”&amp;gt;N&amp;lt;/span&amp;gt;, el poate modifica numărul de cadouri existente. Fiind foarte bătrân și greșind mult la calcule, vă roagă să îl ajutați să determine numărul maxim de cadouri ce se pot obține.&lt;br /&gt;
&lt;br /&gt;
==Date de intrare==&lt;br /&gt;
Fișierul de intrare &amp;lt;span style=“color: red”&amp;gt;maxcadou.in&amp;lt;/span&amp;gt; conține pe prima linie numărul &amp;lt;span style=“color: red”&amp;gt;N&amp;lt;/span&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Date de ieșire==&lt;br /&gt;
Dacă datele sunt introduse corect, pe ecran se va afișa: &#039;&#039;&#039;&amp;quot;Date de intrare valide.&amp;quot;&#039;&#039;&#039;, apoi fișierul de ieșire &amp;lt;span style=“color: red”&amp;gt;maxcadou.out&amp;lt;/span&amp;gt; va conține pe prima linie numărul maxim de cadouri pe care îl poate obține moșul doar cu cifrele vechiului număr.&lt;br /&gt;
&lt;br /&gt;
==Restricții și precizări==&lt;br /&gt;
&amp;lt;span style=“color: red”&amp;gt;1 ≤ n ≤ 1017&amp;lt;/span&amp;gt;&lt;br /&gt;
interschimbarea cifrelor = schimbarea cifrelor între ele&lt;br /&gt;
Pentru 60% din punctaj &amp;lt;span style=“color: red”&amp;gt;n ≤ 103&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Exemplu:==&lt;br /&gt;
&amp;lt;span style=“color: red”&amp;gt;maxcadou.in&amp;lt;/span&amp;gt;&lt;br /&gt;
: 1729&lt;br /&gt;
&lt;br /&gt;
: Date de intrare valide&lt;br /&gt;
&amp;lt;span style=“color: red”&amp;gt;maxcadou.out&amp;lt;/span&amp;gt;&lt;br /&gt;
: 9721&lt;br /&gt;
&lt;br /&gt;
==Explicație==&lt;br /&gt;
Din toate numerele care se pot forma cu cele &amp;lt;span style=“color: red”&amp;gt;4&amp;lt;/span&amp;gt; cifre ale numărului inițial, &amp;lt;span style=“color: red”&amp;gt;9721&amp;lt;/span&amp;gt; este cel maximal&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 validare(n):&lt;br /&gt;
    if not isinstance(n, int):&lt;br /&gt;
        raise ValueError(&amp;quot;k trebuie sa fie un numar intreg&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    if n &amp;lt; 1 or n &amp;gt; 1_000_000_000:&lt;br /&gt;
        raise ValueError(&amp;quot;k trebuie sa fie intre 1 si 1.000.000.000&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def max_cadou(n):&lt;br /&gt;
    temp = n&lt;br /&gt;
    nrcif = 0&lt;br /&gt;
    mmz = 0&lt;br /&gt;
    v = [0] * 11&lt;br /&gt;
    if n == 0:&lt;br /&gt;
        print(0)&lt;br /&gt;
        return&lt;br /&gt;
    elif n &amp;lt; 10:&lt;br /&gt;
        print(n)&lt;br /&gt;
        return&lt;br /&gt;
    else:&lt;br /&gt;
        mmz = 1&lt;br /&gt;
&lt;br /&gt;
    while temp != 0:&lt;br /&gt;
        nrcif += 1&lt;br /&gt;
        temp //= 10&lt;br /&gt;
&lt;br /&gt;
    for i in range(nrcif):&lt;br /&gt;
        v[i] = n % 10&lt;br /&gt;
        n //= 10&lt;br /&gt;
&lt;br /&gt;
    v = sorted(v[:nrcif], reverse=True)&lt;br /&gt;
&lt;br /&gt;
    if mmz == 1:&lt;br /&gt;
        for i in range(nrcif):&lt;br /&gt;
            fout.write(str(v[i]))&lt;br /&gt;
&lt;br /&gt;
    fout.write(&amp;quot;\n&amp;quot;)&lt;br /&gt;
    fin.close()&lt;br /&gt;
    fout.close()&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    fin = open(&amp;quot;maxcadou.in&amp;quot;)&lt;br /&gt;
    fout = open(&amp;quot;maxcadou.out&amp;quot;, &amp;quot;w&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    n = int(fin.readline().strip())&lt;br /&gt;
    if validare(n):&lt;br /&gt;
        print(&amp;quot;Date de intrare valide&amp;quot;)&lt;br /&gt;
        max_cadou(n)&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
==Explicatie cod:==&lt;br /&gt;
Funcția validare(n) primește un număr întreg n și verifică dacă acesta este un întreg și se încadrează în intervalul [1, 1.000.000.000]. Dacă n nu respectă aceste condiții, funcția aruncă o excepție de tip ValueError cu un mesaj corespunzător. În caz contrar, returnează True.&lt;br /&gt;
Funcția max_cadou(n) primește un număr întreg n și efectuează următoarele operații:&lt;br /&gt;
Inițializează variabilele temporare temp, nrcif și mmz.&lt;br /&gt;
Verifică cazurile particulare în care n este 0 sau un număr cu o singură cifră, și afișează rezultatul corespunzător.&lt;br /&gt;
Altfel, se calculează numărul de cifre nrcif din n și se stochează cifrele într-un vector v.&lt;br /&gt;
Se sortează vectorul v în ordine descrescătoare.&lt;br /&gt;
Dacă n are cifra 0 pe prima poziție, se scriu cifrele în fișierul de ieșire fout.&lt;br /&gt;
La final, se închid fișierele de intrare și de ieșire.&lt;br /&gt;
În blocul if __name__ == &amp;quot;__main__&amp;quot;:, se deschid fișierele de intrare și de ieșire (maxcadou.in și maxcadou.out). Se citește prima linie din fișierul de intrare pentru a obține valoarea n. Apoi, se verifică dacă datele de intrare sunt valide utilizând funcția validare(n). Dacă datele sunt valide, se afișează un mesaj de confirmare, se apelează funcția max_cadou() și se efectuează operațiile corespunzătoare. În final, se închid fișierele de intrare și de ieșire.&lt;/div&gt;</summary>
		<author><name>Paul Ungur</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=3381_-_K_Sir_1&amp;diff=6850</id>
		<title>3381 - K Sir 1</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=3381_-_K_Sir_1&amp;diff=6850"/>
		<updated>2023-06-29T19:00:36Z</updated>

		<summary type="html">&lt;p&gt;Paul Ungur: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Se dă următorul şir de numere:&lt;br /&gt;
&amp;lt;span style=“color: red”&amp;gt;1  1 2 2   1 2 3 3 3   1 2 3 4 4 4 4   1 2 3 4 5 5 5 5 5...&amp;lt;/span&amp;gt;&lt;br /&gt;
În şir avem grupe formate după următoarea regulă: grupa &amp;lt;span style=“color: red”&amp;gt;g&amp;lt;/span&amp;gt; conţine numerele naturale de la &amp;lt;span style=“color: red”&amp;gt;1&amp;lt;/span&amp;gt; la &amp;lt;span style=“color: red”&amp;gt;g&amp;lt;/span&amp;gt; în ordine crescătoare, urmate de &amp;lt;span style=“color: red”&amp;gt;g-1&amp;lt;/span&amp;gt; valori egale cu &amp;lt;span style=“color: red”&amp;gt;g (g=1, 2, ...)&amp;lt;/span&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Cerința==&lt;br /&gt;
Scrieţi un program care citeşte o valoare &amp;lt;span style=“color: red”&amp;gt;k&amp;lt;span&amp;gt; şi afişează al &amp;lt;span style=“color: red”&amp;gt;k&amp;lt;/span&amp;gt;-lea termen al şirului de mai sus.&lt;br /&gt;
&lt;br /&gt;
==Date de intrare==&lt;br /&gt;
Fișierul de intrare &amp;lt;span style=“color: red”&amp;gt;ksir.in&amp;lt;span&amp;gt; conţine pe prima linie numărul natural &amp;lt;span style=“color: red”&amp;gt;k&amp;lt;/span&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Date de ieșire==&lt;br /&gt;
Dacă datele sunt introduse corect, pe ecran se va afișa: &#039;&#039;&#039;&amp;quot;Date de intrare valide.&amp;quot;&#039;&#039;&#039;, apoi fișierul de ieșire &amp;lt;span style=“color: red”&amp;gt;ksir.out&amp;lt;/span&amp;gt; va conţine o singură linie pe care va fi scris un număr natural ce reprezintă al &amp;lt;span style=“color: red”&amp;gt;k&amp;lt;/span&amp;gt;-lea element din şir. În cazul în care datele nu respectă restricțiile, se va afișa pe ecran: &#039;&#039;&#039;&amp;quot;Date de intrare invalide&amp;quot;&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==Restricții și precizări==&lt;br /&gt;
&amp;lt;span style=“color: red”&amp;gt;1 ≤ k ≤ 20.000.000.000&amp;lt;/span&amp;gt;&lt;br /&gt;
Poziţiile termenilor din şir sunt numerotate începând cu &amp;lt;span style=“color: red”&amp;gt;1&amp;lt;/span&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Exemplu:==&lt;br /&gt;
&amp;lt;span style=“color: red”&amp;gt;ksir.in&amp;lt;/span&amp;gt;&lt;br /&gt;
: 8&lt;br /&gt;
&lt;br /&gt;
: Date de intrare valide&lt;br /&gt;
ksir.out&lt;br /&gt;
: 3&lt;br /&gt;
&lt;br /&gt;
==Explicație==&lt;br /&gt;
Al 8-lea element din şir este 3.&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 validare(k):&lt;br /&gt;
    if not isinstance(k, int):&lt;br /&gt;
        raise ValueError(&amp;quot;k trebuie sa fie un numar intreg&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    if k &amp;lt; 1 or k &amp;gt; 20000000000:&lt;br /&gt;
        raise ValueError(&amp;quot;k trebuie sa fie intre 1 si 20.000.000.000&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def k_sir(k):&lt;br /&gt;
    n, cnt = 1, 1&lt;br /&gt;
    while (1 * (n + 1) * (n + 1) // 4 &amp;lt; k):&lt;br /&gt;
        n += 2&lt;br /&gt;
        cnt += 1&lt;br /&gt;
    n -= 2&lt;br /&gt;
    k -= 1 * (n + 1) * (n + 1) // 4&lt;br /&gt;
    nr = 0&lt;br /&gt;
    while k:&lt;br /&gt;
        if nr != cnt:&lt;br /&gt;
            nr += 1&lt;br /&gt;
        k -= 1&lt;br /&gt;
    fout.write(str(nr))&lt;br /&gt;
&lt;br /&gt;
    fin.close()&lt;br /&gt;
    fout.close()&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    fin = open(&amp;quot;ksir.in&amp;quot;)&lt;br /&gt;
    fout = open(&amp;quot;ksir.out&amp;quot;, &amp;quot;w&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    k = int(fin.readline().strip())&lt;br /&gt;
    if validare(k):&lt;br /&gt;
        print(&amp;quot;Date de intrare valide&amp;quot;)&lt;br /&gt;
        k_sir(k)&lt;br /&gt;
    else:&lt;br /&gt;
        print(&amp;quot;Date de intrare invalide&amp;quot;)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
==Explicatie cod:==&lt;br /&gt;
Funcția validare(k) primește un număr întreg k și verifică dacă acesta este un întreg și se încadrează în intervalul [1, 20.000.000.000]. Dacă k nu respectă aceste condiții, funcția aruncă o excepție de tip ValueError cu un mesaj corespunzător. În caz contrar, returnează True.&lt;br /&gt;
Funcția k_sir(k) primește un număr întreg k și efectuează un set de operații. Folosind o buclă while, se calculează valorile n și cnt până când expresia 1 * (n + 1) * (n + 1) // 4 &amp;lt; k devine falsă. Apoi, se ajustează valorile n și k în funcție de formula specificată. Se parcurge o buclă while în care se scade valoarea k până când acesta devine zero, în timp ce nr este incrementat cu 1 în fiecare iterație. La final, se scrie rezultatul în fișierul de ieșire.&lt;br /&gt;
În blocul if __name__ == &amp;quot;__main__&amp;quot;:, se deschid fișierele de intrare și de ieșire (ksir.in și ksir.out). Se citește prima linie din fișierul de intrare pentru a obține valoarea k. Apoi, se verifică dacă datele de intrare sunt valide utilizând funcția validare(k). Dacă datele sunt valide, se afișează un mesaj de confirmare, se apelează funcția k_sir() și se efectuează operațiile corespunzătoare. În final, se închid fișierele de intrare și de ieșire.&lt;/div&gt;</summary>
		<author><name>Paul Ungur</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=1767_-_Multiple&amp;diff=6849</id>
		<title>1767 - Multiple</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=1767_-_Multiple&amp;diff=6849"/>
		<updated>2023-06-29T18:58:58Z</updated>

		<summary type="html">&lt;p&gt;Paul Ungur: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Sergiu, fiind un elev talentat în ceea ce priveşte informatica, doreşte pe cât posibil să-şi ajute prietenii în rezolvarea problemelor. Prietenii lui au venit la el, fiind foarte confuzi în legătură cu o anumită problemă: Ei au un set de &amp;lt;span style=“color: red”&amp;gt; T&amp;lt;/span&amp;gt; întrebări de forma: Care este cel mai mic număr strict mai mare decât &amp;lt;span style=“color: red”&amp;gt; n&amp;lt;/span&amp;gt;, divizibil cu &amp;lt;span style=“color: red”&amp;gt; k&amp;lt;/span&amp;gt;?&lt;br /&gt;
Fiind ocupat cu pregătirea pentru OJI, el vă roagă pe voi să-l ajutaţi!&lt;br /&gt;
&lt;br /&gt;
==Cerința==&lt;br /&gt;
Pentru fiecare din cele &amp;lt;span style=“color: red”&amp;gt; T&amp;lt;/span&amp;gt; întrebări, să se afle cel mai mic număr strict mai mare decât &amp;lt;span style=“color: red”&amp;gt; n&amp;lt;/span&amp;gt; care este divizibil cu &amp;lt;span style=“color: red”&amp;gt; k&amp;lt;/span&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Date de intrare==&lt;br /&gt;
Fișierul de intrare &amp;lt;span style=“color: red”&amp;gt; multiple.in&amp;lt;/span&amp;gt; conține pe prima linie numărul &amp;lt;span style=“color: red”&amp;gt; T&amp;lt;span&amp;gt;, iar următoarele &amp;lt;span style=“color: red”&amp;gt; T&amp;lt;/span&amp;gt; linii conţin câte două numere, &amp;lt;span style=“color: red”&amp;gt; n&amp;lt;/span&amp;gt; şi &amp;lt;span style=“color: red”&amp;gt; k&amp;lt;span&amp;gt;, cu semnificaţia din enunţ.&lt;br /&gt;
&lt;br /&gt;
==Date de ieșire==&lt;br /&gt;
Dacă datele sunt introduse corect, pe ecran se va afișa: &#039;&#039;&#039;&amp;quot;Date de intrare valide.&amp;quot;&#039;&#039;&#039;, apoi fișierul de ieșire &amp;lt;span style=“color: red”&amp;gt; multiple.out&amp;lt;/span&amp;gt; va conține pe &amp;lt;span style=“color: red”&amp;gt; T&amp;lt;/span&amp;gt; linii, pentru fiecare întrebare, numărul cerut.&lt;br /&gt;
&lt;br /&gt;
==Restricții și precizări==&lt;br /&gt;
&amp;lt;span style=“color: red”&amp;gt; 1 ≤ T ≤ 10000&amp;lt;/span&amp;gt;&lt;br /&gt;
se recomandă utilizarea tipurilor de date pe 8 octeţi (64 de biţi)&lt;br /&gt;
dacă reuşiţi să-l ajutaţi pe Sergiu, pe lângă cele 100 de puncte, probabil el vă va face cinste şi cu o sticlă de apă minerală&lt;br /&gt;
&lt;br /&gt;
==Exemplu:==&lt;br /&gt;
&amp;lt;span style=“color: red”&amp;gt; multiple.in&amp;lt;/span&amp;gt;&lt;br /&gt;
: 5&lt;br /&gt;
: 1 2&lt;br /&gt;
: 3 7&lt;br /&gt;
: 24 9&lt;br /&gt;
: 13 223&lt;br /&gt;
: 45 9&lt;br /&gt;
&lt;br /&gt;
: Date de intrare valide&lt;br /&gt;
&amp;lt;span style=“color: red”&amp;gt; multiple.out&amp;lt;/span&amp;gt;&lt;br /&gt;
: 2&lt;br /&gt;
: 7&lt;br /&gt;
: 27&lt;br /&gt;
: 223&lt;br /&gt;
: 54&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 validare_date(n):&lt;br /&gt;
    if n &amp;lt; 1 or n &amp;gt; 10000:&lt;br /&gt;
        print(&amp;quot;n trebuie sa fie intre 1 si 10000&amp;quot;)&lt;br /&gt;
        return False&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def multiple(n):&lt;br /&gt;
    for i in range(n):&lt;br /&gt;
        a, b = map(int, fin.readline().strip().split())&lt;br /&gt;
        if a == b:&lt;br /&gt;
            fout.write(str(2 * b) + &amp;quot;\n&amp;quot;)&lt;br /&gt;
        elif a &amp;lt; b:&lt;br /&gt;
            fout.write(str(b) + &amp;quot;\n&amp;quot;)&lt;br /&gt;
        else:&lt;br /&gt;
            fout.write(str(b - (a % b) + a) + &amp;quot;\n&amp;quot;)&lt;br /&gt;
    fin.close()&lt;br /&gt;
    fout.close()&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    fin = open(&amp;quot;multiple.in&amp;quot;)&lt;br /&gt;
    fout = open(&amp;quot;multiple.out&amp;quot;, &amp;quot;w&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    n = int(fin.readline().strip())&lt;br /&gt;
    if validare_date(n):&lt;br /&gt;
        print(&amp;quot;Date de intrare valide&amp;quot;)&lt;br /&gt;
        multiple(n)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
==Explicatie cod:==&lt;br /&gt;
Funcția validare_date(n) primește un număr n și verifică dacă acesta se încadrează în intervalul [1, 10000]. Dacă n nu respectă această condiție, se afișează un mesaj de eroare și funcția returnează False. În caz contrar, returnează True.&lt;br /&gt;
Funcția multiple(n) primește un număr n și efectuează un set de operații pentru n iterații. În fiecare iterație, se citesc două numere a și b folosind funcția fin.readline().strip().split(). Apoi, se efectuează următoarele verificări:&lt;br /&gt;
Dacă a este egal cu b, se înmulțește b cu 2 și rezultatul este scris în fișierul de ieșire.&lt;br /&gt;
Dacă a este mai mic decât b, se scrie b în fișierul de ieșire.&lt;br /&gt;
Dacă a este mai mare decât b, se calculează diferența b - (a % b) + a și rezultatul este scris în fișierul de ieșire.&lt;br /&gt;
În blocul if __name__ == &#039;__main__&#039;:, se deschid fișierele de intrare și de ieșire (multiple.in și multiple.out). Se citește prima linie din fișierul de intrare pentru a obține n. Apoi, se verifică dacă datele de intrare sunt valide utilizând funcția validare_date(). Dacă datele sunt valide, se afișează un mesaj de confirmare, se apelează funcția multiple() și se efectuează operațiile pentru n iterații. În final, se închid fișierele de intrare și de ieșire.&lt;br /&gt;
Codul primește date de intrare din fișierul &amp;quot;multiple.in&amp;quot;, validează datele și efectuează operații pentru n iterații, în funcție de valorile citite din fișier. Rezultatele sunt scrise în fișierul &amp;quot;multiple.out&amp;quot;.&lt;/div&gt;</summary>
		<author><name>Paul Ungur</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=2757_-_Cifre_Zecimale_1&amp;diff=6848</id>
		<title>2757 - Cifre Zecimale 1</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=2757_-_Cifre_Zecimale_1&amp;diff=6848"/>
		<updated>2023-06-29T18:57:34Z</updated>

		<summary type="html">&lt;p&gt;Paul Ungur: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Cerința==&lt;br /&gt;
Se consideră șirul de cifre zecimale obținut prin scrierea consecutivă a numerelor naturale de la &amp;lt;span style=“color: red”&amp;gt; 100&amp;lt;/span&amp;gt; la &amp;lt;span style=“color: red”&amp;gt; 999&amp;lt;/span&amp;gt;: &amp;lt;span style=“color: red”&amp;gt; 100101102103104105…995996997998999&amp;lt;/span&amp;gt;. Să se afișeze cifra ce apare pe poziția &amp;lt;span style=“color: red”&amp;gt; k&amp;lt;/span&amp;gt; în acest șir.&lt;br /&gt;
&lt;br /&gt;
==Date de intrare==&lt;br /&gt;
Programul citește de la tastatură un număr natural &amp;lt;span style=“color: red”&amp;gt; n&amp;lt;/span&amp;gt; și apoi &amp;lt;span style=“color: red”&amp;gt; n&amp;lt;/span&amp;gt; numere naturale nenule, &amp;lt;span style=“color: red”&amp;gt; k&amp;lt;/span&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Date de ieșire==&lt;br /&gt;
Dacă datele sunt introduse corect, pe ecran se va afișa: &#039;&#039;&#039;&amp;quot;Date de intrare valide.&amp;quot;&#039;&#039;&#039;, apoi Programul va afișa pe ecran, pe un singur rând și separate printr-un spațiu, &amp;lt;span style=“color: red”&amp;gt; n&amp;lt;/span&amp;gt; numere reprezentând cifrele din șir de pe pozițiile &amp;lt;span style=“color: red”&amp;gt; k&amp;lt;/span&amp;gt;, citite. În cazul în care datele nu respectă restricțiile, se va afișa pe ecran: &#039;&#039;&#039;&amp;quot;Date de intrare invalide&amp;quot;.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Restricții și precizări==&lt;br /&gt;
&amp;lt;span style=“color: red”&amp;gt; 1 ≤ n ≤ 100.000&lt;br /&gt;
1 ≤ k ≤ 2700&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Exemplu:==&lt;br /&gt;
Intrare&lt;br /&gt;
: 3&lt;br /&gt;
: 5 10 18&lt;br /&gt;
&lt;br /&gt;
Ieșire&lt;br /&gt;
: Date de intrare valide&lt;br /&gt;
: 0 1 5 &lt;br /&gt;
&lt;br /&gt;
==Explicație==&lt;br /&gt;
A cinceaa cifră din șir este 0, cea de pe poziția 10 este 1, iar cea de pe poziția 18 este 5.&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 validare_date(n, k_values):&lt;br /&gt;
    # Verificăm dacă n este în intervalul permis&lt;br /&gt;
    if n &amp;lt; 1 or n &amp;gt; 100000:&lt;br /&gt;
        return False&lt;br /&gt;
    # Verificăm dacă toate valorile de k sunt în intervalul permis&lt;br /&gt;
    for k in k_values:&lt;br /&gt;
        if k &amp;lt; 1 or k &amp;gt; 2700:&lt;br /&gt;
            return False&lt;br /&gt;
    # Dacă am trecut de toate verificările, înseamnă că datele de intrare sunt valide&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def citeste_input():&lt;br /&gt;
    n = int(input())&lt;br /&gt;
    k_values = list(map(int, input().split()))&lt;br /&gt;
    return n, k_values&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def cifre(k):&lt;br /&gt;
    # Vom construi șirul de cifre folosind o buclă while&lt;br /&gt;
    num = 100&lt;br /&gt;
    digit_count = 0&lt;br /&gt;
    while True:&lt;br /&gt;
        # Obținem cifrele numărului curent&lt;br /&gt;
        digits = [int(d) for d in str(num)]&lt;br /&gt;
        # Adăugăm numărul de cifre din numărul curent la contorul de cifre&lt;br /&gt;
        digit_count += len(digits)&lt;br /&gt;
        # Dacă numărul de cifre depășește poziția k, ne oprim&lt;br /&gt;
        if digit_count &amp;gt;= k:&lt;br /&gt;
            # Obținem cifra de pe poziția k&lt;br /&gt;
            return digits[k - digit_count + len(digits) - 1]&lt;br /&gt;
        # Dacă nu am ajuns încă la poziția k, trecem la următorul număr&lt;br /&gt;
        num += 1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def obtine_cifrele_pentru_k(n, k_values):&lt;br /&gt;
    # Verificăm dacă datele de intrare sunt valide&lt;br /&gt;
    if not validare_date(n, k_values):&lt;br /&gt;
        return &amp;quot;Date de intrare invalide&amp;quot;&lt;br /&gt;
    # Obținem cifra de pe fiecare poziție k și o adăugăm la lista de rezultate&lt;br /&gt;
    results = [cifre(k) for k in k_values]&lt;br /&gt;
    # Afișăm lista de rezultate&lt;br /&gt;
    return results&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    n, k_values = citeste_input()&lt;br /&gt;
    # Obținem cifrele corespunzătoare pozițiilor k și le afișăm&lt;br /&gt;
    if validare_date(n, k_values):&lt;br /&gt;
        print(&amp;quot;Date de intrare valide&amp;quot;)&lt;br /&gt;
        results = obtine_cifrele_pentru_k(n, k_values)&lt;br /&gt;
        print(*results)&lt;br /&gt;
    else:&lt;br /&gt;
        print(&amp;quot;Date de intrare invalide&amp;quot;)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
==Explicatie cod:==&lt;br /&gt;
Funcția validare_date(n, k_values) primește un număr n și o listă de valori k_values și verifică dacă acestea respectă anumite condiții. Verificările includ verificarea ca n să fie în intervalul [1, 100000], iar fiecare valoare k din lista k_values să fie în intervalul [1, 2700]. Dacă datele nu respectă aceste condiții, funcția returnează False. În caz contrar, returnează True.&lt;br /&gt;
Funcția citeste_input() primește input-ul utilizatorului, citind n și lista de valori k_values de la intrare folosind funcția input(). Valoarea n este citită ca un număr întreg, iar lista k_values este citită ca o listă de numere întregi utilizând map() și split(). Funcția returnează n și k_values sub formă de tuplu.&lt;br /&gt;
Funcția cifre(k) primește un număr k și calculează cifra de pe poziția k. Acest lucru se face construind un șir de cifre folosind o buclă while. La fiecare iterație, se obțin cifrele numărului curent și se adaugă numărul de cifre la digit_count. Dacă digit_count depășește sau ajunge la poziția k, se returnează cifra corespunzătoare. Se adaugă un offset la k pentru a ajusta indexarea în lista de cifre.&lt;br /&gt;
Funcția obtine_cifrele_pentru_k(n, k_values) primește un număr n și o listă de valori k_values și returnează lista de cifre corespunzătoare pozițiilor k din k_values. Verifică mai întâi dacă datele de intrare sunt valide folosind funcția validare_date(). Apoi, utilizează funcția cifre() pentru a obține cifra corespunzătoare fiecărei valori k din lista k_values. Rezultatele sunt stocate într-o listă și returnate.&lt;br /&gt;
În blocul if __name__ == &#039;__main__&#039;:, se apelează funcția citeste_input() pentru a obține n și k_values de la intrare. Apoi, se verifică dacă datele de intrare sunt valide utilizând funcția validare_date(). Dacă datele sunt valide, se afișează un mesaj de confirmare, se apelează funcția obtine_cifrele_pentru_k() și se afișează rezultatele. În caz contrar, se afișează un mesaj de eroare.&lt;/div&gt;</summary>
		<author><name>Paul Ungur</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=2915_-_Sum_Square&amp;diff=6847</id>
		<title>2915 - Sum Square</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=2915_-_Sum_Square&amp;diff=6847"/>
		<updated>2023-06-29T18:56:34Z</updated>

		<summary type="html">&lt;p&gt;Paul Ungur: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Cerința==&lt;br /&gt;
Se dă numărul natural &amp;lt;span style=“color: red”&amp;gt;n&amp;lt;/span&amp;gt;. Determinați dacă numărul se poate scrie ca sumă de două pătrate perfecte. Dacă da, afișați două pătrate perfecte a căror sumă este &amp;lt;span style=“color: red”&amp;gt;n&amp;lt;/span&amp;gt;, în ordine crescătoare, sau mesajul &amp;lt;span style=“color: red”&amp;gt;NU&amp;lt;/span&amp;gt; în caz contrar.&lt;br /&gt;
&lt;br /&gt;
==Date de intrare==&lt;br /&gt;
Programul citește de la tastatură numărul &amp;lt;span style=“color: red”&amp;gt;n&amp;lt;/span&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
==Date de ieșire==&lt;br /&gt;
Dacă datele sunt introduse corect, pe ecran se va afișa: &#039;&#039;&#039;&amp;quot;Date de intrare valide.&amp;quot;&#039;&#039;&#039;, apoi programul va afișa pe ecran cele &amp;lt;span style=“color: red”&amp;gt;2&amp;lt;/span&amp;gt; pătrate care alcătuiesc numărul sau mesajul &amp;lt;span style=“color: red”&amp;gt;NU&amp;lt;/span&amp;gt; în cazul în care nu există. În cazul în care datele nu respectă restricțiile, se va afișa pe ecran: &#039;&#039;&#039;&amp;quot;Date de intrare invalide&amp;quot;.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Restricții și precizări==&lt;br /&gt;
&amp;lt;span style=“color: red”&amp;gt;1≤n≤1015&amp;lt;/span&amp;gt;&lt;br /&gt;
dacă există mai multe perechi de pătrate perfecte a căror sumă este &amp;lt;span style=“color: red”&amp;gt;n&amp;lt;/span&amp;gt;, poate fi afișată oricare&lt;br /&gt;
&lt;br /&gt;
==Exemplu:==&lt;br /&gt;
Intrare&lt;br /&gt;
: 169&lt;br /&gt;
&lt;br /&gt;
Ieșire&lt;br /&gt;
: Date de intrare valide&lt;br /&gt;
: 25 144&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;
import math&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def validare_date(n):&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;Functie de validare&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    if not 1 &amp;lt;= n &amp;lt;= 10**15:&lt;br /&gt;
        print(&amp;quot;Numarul introdus trebuie sa fie intre 1 si 10^15.&amp;quot;)&lt;br /&gt;
        return False&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def sum_square(n):&lt;br /&gt;
    ok = False&lt;br /&gt;
    for i in range(1, int(math.sqrt(n // 2)) + 1):&lt;br /&gt;
        x = i * i&lt;br /&gt;
        y = n - x&lt;br /&gt;
        j = int(math.sqrt(y))&lt;br /&gt;
&lt;br /&gt;
        if j * j == y and not ok:&lt;br /&gt;
            print(min(y, x), max(x, y))&lt;br /&gt;
            ok = True&lt;br /&gt;
&lt;br /&gt;
    if not ok:&lt;br /&gt;
        print(&amp;quot;NU&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    n = int(input())&lt;br /&gt;
    if validare_date(n):&lt;br /&gt;
        print(&amp;quot;Date de intrare valide&amp;quot;)&lt;br /&gt;
        sum_square(n)&lt;br /&gt;
    else:&lt;br /&gt;
        print(&amp;quot;Date de intrare invalide&amp;quot;)&lt;br /&gt;
  &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
==Explicatie cod: ==&lt;br /&gt;
Funcția validare_date(n) primește un număr n și verifică dacă acesta se află în intervalul [1, 10^15]. Dacă numărul nu respectă această condiție, se afișează un mesaj de eroare și se returnează False. În caz contrar, se returnează True.&lt;br /&gt;
Funcția sum_square(n) primește un număr n și calculează perechile de numere x și y, astfel încât x^2 + y^2 = n. Pentru a verifica această condiție, se utilizează două bucle for. Prima buclă iterează de la 1 până la radicalul pătrat al lui n // 2, iar în interiorul primei bucle se calculează x = i*i și y = n - x. Apoi, se verifică dacă y este un pătrat perfect (adica j * j == y) și se afișează perechea (x, y) dacă această condiție este îndeplinită. Se folosește o variabilă ok pentru a se asigura că se afișează doar prima pereche găsită.&lt;br /&gt;
În blocul if __name__ == &#039;__main__&#039;:, se citește de la intrare un număr n utilizând funcția input(). Apoi, se verifică dacă numărul este valid utilizând funcția validare_date(). Dacă numărul este valid, se afișează un mesaj de confirmare și se apelează funcția sum_square() pentru a găsi și afișa perechile (x, y). În caz contrar, se afișează un mesaj de eroare.&lt;/div&gt;</summary>
		<author><name>Paul Ungur</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=0115_-_Medie&amp;diff=6846</id>
		<title>0115 - Medie</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=0115_-_Medie&amp;diff=6846"/>
		<updated>2023-06-29T18:55:31Z</updated>

		<summary type="html">&lt;p&gt;Paul Ungur: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Cerinţa==&lt;br /&gt;
Să se scrie un program care citeşte de la tastatură un număr natural &amp;lt;span style=“color: red”&amp;gt; n&amp;lt;/span&amp;gt; şi apoi un şir de &amp;lt;span style=“color: red”&amp;gt; n&amp;lt;span&amp;gt; numere naturale şi determină media aritmetică a celor pare.&lt;br /&gt;
&lt;br /&gt;
==Date de intrare==&lt;br /&gt;
Programul citește de la tastatură numărul &amp;lt;span style=“color: red”&amp;gt; n&amp;lt;/span&amp;gt;, iar apoi &amp;lt;span style=“color: red”&amp;gt; n&amp;lt;/span&amp;gt; numere naturale.&lt;br /&gt;
&lt;br /&gt;
==Date de ieşire==&lt;br /&gt;
Dacă datele sunt introduse corect, pe ecran se va afișa: &#039;&#039;&#039;&amp;quot;Date de intrare valide.&amp;quot;&#039;&#039;&#039;, apoi programul afișează pe ecran numărul &amp;lt;span style=“color: red”&amp;gt; M&amp;lt;/span&amp;gt;, reprezentând media aritmetică a valorilor pare. În cazul în care datele nu respectă restricțiile, se va afișa pe ecran: &#039;&#039;&#039;&amp;quot;Date de intrare invalide&amp;quot;.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Restricţii şi precizări==&lt;br /&gt;
&amp;lt;span style=“color: red”&amp;gt; 0 &amp;lt; n &amp;lt; 1000&amp;lt;span&amp;gt;&lt;br /&gt;
cele n numere citite vor fi mai mici decât &amp;lt;span style=“color: red”&amp;gt; 1.000.000&amp;lt;/span&amp;gt;&lt;br /&gt;
rezultatul va fi punctat dacă diferența dintre cel afișat de program și cel corect este mai mică decât &amp;lt;span style=“color: red”&amp;gt; 0.01&amp;lt;/span&amp;gt;.&lt;br /&gt;
În toate seturile de date de intrare se vor afla şi valori pare.&lt;br /&gt;
&lt;br /&gt;
==Exemplu:==&lt;br /&gt;
Intrare&lt;br /&gt;
: 5&lt;br /&gt;
: 8 7 8 9 10 &lt;br /&gt;
&lt;br /&gt;
Ieșire&lt;br /&gt;
: Date de intrare valide&lt;br /&gt;
: 8.66&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 validare_date(n, numere):&lt;br /&gt;
    if n &amp;lt; 1 or n &amp;gt; 999:&lt;br /&gt;
        return False&lt;br /&gt;
    for numar in numere:&lt;br /&gt;
        if numar &amp;lt; 0 or numar &amp;gt; 1_000_000:&lt;br /&gt;
            return False&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def suma_numerelor_pare(numere):&lt;br /&gt;
    suma = 0&lt;br /&gt;
    cate_pare = 0&lt;br /&gt;
    for numar in numere:&lt;br /&gt;
        if numar % 2 == 0:&lt;br /&gt;
            suma += numar&lt;br /&gt;
            cate_pare += 1&lt;br /&gt;
    return suma, cate_pare&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def medie(numere):&lt;br /&gt;
    suma, cate_pare = suma_numerelor_pare(numere)&lt;br /&gt;
    medie = suma / cate_pare&lt;br /&gt;
    print(medie)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    n = int(input())&lt;br /&gt;
    numere = list(map(int, input().split()))&lt;br /&gt;
    if validare_date(n, numere):&lt;br /&gt;
        print(&amp;quot;Date de intrare valide&amp;quot;)&lt;br /&gt;
        medie(numere)&lt;br /&gt;
    else:&lt;br /&gt;
        print(&amp;quot;Date de intrare invalide&amp;quot;)&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
==Explicatie cod:==&lt;br /&gt;
Funcția validare_date(n, numere) primește un număr n și o listă de numere numere și verifică dacă n se află în intervalul [1, 999] și dacă fiecare număr din numere se încadrează în intervalul [0, 1_000_000]. Dacă una dintre condiții nu este îndeplinită, funcția returnează False. În caz contrar, returnează True.&lt;br /&gt;
Funcția suma_numerelor_pare(numere) primește o listă de numere numere și calculează suma tuturor numerelor pare din listă. De asemenea, numără câte numere pare sunt în listă. Pentru fiecare număr din listă, se verifică dacă este par (adică are restul împărțirii la 2 egal cu zero), iar în caz afirmativ, se adaugă la suma și se incrementează un contor. Funcția returnează suma și numărul de numere pare găsite.&lt;br /&gt;
Funcția medie(numere) primește o listă de numere numere și calculează media aritmetică a numerelor pare din listă. Se utilizează funcția suma_numerelor_pare() pentru a obține suma și numărul de numere pare, apoi se calculează media împărțind suma la numărul de numere pare. Rezultatul este afișat.&lt;br /&gt;
În blocul if __name__ == &#039;__main__&#039;:, se citește de la intrare un număr n și o serie de numere separate prin spațiu utilizând funcția input() și split(), și se stochează într-o variabilă numere. Apoi, se verifică dacă valorile citite sunt valide utilizând funcția validare_date(). Dacă valorile sunt valide, se afișează un mesaj de confirmare și se apelează funcția medie() pentru a calcula și afișa media numerelor pare. În caz contrar, se afișează un mesaj de eroare.&lt;/div&gt;</summary>
		<author><name>Paul Ungur</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=0053_-_Cate_Impare&amp;diff=6845</id>
		<title>0053 - Cate Impare</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=0053_-_Cate_Impare&amp;diff=6845"/>
		<updated>2023-06-29T18:54:29Z</updated>

		<summary type="html">&lt;p&gt;Paul Ungur: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Cerinţa==&lt;br /&gt;
Se citesc numere de la tastatură până la apariția lui zero. Să se determine câte dintre ele erau impare.&lt;br /&gt;
&lt;br /&gt;
==Date de intrare==&lt;br /&gt;
Programul citește de la tastatură numere naturale. Citirea se încheie la introducerea valorii 0.&lt;br /&gt;
&lt;br /&gt;
==Date de ieşire==&lt;br /&gt;
Dacă datele sunt introduse corect, pe ecran se va afișa: &#039;&#039;&#039;&amp;quot;Date de intrare valide.&amp;quot;&#039;&#039;&#039;, apoi programul afișează pe ecran numărul &#039;&#039;&#039;C&#039;&#039;&#039;, reprezentând numărul de numere impare citite. În cazul în care datele nu respectă restricțiile, se va afișa pe ecran: &#039;&#039;&#039;&amp;quot;Date de intrare invalide&amp;quot;.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Restricţii şi precizări==&lt;br /&gt;
numerele citite aparțin intervalului [0; 1.000.000.000)&lt;br /&gt;
&lt;br /&gt;
==Exemplu:==&lt;br /&gt;
Intrare&lt;br /&gt;
: 5 6 2 1 0&lt;br /&gt;
&lt;br /&gt;
Ieșire&lt;br /&gt;
: Date de intrare valide&lt;br /&gt;
: 2&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 validare_date(numere):&lt;br /&gt;
    for numar in numere:&lt;br /&gt;
        if numar &amp;lt; 0 or numar &amp;gt; 1_000_000_000:&lt;br /&gt;
            return False&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def cate_impare(numere):&lt;br /&gt;
    numere_impare = 0&lt;br /&gt;
    for numar in numere:&lt;br /&gt;
        if numar % 2 == 1:&lt;br /&gt;
            numere_impare += 1&lt;br /&gt;
    print(numere_impare)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    numere = list(map(int, input().split()))&lt;br /&gt;
    if validare_date(numere):&lt;br /&gt;
        print(&amp;quot;Date de intrare valide&amp;quot;)&lt;br /&gt;
        cate_impare(numere)&lt;br /&gt;
    else:&lt;br /&gt;
        print(&amp;quot;Date de intrare invalide&amp;quot;)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
==Explicatie cod:==&lt;br /&gt;
Funcția validare_date(numere) primește o listă de numere și verifică dacă fiecare număr din listă se încadrează în intervalul specificat [0, 1_000_000_000]. Dacă există cel puțin un număr care nu respectă această condiție, funcția returnează False. În caz contrar, returnează True.&lt;br /&gt;
Funcția cate_impare(numere) primește o listă de numere și numără câte dintre acestea sunt impare. Se verifică fiecare număr din listă, iar dacă numărul este impar (adică are restul împărțirii la 2 diferit de zero), se incrementează un contor. La final, se afișează numărul de numere impare găsite.&lt;br /&gt;
În blocul if __name__ == &#039;__main__&#039;:, se citește de la intrare o serie de numere separate prin spațiu utilizând funcția input() și split(), și se stochează într-o listă numită numere. Apoi, se verifică dacă valorile citite sunt valide utilizând funcția validare_date(). Dacă valorile sunt valide, se afișează un mesaj de confirmare și se apelează funcția cate_impare() pentru a număra numerele impare. În caz contrar, se afișează un mesaj de eroare.&lt;/div&gt;</summary>
		<author><name>Paul Ungur</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=3094_-_Excursie_0&amp;diff=6844</id>
		<title>3094 - Excursie 0</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=3094_-_Excursie_0&amp;diff=6844"/>
		<updated>2023-06-29T18:53:09Z</updated>

		<summary type="html">&lt;p&gt;Paul Ungur: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
==Cerința==&lt;br /&gt;
Un băiat și tatăl lui se decid să plece într-o excursie prin lume, fiecare de la casa lui pe același traseu. Deoarece nu au reușit să găsească destule zile libere de la serviciu încât să aibă timp să se întâlnească înainte de plecarea programată, se hotărăsc să plece separat și dacă se întâlnesc pe drum consideră excursia un succes. Considerăm traseul excursiei o linie dreaptă cu coordonate unidimensionale reprezentate de numere naturale &amp;lt;span style=&amp;quot;“color:&amp;quot; red”&amp;gt;(0,1,2,3…)&amp;lt;/span&amp;gt;. Tatăl parcurge exact &amp;lt;span style=&amp;quot;“color:&amp;quot; red”&amp;gt;t&amp;lt;/span&amp;gt; km/zi, după care trebuie să înnopteze la o pensiune. Băiatul parcurge exact &amp;lt;span style=&amp;quot;“color:&amp;quot; red”&amp;gt;b&amp;lt;/span&amp;gt; km/zi, după care de asemenea trebuie să înnopteze la o pensiune. Tatăl pleacă de la el de acasă(poziția &amp;lt;span style=&amp;quot;“color:&amp;quot; red”&amp;gt;pt&amp;lt;/span&amp;gt;), iar fiul pleacă de la casa lui(poziția &amp;lt;span style=&amp;quot;“color:&amp;quot; red”&amp;gt;pb&amp;lt;/span&amp;gt;). Amândoi pleacă în aceeași zi, merg în aceeași direcție, iar excursia durează z zile. Pensiunile se află la fiecare coordonată &amp;lt;span style=&amp;quot;“color:&amp;quot; red”&amp;gt;0&amp;lt;/span&amp;gt;, &amp;lt;span style=&amp;quot;“color:&amp;quot; red”&amp;gt;1&amp;lt;/span&amp;gt;, &amp;lt;span style=&amp;quot;“color:&amp;quot; red”&amp;gt;2&amp;lt;/span&amp;gt;, &amp;lt;span style=&amp;quot;“color:&amp;quot; red”&amp;gt;3&amp;lt;/span&amp;gt;, …. Tatăl și băiatul se pot întâlni numai dacă se află la aceeași coordonată în același timp. Se cere să se determine dacă pe parcursul celor &amp;lt;span style=&amp;quot;“color:&amp;quot; red”&amp;gt;z&amp;lt;/span&amp;gt; zile ale excursiei, băiatul și tatăl se întâlnesc. Dacă da, se afișează coordonata unde se întâlnesc, altfel se afișează &amp;lt;span style=&amp;quot;“color:&amp;quot; red”&amp;gt;-1&amp;lt;/span&amp;gt;.&lt;br /&gt;
==Date de intrare==&lt;br /&gt;
Programul citește de la tastatură numerele &amp;lt;span style=&amp;quot;“color:&amp;quot; red”&amp;gt;z pb b pt t&amp;lt;/span&amp;gt;, 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: &#039;&#039;&#039;&amp;quot;Date de intrare valide.&amp;quot;&#039;&#039;&#039;, apoi programul va afișa pe ecran coordonata unde se întâlnesc sau &amp;lt;span style=&amp;quot;“color:&amp;quot; red”&amp;gt;-1&amp;lt;/span&amp;gt; dacă nu se întâlnesc. În cazul în care datele nu respectă restricțiile, se va afișa pe ecran: &#039;&#039;&#039;&amp;quot;Date de intrare invalide&amp;quot;.&#039;&#039;&#039;&lt;br /&gt;
==Restricții și precizări==&lt;br /&gt;
&amp;lt;span style=&amp;quot;“color:&amp;quot; red”&amp;gt;1 ≤ z ≤ 30 1 ≤ pb,pt,b,t ≤ 10000&amp;lt;/span&amp;gt;&lt;br /&gt;
==Exemplu:==&lt;br /&gt;
Intrare&lt;br /&gt;
&lt;br /&gt;
: 5 0 3 4 2&lt;br /&gt;
&lt;br /&gt;
Ieșire&lt;br /&gt;
: Date de intrare valide&lt;br /&gt;
: 12&lt;br /&gt;
==Rezolvare==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
def validare(z, pb, b, pt, t):&lt;br /&gt;
    if 1 &amp;lt;= z &amp;lt;= 30 and 0 &amp;lt;= pb &amp;lt;= 10_000 and 0 &amp;lt;= b &amp;lt;= 10_000 and 0 &amp;lt;= pt &amp;lt;= 10_000 and 0 &amp;lt;= t &amp;lt;= 10_000:&lt;br /&gt;
        return True&lt;br /&gt;
    return False&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def excursie(z, pb, b, pt, t, poz):&lt;br /&gt;
    while z:&lt;br /&gt;
        if pb == pt and poz == -1:&lt;br /&gt;
            poz = pb&lt;br /&gt;
        pb += b&lt;br /&gt;
        pt += t&lt;br /&gt;
        z -= 1&lt;br /&gt;
&lt;br /&gt;
    if pb == pt and poz == -1:&lt;br /&gt;
        poz = pb&lt;br /&gt;
&lt;br /&gt;
    print(poz)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    z, pb, b, pt, t = map(int, input().split())&lt;br /&gt;
    poz = -1&lt;br /&gt;
    if validare(z, pb, b, pt, t):&lt;br /&gt;
        print(&amp;quot;Date de intrare valide&amp;quot;)&lt;br /&gt;
        excursie(z, pb, b, pt, t, poz)&lt;br /&gt;
    else:&lt;br /&gt;
        print(&amp;quot;Date de intrare invalide&amp;quot;)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
==Explicatie cod:==&lt;br /&gt;
Funcția validare(z, pb, b, pt, t) primește cinci parametri care reprezintă diferite valori. Această funcție verifică dacă toate valorile se încadrează în anumite intervale specifice. Dacă toate valorile sunt în limitele acceptate, funcția returnează True. În caz contrar, returnează False.&lt;br /&gt;
Funcția excursie(z, pb, b, pt, t, poz) primește șase parametri și implementează o iterație while pentru a simula o excursie. În fiecare iterație, verifică dacă pb este egal cu pt și dacă poz este -1. Dacă această condiție este îndeplinită, valoarea pb devine valoarea poz. Se adaugă b la pb și t la pt, iar valoarea z este decrementată cu 1. Procesul se repetă până când z devine 0. La sfârșit, se verifică din nou dacă pb este egal cu pt și dacă poz este -1. Dacă această condiție este îndeplinită, valoarea pb devine valoarea poz. La final, se afișează valoarea poz.&lt;br /&gt;
În blocul if __name__ == &#039;__main__&#039;:, se citește de la intrare valorile z, pb, b, pt, t utilizând funcția map și input(). De asemenea, se inițializează valoarea poz cu -1. Apoi, se verifică dacă valorile citite sunt valide utilizând funcția validare(). Dacă valorile sunt valide, se afișează un mesaj de confirmare și se apelează funcția excursie() pentru a efectua excursia. În caz contrar, se afișează un mesaj de eroare.&lt;br /&gt;
Codul prezentat verifică datele de intrare, simulează o excursie și afișează rezultatul în funcție de anumite condiții.&lt;/div&gt;</summary>
		<author><name>Paul Ungur</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=2641_-_AF&amp;diff=6843</id>
		<title>2641 - AF</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=2641_-_AF&amp;diff=6843"/>
		<updated>2023-06-29T18:51:57Z</updated>

		<summary type="html">&lt;p&gt;Paul Ungur: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Sursa: [https://www.pbinfo.ro/probleme/161/inlocuire 0161 - inlocuire]&lt;br /&gt;
----&lt;br /&gt;
== Cerinţa ==&lt;br /&gt;
Gigel are ca temă la matematică să precizeze valoarea de adevăr a unor expresii de forma &#039;&#039;&#039;nr1 semn nr2 = nr3&#039;&#039;&#039;, unde &#039;&#039;&#039;nr1&#039;&#039;&#039;, &#039;&#039;&#039;nr2&#039;&#039;&#039; și &#039;&#039;&#039;nr3&#039;&#039;&#039; sunt numere naturale, iar &#039;&#039;&#039;semn&#039;&#039;&#039; poate fi +, -, x sau : reprezentând adunarea, scăderea, înmulțirea și împărțirea. Ajutați-l pe Gigel să rezolve tema la matematică.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Fișierul de intrare &#039;&#039;&#039;af.in&#039;&#039;&#039; conține pe prima linie numărul de expresii &#039;&#039;&#039;n&#039;&#039;&#039;, iar pe următoarele &#039;&#039;&#039;n&#039;&#039;&#039; linii cele &#039;&#039;&#039;n&#039;&#039;&#039; expresii. Cele trei numere, semnul operației și egal sunt separate 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: &#039;&#039;&#039;&amp;quot;Datele citite din fisier sunt corecte&amp;quot;&#039;&#039;&#039;, apoi Fișierul de ieșire &#039;&#039;&#039;af.out&#039;&#039;&#039; va conține pe fiecare linie valoarea de adevăr (&#039;&#039;&#039;Adevarat&#039;&#039;&#039; sau &#039;&#039;&#039;Fals&#039;&#039;&#039;) a expresiei corespunzătoare din fișierul de intrare. &lt;br /&gt;
&lt;br /&gt;
== Restricţii şi precizări ==&lt;br /&gt;
&#039;&#039;&#039;1&#039;&#039;&#039; &amp;amp;les; &#039;&#039;&#039;n&#039;&#039;&#039; &amp;amp;les; &#039;&#039;&#039;10&#039;&#039;&#039;;&lt;br /&gt;
&#039;&#039;&#039;0&#039;&#039;&#039; ≤  &#039;&#039;&#039;nr1&#039;&#039;&#039;, &#039;&#039;&#039;nr2&#039;&#039;&#039;, &#039;&#039;&#039;nr3&#039;&#039;&#039; și rezultatul operației din membrul stâng ≤ &#039;&#039;&#039;1017&#039;&#039;&#039;;&lt;br /&gt;
&#039;&#039;&#039;nr1&#039;&#039;&#039; ≥ &#039;&#039;&#039;nr2&#039;&#039;&#039;;&lt;br /&gt;
rezultatul operației &#039;&#039;&#039;nr1 : nr2&#039;&#039;&#039; este câtul împărțirii lui &#039;&#039;&#039;nr1&#039;&#039;&#039; la &#039;&#039;&#039;nr2&#039;&#039;&#039;;&lt;br /&gt;
dacă expresia este de forma &#039;&#039;&#039;nr1 : 0 = nr3&#039;&#039;&#039; atunci este considerată falsă.&lt;br /&gt;
&lt;br /&gt;
== Exemple ==&lt;br /&gt;
&lt;br /&gt;
; af.in&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
4&lt;br /&gt;
1 + 1 = 2&lt;br /&gt;
3 x 3 = 6&lt;br /&gt;
5 - 1 = 4&lt;br /&gt;
8 : 2 = 3&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
: Datele citite din fisier sunt corecte&lt;br /&gt;
; af.out&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Adevarat&lt;br /&gt;
Fals&lt;br /&gt;
Adevarat&lt;br /&gt;
Fals&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
== Rezolvare == &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
def validare_date(expresii):&lt;br /&gt;
    if len(expresii) &amp;gt; 10:&lt;br /&gt;
        print(&amp;quot;Datele citite din fisier nu sunt corecte&amp;quot;)&lt;br /&gt;
        return False&lt;br /&gt;
    else:&lt;br /&gt;
        for expresie in expresii:&lt;br /&gt;
            expresie = expresie.strip().split()&lt;br /&gt;
            primul = int(expresie[0])&lt;br /&gt;
            semn = int(expresie[1])&lt;br /&gt;
            al_doilea = int(expresie[2])&lt;br /&gt;
            rezultatul = int(expresie[-1])&lt;br /&gt;
            if operatie(primul, al_doilea, semn)&amp;lt;= 10**17:&lt;br /&gt;
                if primul &amp;gt;= al_doilea:&lt;br /&gt;
                    print(&amp;quot;Datele citite din fisier sunt corecte&amp;quot;)&lt;br /&gt;
                    return True&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def citire_expresii():&lt;br /&gt;
    with open(&#039;af.in&#039;, &#039;r&#039;) as f:&lt;br /&gt;
        n = int(f.readline().strip())&lt;br /&gt;
        expresii = [f.readline().strip() for _ in range(n)]&lt;br /&gt;
        return expresii&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def scriere_rezultat(continut):&lt;br /&gt;
    with open(&#039;af.out&#039;, &#039;a&#039;) as f:&lt;br /&gt;
        if continut:&lt;br /&gt;
            f.write(&amp;quot;Adevarat\n&amp;quot;)&lt;br /&gt;
        else:&lt;br /&gt;
            f.write(&amp;quot;Fals\n&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def operatie(nr1, nr2, semn):&lt;br /&gt;
    if semn == &#039;+&#039;:&lt;br /&gt;
        return nr1 + nr2&lt;br /&gt;
    elif semn == &#039;-&#039;:&lt;br /&gt;
        return nr1 - nr2&lt;br /&gt;
    elif semn == &#039;x&#039;:&lt;br /&gt;
        return nr1 * nr2&lt;br /&gt;
    elif semn == &#039;:&#039;:&lt;br /&gt;
        if nr2 == 0:&lt;br /&gt;
            return False&lt;br /&gt;
        return nr1 // nr2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    expresii = citire_expresii()&lt;br /&gt;
    for expresie in expresii:&lt;br /&gt;
        expresie = expresie.strip().split()&lt;br /&gt;
        nr1 = int(expresie[0])&lt;br /&gt;
        semn = expresie[1]&lt;br /&gt;
        nr2 = int(expresie[2])&lt;br /&gt;
        nr3 = int(expresie[-1])&lt;br /&gt;
        if semn == &#039;+&#039;:&lt;br /&gt;
            scriere_rezultat(nr1 + nr2 == nr3)&lt;br /&gt;
        elif semn == &#039;-&#039;:&lt;br /&gt;
            scriere_rezultat(nr1 - nr2 == nr3)&lt;br /&gt;
        elif semn == &#039;x&#039;:&lt;br /&gt;
            scriere_rezultat(nr1 * nr2 == nr3)&lt;br /&gt;
        elif semn == &#039;:&#039;:&lt;br /&gt;
            if nr2 == 0:&lt;br /&gt;
                scriere_rezultat(False)&lt;br /&gt;
            else:&lt;br /&gt;
                scriere_rezultat(nr1 // nr2 == nr3)&lt;br /&gt;
        else:&lt;br /&gt;
            scriere_rezultat(False)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
==Explicatie cod:==&lt;br /&gt;
Funcția validare_date(expresii) primește o listă de expresii și verifică dacă aceasta are mai mult de 10 elemente. Dacă numărul de expresii depășește 10, se afișează un mesaj de eroare și se returnează False. În caz contrar, se parcurge fiecare expresie și se verifică dacă valorile și semnele din expresie respectă anumite condiții. Dacă condițiile sunt îndeplinite, se afișează un mesaj de confirmare și se returnează True.&lt;br /&gt;
Funcția citire_expresii() citeste expresiile din fișierul &#039;af.in&#039;. Prima linie a fișierului reprezintă numărul de expresii, iar următoarele linii conțin expresiile propriu-zise. Expresiile sunt stocate într-o listă și returnate.&lt;br /&gt;
Funcția scriere_rezultat(continut) primește un argument continut și scrie rezultatul în fișierul &#039;af.out&#039;. Dacă continut este adevărat (True), se scrie &amp;quot;Adevarat\n&amp;quot; în fișier. În caz contrar, se scrie &amp;quot;Fals\n&amp;quot;.&lt;br /&gt;
Funcția operatie(nr1, nr2, semn) primește două numere (nr1 și nr2) și un semn al unei operații matematice. În funcție de semn, se realizează operația corespunzătoare și se returnează rezultatul. Dacă semnul este &#039;:&#039; și nr2 este 0, se returnează False pentru a evita împărțirea la zero.&lt;br /&gt;
În blocul if __name__ == &#039;__main__&#039;:, se apelează funcția citire_expresii() pentru a obține lista de expresii din fișierul de intrare. Apoi, se parcurge fiecare expresie și se verifică rezultatul evaluării expresiei în funcție de semnul operației. Rezultatele sunt scrise în fișierul de ieșire utilizând funcția scriere_rezultat(continut). Dacă semnul operației nu este recunoscut, se scrie False în fișier.&lt;br /&gt;
Codul citeste expresiile din fișierul de intrare, validează datele de intrare, evaluează expresiile și scrie rezultatele în fișierul de ieșire.&lt;/div&gt;</summary>
		<author><name>Paul Ungur</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=0052_-_Suma_Pare_1&amp;diff=6842</id>
		<title>0052 - Suma Pare 1</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=0052_-_Suma_Pare_1&amp;diff=6842"/>
		<updated>2023-06-29T18:42:24Z</updated>

		<summary type="html">&lt;p&gt;Paul Ungur: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Cerinţa==&lt;br /&gt;
Se citesc numere de la tastatură până la apariția lui zero. Să se determine suma celor pare.&lt;br /&gt;
&lt;br /&gt;
==Date de intrare==&lt;br /&gt;
Programul citește de la tastatură numere întregi. Citirea se încheie la introducerea valorii &amp;lt;span style=“color: red”&amp;gt;0&amp;lt;/span&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Date de ieşire==&lt;br /&gt;
Programul afișează pe ecran numărul &amp;lt;span style=“color: red”&amp;gt; S&amp;lt;/span&amp;gt;, reprezentând suma numerelor pare.&lt;br /&gt;
Dacă datele sunt introduse corect, pe ecran se va afișa: &#039;&#039;&#039;&amp;quot;Date de intrare valide&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
În caz contrar, se va afișa pe ecran: &#039;&#039;&#039;&amp;quot;Date de intrare invalide.&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Restricţii şi precizări==&lt;br /&gt;
numerele citite aparține intervalului &amp;lt;span style=“color: red”&amp;gt; (-1.000.000; 1.000.000)&amp;lt;/span&amp;gt;&lt;br /&gt;
valoarea absolută a sumei nu va depăși &amp;lt;span style=“color: red”&amp;gt; 1.000.000.000&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Exemplu:==&lt;br /&gt;
Intrare&lt;br /&gt;
&lt;br /&gt;
: 5 6 2 1 0&lt;br /&gt;
&lt;br /&gt;
Ieșire&lt;br /&gt;
: Datele de intrare valide.&lt;br /&gt;
: 8&lt;br /&gt;
&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 validare_date(numere):&lt;br /&gt;
    for numar in numere:&lt;br /&gt;
        if numar &amp;lt; -1000000 or numar &amp;gt; 1000000:&lt;br /&gt;
            return False&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def suma_numerelor_pare(numere):&lt;br /&gt;
    suma = 0&lt;br /&gt;
    for numar in numere:&lt;br /&gt;
        if numar % 2 == 0:&lt;br /&gt;
            suma += numar&lt;br /&gt;
    print(suma)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    numere = list(map(int, input().split()))&lt;br /&gt;
    if validare_date(numere):&lt;br /&gt;
        print(&amp;quot;Date de intrare valide&amp;quot;)&lt;br /&gt;
        suma_numerelor_pare(numere)&lt;br /&gt;
    else:&lt;br /&gt;
        print(&amp;quot;Date de intrare invalide&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
==Explicatie cod:==&lt;br /&gt;
Funcția validare_date(numere) primește o listă de numere și verifică dacă fiecare număr din listă se încadrează în intervalul specificat [-1000000, 1000000]. Dacă există cel puțin un număr care nu respectă această condiție, funcția returnează False. În caz contrar, returnează True.&lt;br /&gt;
Funcția suma_numerelor_pare(numere) primește o listă de numere și calculează suma numerelor pare din acea listă. Se verifică fiecare număr din listă, iar dacă numărul este par (adică împărțit exact la 2), se adaugă la suma totală. La final, suma este afișată.&lt;br /&gt;
În blocul if __name__ == &#039;__main__&#039;:, se citește de la intrare o serie de numere separate prin spațiu utilizând funcția input() și split(), și se stochează într-o listă numită numere. Apoi, se verifică dacă valorile citite sunt valide utilizând funcția validare_date(). Dacă valorile sunt valide, se afișează un mesaj de confirmare și se apelează funcția suma_numerelor_pare() pentru a calcula suma numerelor pare. În caz contrar, se afișează un mesaj de eroare.&lt;/div&gt;</summary>
		<author><name>Paul Ungur</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=2911_-_Write_Digits&amp;diff=6841</id>
		<title>2911 - Write Digits</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=2911_-_Write_Digits&amp;diff=6841"/>
		<updated>2023-06-29T18:37:16Z</updated>

		<summary type="html">&lt;p&gt;Paul Ungur: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Sursa: [https://www.pbinfo.ro/probleme/4294/perechin 4294 - Perechi N]&lt;br /&gt;
----&lt;br /&gt;
== Cerinţa ==&lt;br /&gt;
Se dă un număr natural &#039;&#039;&#039;n&#039;&#039;&#039;. Să se afișeze fiecare cifră a numărului folosind simbolul @, ca în exemplu.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Programul citește de la tastatură numărul &#039;&#039;&#039;n&#039;&#039;&#039;.&lt;br /&gt;
== Date de ieșire == &lt;br /&gt;
Dacă datele sunt introduse corect, pe ecran se va afișa: &#039;&#039;&#039;&amp;quot;Date de intrare valide.&amp;quot;&#039;&#039;&#039;, apoi Programul va afișa pe ecran fiecare cifră a numărului citit scrisă. După fiecare cifră se va lăsa un rând gol. În cazul în care datele nu respectă restricțiile, se va afișa pe ecran: &#039;&#039;&#039;&amp;quot;Date de intrare invalide&amp;quot;.&#039;&#039;&#039;&lt;br /&gt;
== Restricţii şi precizări ==&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;1&amp;lt;/strong&amp;gt; &amp;amp;#8804; &amp;lt;strong&amp;gt;n&amp;lt;/strong&amp;gt; &amp;amp;#8804; &amp;lt;strong&amp;gt;10&amp;lt;sup&amp;gt;10&amp;lt;/sup&amp;gt;&amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Exemplu ==&lt;br /&gt;
; Intrare&lt;br /&gt;
: 1234567890&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Date de intrare valide&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  @&lt;br /&gt;
 @@&lt;br /&gt;
  @&lt;br /&gt;
  @&lt;br /&gt;
@@@@@&lt;br /&gt;
&lt;br /&gt;
@@@@&lt;br /&gt;
@  @&lt;br /&gt;
  @&lt;br /&gt;
 @&lt;br /&gt;
@@@@&lt;br /&gt;
&lt;br /&gt;
@@@@@&lt;br /&gt;
    @&lt;br /&gt;
@@@@@&lt;br /&gt;
    @&lt;br /&gt;
@@@@@&lt;br /&gt;
&lt;br /&gt;
@   @&lt;br /&gt;
@   @&lt;br /&gt;
@@@@@&lt;br /&gt;
    @&lt;br /&gt;
    @&lt;br /&gt;
&lt;br /&gt;
@@@@@&lt;br /&gt;
@&lt;br /&gt;
@@@@@&lt;br /&gt;
    @&lt;br /&gt;
@@@@@&lt;br /&gt;
&lt;br /&gt;
@@@@@&lt;br /&gt;
@&lt;br /&gt;
@@@@@&lt;br /&gt;
@   @&lt;br /&gt;
@@@@@&lt;br /&gt;
&lt;br /&gt;
@@@@&lt;br /&gt;
   @&lt;br /&gt;
  @@@&lt;br /&gt;
   @&lt;br /&gt;
   @&lt;br /&gt;
&lt;br /&gt;
@@@@@&lt;br /&gt;
@   @&lt;br /&gt;
@@@@@&lt;br /&gt;
@   @&lt;br /&gt;
@@@@@&lt;br /&gt;
&lt;br /&gt;
@@@@@&lt;br /&gt;
@   @&lt;br /&gt;
@@@@@&lt;br /&gt;
    @&lt;br /&gt;
    @&lt;br /&gt;
&lt;br /&gt;
@@@@@&lt;br /&gt;
@   @&lt;br /&gt;
@   @&lt;br /&gt;
@   @&lt;br /&gt;
@@@@@&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Rezolvare == &lt;br /&gt;
=== Rezolvare ver. 1 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
# 2911- WriteDigits&lt;br /&gt;
&lt;br /&gt;
def afisare_cifra(cifra: int) -&amp;gt; None:&lt;br /&gt;
    if cifra == 0:&lt;br /&gt;
        print(&amp;quot;@@@@@&amp;quot;)&lt;br /&gt;
        print(&amp;quot;@    @&amp;quot;)&lt;br /&gt;
        print(&amp;quot;@    @&amp;quot;)&lt;br /&gt;
        print(&amp;quot;@    @&amp;quot;)&lt;br /&gt;
        print(&amp;quot;@@@@@&amp;quot;)&lt;br /&gt;
        print(&#039;\n&#039;)&lt;br /&gt;
    elif cifra == 1:&lt;br /&gt;
        print(&amp;quot;  @&amp;quot;)&lt;br /&gt;
        print(&amp;quot; @@&amp;quot;)&lt;br /&gt;
        print(&amp;quot;  @&amp;quot;)&lt;br /&gt;
        print(&amp;quot;  @&amp;quot;)&lt;br /&gt;
        print(&amp;quot;@@@@@&amp;quot;)&lt;br /&gt;
        print(&#039;\n&#039;)&lt;br /&gt;
    elif cifra == 2:&lt;br /&gt;
        print(&amp;quot;@@@@&amp;quot;)&lt;br /&gt;
        print(&amp;quot;    @&amp;quot;)&lt;br /&gt;
        print(&amp;quot;@@@@&amp;quot;)&lt;br /&gt;
        print(&amp;quot;@&amp;quot;)&lt;br /&gt;
        print(&amp;quot;@@@@@&amp;quot;)&lt;br /&gt;
        print(&#039;\n&#039;)&lt;br /&gt;
    elif cifra == 3:&lt;br /&gt;
        print(&amp;quot;@@@@&amp;quot;)&lt;br /&gt;
        print(&amp;quot;    @&amp;quot;)&lt;br /&gt;
        print(&amp;quot;@@@@&amp;quot;)&lt;br /&gt;
        print(&amp;quot;    @&amp;quot;)&lt;br /&gt;
        print(&amp;quot;@@@@&amp;quot;)&lt;br /&gt;
        print(&#039;\n&#039;)&lt;br /&gt;
    elif cifra == 4:&lt;br /&gt;
        print(&amp;quot;@   @&amp;quot;)&lt;br /&gt;
        print(&amp;quot;@   @&amp;quot;)&lt;br /&gt;
        print(&amp;quot;@@@@@&amp;quot;)&lt;br /&gt;
        print(&amp;quot;    @&amp;quot;)&lt;br /&gt;
        print(&amp;quot;    @&amp;quot;)&lt;br /&gt;
        print(&#039;\n&#039;)&lt;br /&gt;
    elif cifra == 5:&lt;br /&gt;
        print(&amp;quot;@@@@@&amp;quot;)&lt;br /&gt;
        print(&amp;quot;@&amp;quot;)&lt;br /&gt;
        print(&amp;quot;@@@@@&amp;quot;)&lt;br /&gt;
        print(&amp;quot;    @&amp;quot;)&lt;br /&gt;
        print(&amp;quot;@@@@@&amp;quot;)&lt;br /&gt;
        print(&#039;\n&#039;)&lt;br /&gt;
    elif cifra == 6:&lt;br /&gt;
        print(&amp;quot;@@@@@&amp;quot;)&lt;br /&gt;
        print(&amp;quot;@&amp;quot;)&lt;br /&gt;
        print(&amp;quot;@@@@@&amp;quot;)&lt;br /&gt;
        print(&amp;quot;@   @&amp;quot;)&lt;br /&gt;
        print(&amp;quot;@@@@@&amp;quot;)&lt;br /&gt;
        print(&#039;\n&#039;)&lt;br /&gt;
    elif cifra == 7:&lt;br /&gt;
        print(&amp;quot;@@@@@&amp;quot;)&lt;br /&gt;
        print(&amp;quot;    @&amp;quot;)&lt;br /&gt;
        print(&amp;quot;   @&amp;quot;)&lt;br /&gt;
        print(&amp;quot;  @&amp;quot;)&lt;br /&gt;
        print(&amp;quot;  @&amp;quot;)&lt;br /&gt;
        print(&#039;\n&#039;)&lt;br /&gt;
    elif cifra == 8:&lt;br /&gt;
        print(&amp;quot;@@@@@&amp;quot;)&lt;br /&gt;
        print(&amp;quot;@   @&amp;quot;)&lt;br /&gt;
        print(&amp;quot;@@@@@&amp;quot;)&lt;br /&gt;
        print(&amp;quot;@   @&amp;quot;)&lt;br /&gt;
        print(&amp;quot;@@@@@&amp;quot;)&lt;br /&gt;
        print(&#039;\n&#039;)&lt;br /&gt;
    elif cifra == 9:&lt;br /&gt;
        print(&amp;quot;@@@@@&amp;quot;)&lt;br /&gt;
        print(&amp;quot;@   @&amp;quot;)&lt;br /&gt;
        print(&amp;quot;@@@@@&amp;quot;)&lt;br /&gt;
        print(&amp;quot;    @&amp;quot;)&lt;br /&gt;
        print(&amp;quot;    @&amp;quot;)&lt;br /&gt;
        print(&#039;\n&#039;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def validare_date_numar(numar: str) -&amp;gt; bool:&lt;br /&gt;
    if numar.isdigit():&lt;br /&gt;
        if int(numar) &amp;gt; 10 ** 10:&lt;br /&gt;
            return False&lt;br /&gt;
        return True&lt;br /&gt;
    return False&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    n = input()&lt;br /&gt;
    if validare_date_numar(n):&lt;br /&gt;
        print(&amp;quot;Datele de intrare corespund restricțiilor impuse.&amp;quot;)&lt;br /&gt;
        for digit in n:&lt;br /&gt;
            afisare_cifra(int(digit))&lt;br /&gt;
    else:&lt;br /&gt;
        print(&amp;quot;Datele de intrare nu corespund restricțiilor impuse.&amp;quot;)&lt;br /&gt;
    &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Explicație rezolvare==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
   Acest cod Python are două funcții. Funcția afisare_cifra primește o cifră între 0 și 9 și afișează modelul corespunzător acelei cifre folosind caractere speciale. Funcția validare_date_numar primește un șir de caractere și verifică dacă acesta conține doar cifre și dacă numărul reprezentat de aceste cifre este mai mic sau egal cu 10^10. Dacă numărul este valid, funcția returnează True, altfel returnează False.&lt;br /&gt;
&lt;br /&gt;
    În funcția principală, programul citește un număr de la intrare și verifică dacă acesta este un număr valid folosind funcția validare_date_numar. Dacă numărul este valid, programul afișează un mesaj corespunzător și apoi afișează fiecare cifră din număr folosind funcția afisare_cifra. Dacă numărul nu este valid, programul afișează un mesaj corespunzător.&lt;br /&gt;
&lt;br /&gt;
   În general, acest program poate fi folosit pentru a afișa cifrele sub forma unui model special și pentru a valida datele de intrare pentru a evita erorile.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Paul Ungur</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=3829_-_Octogon&amp;diff=6840</id>
		<title>3829 - Octogon</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=3829_-_Octogon&amp;diff=6840"/>
		<updated>2023-06-29T18:36:25Z</updated>

		<summary type="html">&lt;p&gt;Paul Ungur: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Cerința==&lt;br /&gt;
Să se afișeze un octogon de latură &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt; n&amp;lt;/span&amp;gt; umplut cu caractere &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt; *&amp;lt;/span&amp;gt; iar spațiul spațiul exterior umplut cu &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt; #&amp;lt;/span&amp;gt;, ca în exemplu.&lt;br /&gt;
&lt;br /&gt;
==Date de intrare==&lt;br /&gt;
Programul citește de la tastatură numărul &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt; n&amp;lt;/span&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Date de ieșire==&lt;br /&gt;
Dacă datele sunt introduse corect, pe ecran se va afișa: &#039;&#039;&#039;&amp;quot;Date de intrare valide.&amp;quot;&#039;&#039;&#039;, apoi programul va afișa octogonul cerut. În cazul în care datele nu respectă restricțiile, se va afișa pe ecran: &#039;&#039;&#039;&amp;quot;Date de intrare invalide&amp;quot;.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Restricții și precizări==&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt; 2 ≤ n ≤ 40&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Exemplu:==&lt;br /&gt;
Intrare&lt;br /&gt;
&lt;br /&gt;
: 5&lt;br /&gt;
&lt;br /&gt;
Ieșire&lt;br /&gt;
: Date de intrare valide&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;####*****####&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;###*******###&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;##*********##&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;#***********#&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*************&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*************&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*************&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*************&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*************&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;#***********#&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;##*********##&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;###*******###&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;####*****####&amp;lt;/nowiki&amp;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 validare(n):&lt;br /&gt;
    if n &amp;lt; 2 or n &amp;gt; 40:&lt;br /&gt;
        print(&amp;quot;Numarul introdus nu este valid!&amp;quot;)&lt;br /&gt;
        return False&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def afisare_octogon(n):&lt;br /&gt;
    for j in range(n - 1):&lt;br /&gt;
        # scriem primele j+1 caractere #&lt;br /&gt;
        for i in range(j + 1, n):&lt;br /&gt;
            print(&#039;#&#039;, end=&#039;&#039;)&lt;br /&gt;
        # scriem urmatoarele j2+n caractere *&lt;br /&gt;
        for i in range(j * 2 + n):&lt;br /&gt;
            print(&#039;*&#039;, end=&#039;&#039;)&lt;br /&gt;
        # scriem ultimele j+1 caractere #&lt;br /&gt;
        for i in range(j + 1, n):&lt;br /&gt;
            print(&#039;#&#039;, end=&#039;&#039;)&lt;br /&gt;
        # trecem la linia urmatoare&lt;br /&gt;
        print()&lt;br /&gt;
&lt;br /&gt;
    for i in range(n):&lt;br /&gt;
        for j in range(n * 3 - 2):&lt;br /&gt;
            print(&#039;*&#039;, end=&#039;&#039;)&lt;br /&gt;
        print()&lt;br /&gt;
&lt;br /&gt;
    for j in range(n - 1):&lt;br /&gt;
        # scriem primele n-j-1 caractere #&lt;br /&gt;
        for i in range(n - j - 1, n):&lt;br /&gt;
            print(&#039;#&#039;, end=&#039;&#039;)&lt;br /&gt;
        # scriem urmatoarele (n-j-1)*2+n-2 caractere *&lt;br /&gt;
        for i in range((n - j - 1) * 2 + n - 2):&lt;br /&gt;
            print(&#039;*&#039;, end=&#039;&#039;)&lt;br /&gt;
        # scriem ultimele n-j-1 caractere #&lt;br /&gt;
        for i in range(n - j - 1, n):&lt;br /&gt;
            print(&#039;#&#039;, end=&#039;&#039;)&lt;br /&gt;
        # trecem la linia urmatoare&lt;br /&gt;
        print()&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    n = int(input(&amp;quot;Introduceti numarul n: &amp;quot;))&lt;br /&gt;
    if validare(n):&lt;br /&gt;
        print(&amp;quot;Date de intrare valide&amp;quot;)&lt;br /&gt;
        afisare_octogon(n)&lt;br /&gt;
    else:&lt;br /&gt;
        print(&amp;quot;Date de intrare invalide&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
==Explicatie cod:==&lt;br /&gt;
Funcția validare(n) verifică dacă numărul n se află în intervalul [2, 40]. Dacă n este în afara acestui interval, se afișează mesajul &amp;quot;Numărul introdus nu este valid!&amp;quot; și se returnează False. În caz contrar, se returnează True.&lt;br /&gt;
Funcția afisare_octogon(n) afișează octogonul folosind caracterele &#039;#&#039; și &#039;&#039;. Pentru prima jumătate a octogonului, se parcurge un loop pentru variabila j de la 0 la n - 2. În fiecare iterație, se afișează primele j + 1 caractere &#039;#&#039; (n - j - 1 spații și j + 1 caractere &#039;#&#039;), apoi se afișează următoarele j * 2 + n caractere &#039;&#039;, iar apoi se afișează ultimele j + 1 caractere &#039;#&#039; (n - j - 1 spații și j + 1 caractere &#039;#&#039;). După fiecare linie, se afișează un rând gol cu print().&lt;br /&gt;
După afișarea primei jumătăți a octogonului, se afișează linia centrală formată din n * 3 - 2 caractere &#039;&#039;. Apoi, se afișează a doua jumătate a octogonului utilizând aceeași logică ca în prima jumătate, dar în ordine inversă. Se parcurge un loop pentru variabila j de la 0 la n - 2, se afișează primele n - j - 1 caractere &#039;#&#039; (n - j - 1 spații și j + 1 caractere &#039;#&#039;), apoi se afișează următoarele (n - j - 1) * 2 + n - 2 caractere &#039;&#039;, iar apoi se afișează ultimele n - j - 1 caractere &#039;#&#039; (n - j - 1 spații și j + 1 caractere &#039;#&#039;). După fiecare linie, se afișează un rând gol cu print().&lt;br /&gt;
În blocul if __name__ == &amp;quot;__main__&amp;quot;:, se citește numărul n de la utilizator folosind funcția input() și int(input()). Apoi, se validează numărul utilizând funcția validare(n). Dacă numărul este valid, se afișează mesajul &amp;quot;Date de intrare valide&amp;quot; și se apelează funcția afisare_octogon(n) pentru a afișa octogonul. Dacă numărul nu este valid, se afișează mesajul &amp;quot;Date de intrare invalide&amp;quot;.&lt;/div&gt;</summary>
		<author><name>Paul Ungur</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=3804_-_Raza_Cerc_Inscris&amp;diff=6839</id>
		<title>3804 - Raza Cerc Inscris</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=3804_-_Raza_Cerc_Inscris&amp;diff=6839"/>
		<updated>2023-06-29T18:35:26Z</updated>

		<summary type="html">&lt;p&gt;Paul Ungur: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Cerința==&lt;br /&gt;
Se dau lungimile laturilor unui triunghi. Aflați raza cercului înscris triunghiului.&lt;br /&gt;
&lt;br /&gt;
==Date de intrare==&lt;br /&gt;
Programul citește de la tastatură numerele &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt; a, b, c,&amp;lt;/span&amp;gt; reprezentand lungimile laturilor triunghiului.&lt;br /&gt;
&lt;br /&gt;
==Date de ieșire==&lt;br /&gt;
Dacă datele sunt introduse corect, pe ecran se va afișa: &#039;&#039;&#039;&amp;quot;Date de intrare valide.&amp;quot;&#039;&#039;&#039;, apoi programul va afișa pe ecran numărul &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt; r&amp;lt;/span&amp;gt;, reprezentând lungimea razei cercului înscris cu &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt; 2&amp;lt;/span&amp;gt; zecimale exacte, daca triunghiul este valid, altfel se va afisa mesajul &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt; Imposibil&amp;lt;/span&amp;gt;. În cazul în care datele nu respectă restricțiile, se va afișa pe ecran: &#039;&#039;&#039;&amp;quot;Date de intrare invalide&amp;quot;.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Restricții și precizări==&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt; 1 ≤ a, b, c ≤ 1000&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Exemplul 1:==&lt;br /&gt;
&lt;br /&gt;
Intrare&lt;br /&gt;
: 3 4 5&lt;br /&gt;
&lt;br /&gt;
Ieșire&lt;br /&gt;
: Date de intrare valide&lt;br /&gt;
: 1.00&lt;br /&gt;
&lt;br /&gt;
==Exemplul 2:==&lt;br /&gt;
&lt;br /&gt;
Intrare&lt;br /&gt;
&lt;br /&gt;
: 4 5 10&lt;br /&gt;
&lt;br /&gt;
Ieșire&lt;br /&gt;
: Date de intrare invalide&lt;br /&gt;
: Imposibil&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;
import math&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def validare(a, b, c):&lt;br /&gt;
    flag = True&lt;br /&gt;
    if not (a + b &amp;gt; c and b + c &amp;gt; a and c + a &amp;gt; b):&lt;br /&gt;
        flag = False&lt;br /&gt;
    return flag&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def rezolvare(a, b, c):&lt;br /&gt;
    p = (a + b + c) / 2&lt;br /&gt;
    raza = math.sqrt(((p - a) * (p - b) * (p - c)) / p)&lt;br /&gt;
    print(&amp;quot;{:.2f}&amp;quot;.format(raza))&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    a, b, c = map(int, input(&amp;quot;Introduceți laturile triunghiului (separate prin spații): &amp;quot;).split())&lt;br /&gt;
    if validare(a, b, c):&lt;br /&gt;
        rezolvare(a, b, c)&lt;br /&gt;
 print(&amp;quot;Posibil&amp;quot;)&lt;br /&gt;
    else:&lt;br /&gt;
        print(&amp;quot;Imposibil&amp;quot;)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
==Explicatie cod:==&lt;br /&gt;
Funcția validare(a, b, c) verifică dacă laturile a, b și c pot forma un triunghi valid. Aceasta se realizează prin verificarea inegalității triunghiului, care afirmă că suma oricăror două laturi trebuie să fie mai mare decât lungimea celei de-a treia laturi. Dacă această condiție este îndeplinită, funcția returnează True. În caz contrar, se returnează False.&lt;br /&gt;
Funcția rezolvare(a, b, c) calculează raza cercului circumscris triunghiului utilizând formula razei circumscrisului unui triunghi dreptunghic. În primul rând, se calculează semiperimetrul triunghiului folosind formula (a + b + c) / 2. Apoi, se calculează raza circumscrisului utilizând formula raza = sqrt(((p - a) * (p - b) * (p - c)) / p), unde p este semiperimetrul. Rezultatul este afișat cu două zecimale folosind formatarea de string &amp;quot;{:.2f}&amp;quot;.&lt;br /&gt;
În blocul if __name__ == &#039;__main__&#039;:, se citesc laturile a, b și c ale triunghiului de la utilizator folosind funcția input() și map(int, input().split()). Apoi, se validează laturile utilizând funcția validare(a, b, c). Dacă laturile formează un triunghi valid, se apelează funcția rezolvare(a, b, c) pentru a calcula și afișa raza cercului circumscris. Dacă laturile nu formează un triunghi valid, se afișează mesajul &amp;quot;Imposibil&amp;quot;.&lt;/div&gt;</summary>
		<author><name>Paul Ungur</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=1405_-_Desen_Romb_2&amp;diff=6838</id>
		<title>1405 - Desen Romb 2</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=1405_-_Desen_Romb_2&amp;diff=6838"/>
		<updated>2023-06-29T18:34:04Z</updated>

		<summary type="html">&lt;p&gt;Paul Ungur: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Cerința==&lt;br /&gt;
Se dă n un număr natural. Să se afișeze un romb de latură &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt; n&amp;lt;/span&amp;gt; umplut cu caractere &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt; *&amp;lt;/span&amp;gt; iar spațiul spațiul exterior umplut cu &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt; #&amp;lt;/span&amp;gt;, ca în exemplu.&lt;br /&gt;
&lt;br /&gt;
==Date de intrare==&lt;br /&gt;
Programul citește de la tastatură numărul &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt; n&amp;lt;/span&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Date de ieșire==&lt;br /&gt;
Dacă datele sunt introduse corect, pe ecran se va afișa: &#039;&#039;&#039;&amp;quot;Date de intrare valide.&amp;quot;&#039;&#039;&#039;, apoi programul va afișa pe ecran rombul cerut. În cazul în care datele nu respectă restricțiile, se va afișa pe ecran: &#039;&#039;&#039;&amp;quot;Date de intrare invalide&amp;quot;.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Restricții și precizări==&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt; 1 ≤ n ≤ 10&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Exemplu:==&lt;br /&gt;
Intrare&lt;br /&gt;
&lt;br /&gt;
: 5&lt;br /&gt;
&lt;br /&gt;
Ieșire&lt;br /&gt;
&lt;br /&gt;
: Date de intrare valide&lt;br /&gt;
&amp;lt;nowiki&amp;gt;####*####&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;###***###&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;##*****##&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;#*******#&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*********&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;#*******#&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;##*****##&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;###***###&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;####*####&amp;lt;/nowiki&amp;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 validare(n):&lt;br /&gt;
    if not isinstance(n, int) or n &amp;lt; 1 or n &amp;gt; 10:&lt;br /&gt;
        print(&amp;quot;n trebuie sa fie un numar natural cu o cifra (1-10)&amp;quot;)&lt;br /&gt;
        return False&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def rezolvare(n):&lt;br /&gt;
    # prima jumatate&lt;br /&gt;
    for i in range(1, n + 1):&lt;br /&gt;
        # scriu n - i caractere #&lt;br /&gt;
        for j in range(n - i):&lt;br /&gt;
            print(&#039;#&#039;, end=&#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
        # scriu 2 * i - 1 carcatere *&lt;br /&gt;
        for j in range(2 * i - 1):&lt;br /&gt;
            print(&#039;*&#039;, end=&#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
        # scriu n - i carcatere #&lt;br /&gt;
        for j in range(n - i):&lt;br /&gt;
            print(&#039;#&#039;, end=&#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
        print()  # coboram pe linia urmatoare&lt;br /&gt;
&lt;br /&gt;
    # a doua jumatate&lt;br /&gt;
    for i in range(1, n):&lt;br /&gt;
        # scriu i caractere #&lt;br /&gt;
        for j in range(i):&lt;br /&gt;
            print(&#039;#&#039;, end=&#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
        # scriu 2 * n - 1 - 2 * i  carcatere *&lt;br /&gt;
        for j in range(2 * n - 1 - 2 * i):&lt;br /&gt;
            print(&#039;*&#039;, end=&#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
        # scriu i carctere #&lt;br /&gt;
        for j in range(i):&lt;br /&gt;
            print(&#039;#&#039;, end=&#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
        print()&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    n = int(input(&amp;quot;Introduceti un numar natural intre 1 si 10: &amp;quot;))&lt;br /&gt;
    if validare(n):&lt;br /&gt;
        print(&amp;quot;Date de intrare valide&amp;quot;)&lt;br /&gt;
        rezolvare(n)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
==Explicatie cod:==&lt;br /&gt;
Funcția validare(n) verifică dacă valoarea n este un număr natural cu o singură cifră, adică între 1 și 10. Dacă valoarea n respectă această restricție, funcția returnează True. În caz contrar, se afișează un mesaj de eroare și funcția returnează False.&lt;br /&gt;
Funcția rezolvare(n) construiește și afișează piramida formată din caractere # și * folosind două bucle for. Prima buclă for parcurge de la 1 până la n și afișează rândurile superioare ale piramidei. Pe fiecare rând, se afișează un număr specific de caractere #, urmat de o secvență de caractere *, apoi din nou un număr de caractere #. A doua buclă for afișează partea inferioară a piramidei, inversând procesul pentru caracterele #, * și din nou #.&lt;br /&gt;
În blocul if __name__ == &#039;__main__&#039;:, se citește valoarea n de la utilizator folosind funcția input() și se validează această valoare utilizând funcția validare(n). Dacă valoarea introdusă este validă, se afișează un mesaj de confirmare și se apelează funcția rezolvare(n) pentru a afișa piramida corespunzătoare. Dacă valoarea introdusă nu este validă, se afișează un mesaj de eroare.&lt;/div&gt;</summary>
		<author><name>Paul Ungur</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=1393_-_Desen_Romb&amp;diff=6837</id>
		<title>1393 - Desen Romb</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=1393_-_Desen_Romb&amp;diff=6837"/>
		<updated>2023-06-29T18:33:13Z</updated>

		<summary type="html">&lt;p&gt;Paul Ungur: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Cerința==&lt;br /&gt;
Se citește un număr natural &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;n&amp;lt;/span&amp;gt; cu o cifră. Afișați pe ecran o figură sub forma de romb formata cu numerele naturale de la &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;1&amp;lt;/span&amp;gt; la &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;n&amp;lt;/span&amp;gt;, ca în exemplu.&lt;br /&gt;
&lt;br /&gt;
==Date de intrare==&lt;br /&gt;
Programul citește de la tastatură numărul &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;n&amp;lt;/span&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Date de ieșire==&lt;br /&gt;
Dacă datele sunt introduse corect, pe ecran se va afișa: &#039;&#039;&#039;&amp;quot;Date de intrare valide.&amp;quot;&#039;&#039;&#039;, apoi programul va afișa pe ecran un romb ce conține numerele naturale de la &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;1&amp;lt;/span&amp;gt; la &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;n&amp;lt;/span&amp;gt; În cazul în care datele nu respectă restricțiile, se va afișa pe ecran: &#039;&#039;&#039;&amp;quot;Date de intrare invalide&amp;quot;.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Restricții și precizări==&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;1 ≤n ≤9&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Exemplu:==&lt;br /&gt;
Intrare&lt;br /&gt;
: 5&lt;br /&gt;
&lt;br /&gt;
Ieșire&lt;br /&gt;
: Date de intrare valide&lt;br /&gt;
    1&lt;br /&gt;
   222&lt;br /&gt;
  33333&lt;br /&gt;
 4444444&lt;br /&gt;
555555555&lt;br /&gt;
 4444444&lt;br /&gt;
  33333&lt;br /&gt;
   222&lt;br /&gt;
    1&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 validare(n):&lt;br /&gt;
    if not isinstance(n, int) or n &amp;lt; 1 or n &amp;gt; 9:&lt;br /&gt;
        print(&amp;quot;n trebuie sa fie un numar natural cu o cifra (1-9)&amp;quot;)&lt;br /&gt;
        return False&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
def rezolvare(n):&lt;br /&gt;
    for i in range(1, n + 1):&lt;br /&gt;
        # pe linia i scriu n - i spatii&lt;br /&gt;
        for j in range(1, n - i + 1):&lt;br /&gt;
            print(&#039; &#039;, end=&#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
        # mai scriu 2 * i - 1 valori de i&lt;br /&gt;
        for j in range(1, 2 * i):&lt;br /&gt;
            print(i, end=&#039;&#039;)&lt;br /&gt;
        print()&lt;br /&gt;
&lt;br /&gt;
    for i in range(1, n):&lt;br /&gt;
        # scriem i spatii pe linia i&lt;br /&gt;
        for j in range(1, i + 1):&lt;br /&gt;
            print(&#039; &#039;, end=&#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
        for j in range(1, 2 * (n - i)):&lt;br /&gt;
            print(n - i, end=&#039;&#039;)&lt;br /&gt;
        print()&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    n = int(input(&amp;quot;Introduceti un numar natural cu o cifra: &amp;quot;))&lt;br /&gt;
    if validare(n):&lt;br /&gt;
        print(&amp;quot;Date de intrare valide&amp;quot;)&lt;br /&gt;
        rezolvare(n)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
==Explicatie cod:==&lt;br /&gt;
Funcția validare(n) verifică dacă valoarea n este un număr natural cu o singură cifră, adică între 1 și 9. Dacă valoarea n respectă această restricție, funcția returnează True. În caz contrar, se afișează un mesaj de eroare și funcția returnează False.&lt;br /&gt;
Funcția rezolvare(n) construiește și afișează piramida numerică specială folosind două bucle for. Prima buclă for parcurge de la 1 până la n și afișează rândurile piramidei. Pe fiecare rând, se afișează un număr specific de spații, urmat de o secvență de cifre consecutive până la valoarea i. A doua buclă for afișează partea inferioară a piramidei, inversând procesul pentru spații și cifre.&lt;br /&gt;
În blocul if __name__ == &#039;__main__&#039;:, se citește valoarea n de la utilizator folosind funcția input() și se validează această valoare utilizând funcția validare(n). Dacă valoarea introdusă este validă, se afișează un mesaj de confirmare și se apelează funcția rezolvare(n) pentru a afișa piramida numerică corespunzătoare. Dacă valoarea introdusă nu este validă, se afișează un mesaj de eroare.&lt;/div&gt;</summary>
		<author><name>Paul Ungur</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=1564_-_Triunghi_Dublu&amp;diff=6836</id>
		<title>1564 - Triunghi Dublu</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=1564_-_Triunghi_Dublu&amp;diff=6836"/>
		<updated>2023-06-29T18:32:23Z</updated>

		<summary type="html">&lt;p&gt;Paul Ungur: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Cerința==&lt;br /&gt;
Se dă un număr  &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;n&amp;lt;/span&amp;gt;. Afișați figura din exemplu.&lt;br /&gt;
&lt;br /&gt;
==Date de intrare==&lt;br /&gt;
Programul citește de la tastatură numărul  &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;n&amp;lt;/span&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Date de ieșire==&lt;br /&gt;
Dacă datele sunt introduse corect, pe ecran se va afișa: &#039;&#039;&#039;&amp;quot;Date de intrare valide.&amp;quot;&#039;&#039;&#039;, apoi programul va afișa pe ecran figura. În cazul în care datele nu respectă restricțiile, se va afișa pe ecran: &#039;&#039;&#039;&amp;quot;Date de intrare invalide&amp;quot;.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Restricții și precizări==&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;1 ≤ n ≤ 10&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Exemplu:==&lt;br /&gt;
Intrare&lt;br /&gt;
&lt;br /&gt;
: 5&lt;br /&gt;
&lt;br /&gt;
Ieșire&lt;br /&gt;
: Date de intrare valide &lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;**&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;***&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;****&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*****&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;**&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;***&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;****&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*****&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Explicație==&lt;br /&gt;
S-au afișat 2 triunghiuri, formate din 15 steluțe fiecare.&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 validare(n):&lt;br /&gt;
    if 1 &amp;lt;= n &amp;lt;= 10:&lt;br /&gt;
        return True&lt;br /&gt;
    else:&lt;br /&gt;
        return False&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def afisare_triunghi(n):&lt;br /&gt;
    for i in range(1, n + 1):&lt;br /&gt;
        for j in range(1, i + 1):&lt;br /&gt;
            print(&#039;*&#039;, end=&#039;&#039;)&lt;br /&gt;
        print()&lt;br /&gt;
&lt;br /&gt;
    for i in range(1, n + 1):&lt;br /&gt;
        for j in range(1, 2 * n + 1):&lt;br /&gt;
            if j &amp;gt;= n + i:&lt;br /&gt;
                print(&#039;*&#039;, end=&#039;&#039;)&lt;br /&gt;
            else:&lt;br /&gt;
                print(&#039; &#039;, end=&#039;&#039;)&lt;br /&gt;
        print()&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    n = int(input(&amp;quot;Introduceti un numar: &amp;quot;))&lt;br /&gt;
    if validare(n):&lt;br /&gt;
        print(&amp;quot;Date de intrare valide&amp;quot;)&lt;br /&gt;
        afisare_triunghi(n)&lt;br /&gt;
    else:&lt;br /&gt;
        print(&amp;quot;Date de intrare invalide&amp;quot;)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
==Explicatie cod:==&lt;br /&gt;
Funcția validare(n) verifică dacă valoarea n se află în intervalul [1, 10]. Dacă valoarea n respectă restricțiile, funcția returnează True. În caz contrar, returnează False.&lt;br /&gt;
Funcția afisare_triunghi(n) afișează triunghiul format din caractere &amp;quot;&amp;quot; utilizând două bucle for. Prima buclă for parcurge de la 1 până la n și afișează un triunghi format din &amp;quot;&amp;quot;. A doua buclă for parcurge de la 1 până la n și afișează restul triunghiului prin afișarea spațiilor și a &amp;quot;*&amp;quot; în funcție de poziția celulei.&lt;br /&gt;
În blocul if __name__ == &#039;__main__&#039;:, se citște valoarea n de la utilizator folosind funcția input() și se validează această valoare utilizând funcția validare(n). Dacă valoarea introdusă este validă, se afișează un mesaj de confirmare și se apelează funcția afisare_triunghi(n) pentru a afișa triunghiul corespunzător. Dacă valoarea introdusă nu este validă, se afișează un mesaj de eroare.&lt;/div&gt;</summary>
		<author><name>Paul Ungur</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=2574_-_Val_1&amp;diff=6835</id>
		<title>2574 - Val 1</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=2574_-_Val_1&amp;diff=6835"/>
		<updated>2023-06-29T18:31:34Z</updated>

		<summary type="html">&lt;p&gt;Paul Ungur: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Cerința==&lt;br /&gt;
Se citeste &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;n și m&amp;lt;/span&amp;gt;. Să se reprezinte următoarea diagramă în funcție de &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;n și m&amp;lt;/span&amp;gt;, în care &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;n&amp;lt;/span&amp;gt; reprezintă înălțimea, iar &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;m&amp;lt;/span&amp;gt; numărul de valuri care compun diagrama. Diagrama este formată din caractere &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;0&amp;lt;/span&amp;gt;, interiorul și exteriorul valurilor sunt alcătuite din caractere &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;_&amp;lt;/span&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Date de intrare==&lt;br /&gt;
Programul citește numerele &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;n m&amp;lt;/span&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Date de ieșire==&lt;br /&gt;
Dacă datele sunt introduse corect, pe ecran se va afișa: &#039;&#039;&#039;&amp;quot;Date de intrare valide.&amp;quot;&#039;&#039;&#039;, apoi programul va afișa o diagrama cerută. În cazul în care datele nu respectă restricțiile, se va afișa pe ecran: &#039;&#039;&#039;&amp;quot;Date de intrare invalide&amp;quot;.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Restricții și precizări==&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;1 ≤ n ≤ m ≤ 20&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Exemplul 1:==&lt;br /&gt;
Intrare&lt;br /&gt;
: 5 4&lt;br /&gt;
&lt;br /&gt;
Ieșire&lt;br /&gt;
: Date de intrare valide&lt;br /&gt;
&lt;br /&gt;
__0_0_____0_0_____0_0_____0_0___&lt;br /&gt;
&lt;br /&gt;
_0___0___0___0___0___0___0___0__&lt;br /&gt;
&lt;br /&gt;
_0___0___0___0___0___0___0___0__&lt;br /&gt;
&lt;br /&gt;
_0___0___0___0___0___0___0___0__&lt;br /&gt;
&lt;br /&gt;
0_____0_0_____0_0_____0_0_____0_&lt;br /&gt;
&lt;br /&gt;
Exemplul 2:&lt;br /&gt;
&lt;br /&gt;
Intrare&lt;br /&gt;
&lt;br /&gt;
6 8&lt;br /&gt;
&lt;br /&gt;
Ieșire&lt;br /&gt;
&lt;br /&gt;
__0_0_____0_0_____0_0_____0_0_____0_0_____0_0_____0_0_____0_0___&lt;br /&gt;
&lt;br /&gt;
_0___0___0___0___0___0___0___0___0___0___0___0___0___0___0___0__&lt;br /&gt;
&lt;br /&gt;
_0___0___0___0___0___0___0___0___0___0___0___0___0___0___0___0__&lt;br /&gt;
&lt;br /&gt;
_0___0___0___0___0___0___0___0___0___0___0___0___0___0___0___0__&lt;br /&gt;
&lt;br /&gt;
_0___0___0___0___0___0___0___0___0___0___0___0___0___0___0___0__&lt;br /&gt;
&lt;br /&gt;
0_____0_0_____0_0_____0_0_____0_0_____0_0_____0_0_____0_0_____0_&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 validare(n, m):&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    Functie care verifica daca valorile citite pentru n si m respecta restrictiile problemei.&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    if not (1 &amp;lt;= n &amp;lt;= 20 and 1 &amp;lt;= m &amp;lt;= 20):&lt;br /&gt;
        print(&amp;quot;Date de intrare incorecte!&amp;quot;)&lt;br /&gt;
        exit()&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def rezolvare(n, m):&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    Functie care construieste si afiseaza figura ceruta in functie de valorile lui n si m.&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    # initializam matricea cu caractere &amp;quot;_&amp;quot;&lt;br /&gt;
    for j in range(1, n + 1):&lt;br /&gt;
        for i in range(1, 8 * m + 1):&lt;br /&gt;
            if j == 1:&lt;br /&gt;
                if i % 8 == 3 or i % 8 == 5:&lt;br /&gt;
                    print(&#039;0&#039;, end=&#039;&#039;)&lt;br /&gt;
                else:&lt;br /&gt;
                    print(&#039;_&#039;, end=&#039;&#039;)&lt;br /&gt;
            elif j == n:&lt;br /&gt;
                if i % 8 == 1 or i % 8 == 7:&lt;br /&gt;
                    print(&#039;0&#039;, end=&#039;&#039;)&lt;br /&gt;
                else:&lt;br /&gt;
                    print(&#039;_&#039;, end=&#039;&#039;)&lt;br /&gt;
            else:&lt;br /&gt;
                if i % 8 == 2 or i % 8 == 6:&lt;br /&gt;
                    print(&#039;0&#039;, end=&#039;&#039;)&lt;br /&gt;
                else:&lt;br /&gt;
                    print(&#039;_&#039;, 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;
    # citim valorile n si m&lt;br /&gt;
    n, m = map(int, input().split())&lt;br /&gt;
    # validam datele de intrare&lt;br /&gt;
    if validare(n, m):&lt;br /&gt;
        print(&amp;quot;Date de intrare valide&amp;quot;)&lt;br /&gt;
        # rezolvam problema si afisam rezultatul&lt;br /&gt;
        rezolvare(n, m)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
==Explicatie cod:==&lt;br /&gt;
Funcția validare(n, m) verifică dacă valorile n și m respectă restricțiile problemei. Verifică dacă n și m se află în intervalul [1, 20]. Dacă valorile nu respectă restricțiile, se afișează un mesaj de eroare și programul se încheie folosind funcția exit().&lt;br /&gt;
Funcția rezolvare(n, m) construiește și afișează figura cerută în funcție de valorile n și m. Folosind două bucle for, se parcurg rândurile și coloanele figurii. Fiecare celulă a figurii este afișată ca un caracter &amp;quot;_&amp;quot; sau &amp;quot;0&amp;quot; în funcție de poziția sa în figură.&lt;br /&gt;
În blocul if __name__ == &amp;quot;__main__&amp;quot;:, se citesc valorile n și m de la utilizator folosind funcția input() și se validează aceste date utilizând funcția validare(n, m). Dacă valorile introduse sunt valide, se afișează un mesaj de confirmare și se apelează funcția rezolvare(n, m) pentru a construi și afișa figura. Dacă valorile introduse nu sunt valide, se afișează un mesaj de eroare.&lt;/div&gt;</summary>
		<author><name>Paul Ungur</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=1569_-_Scara_Numerelor&amp;diff=6834</id>
		<title>1569 - Scara Numerelor</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=1569_-_Scara_Numerelor&amp;diff=6834"/>
		<updated>2023-06-29T18:30:34Z</updated>

		<summary type="html">&lt;p&gt;Paul Ungur: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Cerința==&lt;br /&gt;
Se citește un număr natural &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;n&amp;lt;/span.. Să se afișeze o figură similară cu cea din exemplu.&lt;br /&gt;
&lt;br /&gt;
==Date de intrare==&lt;br /&gt;
Programul citește de la tastatură numărul &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;n&amp;lt;/span&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Date de ieșire==&lt;br /&gt;
Dacă datele sunt introduse corect, pe ecran se va afișa: &#039;&#039;&#039;&amp;quot;Date de intrare valide.&amp;quot;&#039;&#039;&#039;, apoi programul va afișa figura, similar cu exemplul. În cazul în care datele nu respectă restricțiile, se va afișa pe ecran: &#039;&#039;&#039;&amp;quot;Date de intrare invalide&amp;quot;.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Restricții și precizări==&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;1 ≤ n ≤ 9&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Exemplu:==&lt;br /&gt;
Intrare&lt;br /&gt;
&lt;br /&gt;
: 3&lt;br /&gt;
&lt;br /&gt;
Ieșire&lt;br /&gt;
: Date de intrare valide&lt;br /&gt;
: 1&lt;br /&gt;
&lt;br /&gt;
: 22&lt;br /&gt;
&lt;br /&gt;
: 22&lt;br /&gt;
&lt;br /&gt;
: 333&lt;br /&gt;
&lt;br /&gt;
: 333&lt;br /&gt;
&lt;br /&gt;
: 333&lt;br /&gt;
&lt;br /&gt;
==Explicație==&lt;br /&gt;
Cifra &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;1&amp;lt;/span&amp;gt; s-a afisat o singura data, pe un singur rand. Cifra &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;2&amp;lt;/span&amp;gt; s-a afista de 2 ori, pe 2 randuri. Cifra &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;3&amp;lt;/span&amp;gt; s-a afisat de 3 ori, pe 3 randuri.&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 validare_date(n):&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    Verifică dacă numărul n este între 1 și 9.&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    if 1 &amp;lt;= n &amp;lt;= 9:&lt;br /&gt;
        return True&lt;br /&gt;
    else:&lt;br /&gt;
        print(&amp;quot;Numărul trebuie să fie între 1 și 9.&amp;quot;)&lt;br /&gt;
        return False&lt;br /&gt;
&lt;br /&gt;
def print_figure(n):&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    Afișează cifrele de la 1 la n pe câte n rânduri.&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    for i in range(1, n + 1):&lt;br /&gt;
        for j in range(1, i + 1):&lt;br /&gt;
            for k in range(1, i + 1):&lt;br /&gt;
                print(i, 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 = int(input(&amp;quot;Introduceți un număr natural n: &amp;quot;))&lt;br /&gt;
    if validare_date(n):&lt;br /&gt;
        print(&amp;quot;Date de intrare valide&amp;quot;)&lt;br /&gt;
        print_figure(n)&lt;br /&gt;
    else:&lt;br /&gt;
        print(&amp;quot;Date de intrare invalide&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
==Explicatie cod:==&lt;br /&gt;
Funcția validare_date(n) verifică dacă valoarea n este un număr valid pentru a rezolva problema dată. Verifică dacă n se află în intervalul [1, 9]. Dacă este în intervalul valid, funcția returnează True. În caz contrar, se afișează un mesaj de eroare și funcția returnează False.&lt;br /&gt;
Funcția print_figure(n) rezolvă problema și afișează cifrele de la 1 la n într-un model specific. Funcția utilizează trei bucle for pentru a controla afișarea în modelul dorit. Cu fiecare iterație, se afișează rândul respectiv de cifre. La fiecare iterație a celei de-a doua bucle for, se afișează valoarea cifrei i de i ori, iar la fiecare iterație a celei de-a treia bucle for, se afișează numărul i pe un rând nou.&lt;br /&gt;
În blocul if __name__ == &amp;quot;__main__&amp;quot;:, se citește valoarea n de la utilizator utilizând funcția input() și se verifică dacă valoarea introdusă este validă utilizând funcția validare_date(n). Dacă nu este validă, se afișează un mesaj de eroare și se cere introducerea unei valori valide. Dacă valoarea introdusă este validă, se apelează funcția print_figure(n) pentru a rezolva problema și a afișa cifrele în modelul specific.&lt;/div&gt;</summary>
		<author><name>Paul Ungur</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=1630_-_Morisca&amp;diff=6833</id>
		<title>1630 - Morisca</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=1630_-_Morisca&amp;diff=6833"/>
		<updated>2023-06-29T18:29:21Z</updated>

		<summary type="html">&lt;p&gt;Paul Ungur: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Cerința==&lt;br /&gt;
Se dă un număr &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;n&amp;lt;/span&amp;gt;. Afișați figura din exemplu.&lt;br /&gt;
&lt;br /&gt;
==Date de intrare==&lt;br /&gt;
Programul citește de la tastatură numărul &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;n&amp;lt;/span&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Date de ieșire==&lt;br /&gt;
Dacă datele sunt introduse corect, pe ecran se va afișa: &#039;&#039;&#039;&amp;quot;Date de intrare valide.&amp;quot;&#039;&#039;&#039;, apoi programul va afișa pe ecran figura. În cazul în care datele nu respectă restricțiile, se va afișa pe ecran: &#039;&#039;&#039;&amp;quot;Date de intrare invalide&amp;quot;.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Restricții și precizări==&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;1 ≤ n ≤ 10&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Exemplu:==&lt;br /&gt;
Intrare&lt;br /&gt;
&lt;br /&gt;
: 4&lt;br /&gt;
&lt;br /&gt;
Ieșire&lt;br /&gt;
: Date de intrare valide&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;          *&lt;br /&gt;
&amp;lt;nowiki&amp;gt;**&amp;lt;/nowiki&amp;gt;        **&lt;br /&gt;
&amp;lt;nowiki&amp;gt;***&amp;lt;/nowiki&amp;gt;      ***&lt;br /&gt;
&amp;lt;nowiki&amp;gt;****&amp;lt;/nowiki&amp;gt;    ****&lt;br /&gt;
&amp;lt;nowiki/&amp;gt;****&lt;br /&gt;
&amp;lt;nowiki/&amp;gt;****&lt;br /&gt;
&amp;lt;nowiki/&amp;gt;**** &lt;br /&gt;
&amp;lt;nowiki/&amp;gt;****&lt;br /&gt;
&amp;lt;nowiki&amp;gt;****&amp;lt;/nowiki&amp;gt;    ****&lt;br /&gt;
&amp;lt;nowiki&amp;gt;***&amp;lt;/nowiki&amp;gt;      ***&lt;br /&gt;
&amp;lt;nowiki&amp;gt;**&amp;lt;/nowiki&amp;gt;        **&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;          *&lt;br /&gt;
==Explicație==&lt;br /&gt;
S-au afișat 4 triunghiuri și un pătrat, figuri formate din caracterul steluță.&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 validare(n):&lt;br /&gt;
    if n &amp;lt; 1 or n &amp;gt; 10:&lt;br /&gt;
        print(&amp;quot;Valoarea introdusa pentru n este incorecta!&amp;quot;)&lt;br /&gt;
        return False&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
def rezolvare(n):&lt;br /&gt;
    # Prima parte a figurii&lt;br /&gt;
    for i in range(1, n + 1):&lt;br /&gt;
        for j in range(1, i + 1):&lt;br /&gt;
            print(&#039;*&#039;, end=&#039;&#039;)&lt;br /&gt;
        for k in range(1, n * 3 - i * 2 + 1):&lt;br /&gt;
            print(&#039; &#039;, end=&#039;&#039;)&lt;br /&gt;
        for f in range(1, i + 1):&lt;br /&gt;
            print(&#039;*&#039;, end=&#039;&#039;)&lt;br /&gt;
        print()&lt;br /&gt;
&lt;br /&gt;
    # A doua parte a figurii&lt;br /&gt;
    for i in range(1, n + 1):&lt;br /&gt;
        for j in range(1, n + 1):&lt;br /&gt;
            print(&#039; &#039;, end=&#039;&#039;)&lt;br /&gt;
        for k in range(1, n + 1):&lt;br /&gt;
            print(&#039;*&#039;, end=&#039;&#039;)&lt;br /&gt;
        print()&lt;br /&gt;
&lt;br /&gt;
    # A treia parte a figurii&lt;br /&gt;
    for i in range(n, 0, -1):&lt;br /&gt;
        for j in range(1, i + 1):&lt;br /&gt;
            print(&#039;*&#039;, end=&#039;&#039;)&lt;br /&gt;
        for k in range(1, n * 3 - i * 2 + 1):&lt;br /&gt;
            print(&#039; &#039;, end=&#039;&#039;)&lt;br /&gt;
        for f in range(1, i + 1):&lt;br /&gt;
            print(&#039;*&#039;, end=&#039;&#039;)&lt;br /&gt;
        print()&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    n = int(input(&amp;quot;Introduceti valoarea pentru n: &amp;quot;))&lt;br /&gt;
    if validare(n):&lt;br /&gt;
        print(&amp;quot;Date de intrare valide&amp;quot;)&lt;br /&gt;
        rezolvare(n)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
==Explicatie cod:==&lt;br /&gt;
Funcția validare(n) verifică dacă valoarea n este un număr valid pentru a rezolva problema dată. Verifică dacă n este mai mic decât 1 sau mai mare decât 10. Dacă nu este valid, se afișează un mesaj de eroare și funcția returnează False. În caz contrar, funcția returnează True.&lt;br /&gt;
Funcția rezolvare(n) rezolvă problema și afișează figura compusă din caracterele * și spații. Aceasta constă în trei părți distincte:&lt;br /&gt;
Prima parte a figurii: Afișează o secțiune în formă de triunghi în care linia i are i caractere *, urmate de spații și apoi încă i caractere *.&lt;br /&gt;
A doua parte a figurii: Afișează o secțiune de n linii, fiecare linie conținând n caractere *. Aceasta reprezintă o secțiune cu spații goale între cele două părți ale figurii.&lt;br /&gt;
A treia parte a figurii: Afișează o secțiune similară primei părți a figurii, dar inversată, astfel încât linia i are i caractere * la început, urmate de spații și apoi încă i caractere *.&lt;br /&gt;
În blocul if __name__ == &#039;__main__&#039;:, se citește valoarea n de la utilizator utilizând funcția input() și se verifică dacă valoarea introdusă este validă utilizând funcția validare(n). Dacă nu este validă, se afișează un mesaj de eroare și se cere introducerea unei valori valide. Dacă valoarea introdusă este validă, se apelează funcția rezolvare(n) pentru a rezolva problema și a afișa figura compusă.&lt;/div&gt;</summary>
		<author><name>Paul Ungur</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=1376_-_Laturi_Triunghi&amp;diff=6832</id>
		<title>1376 - Laturi Triunghi</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=1376_-_Laturi_Triunghi&amp;diff=6832"/>
		<updated>2023-06-29T18:25:10Z</updated>

		<summary type="html">&lt;p&gt;Paul Ungur: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Cerința==&lt;br /&gt;
Se dă &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt; n&amp;lt;/span&amp;gt;. Afișați un triunghi cu latura de &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt; n&amp;lt;/span&amp;gt; steluțe gol înăuntru.&lt;br /&gt;
&lt;br /&gt;
==Date de intrare==&lt;br /&gt;
Se va citi de la tastatură numărul &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt; n&amp;lt;/span&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Date de ieșire==&lt;br /&gt;
Dacă datele sunt introduse corect, pe ecran se va afișa: &#039;&#039;&#039;&amp;quot;Date de intrare valide.&amp;quot;&#039;&#039;&#039;, apoi se va afișa triunghiul cerut. În cazul în care datele nu respectă restricțiile, se va afișa pe ecran: &#039;&#039;&#039;&amp;quot;Date de intrare invalide&amp;quot;.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Restricții și precizări==&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt; 1 ≤ n ≤ 10&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Exemplu:==&lt;br /&gt;
Intrare&lt;br /&gt;
&lt;br /&gt;
: 5&lt;br /&gt;
Ieșire&lt;br /&gt;
: Date de intrare valide&lt;br /&gt;
    *&lt;br /&gt;
   * *&lt;br /&gt;
  *   *&lt;br /&gt;
 *     *&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 validare_date(n):&lt;br /&gt;
    if not n.isdigit():&lt;br /&gt;
        return False&lt;br /&gt;
    n = int(n)&lt;br /&gt;
    if n &amp;lt; 1 or n &amp;gt; 10:&lt;br /&gt;
        return False&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def afisare_triunghi(n):&lt;br /&gt;
    margine = &#039;*&#039;&lt;br /&gt;
    liber = &#039; &#039;&lt;br /&gt;
    start = 2&lt;br /&gt;
    baza = 4&lt;br /&gt;
    for temp in range(start, n + 1):&lt;br /&gt;
        for temp2 in range(0, n - temp + 1):&lt;br /&gt;
            print(liber, end=&amp;quot;&amp;quot;)&lt;br /&gt;
        if temp &amp;gt; start:&lt;br /&gt;
            print(margine + &amp;quot; &amp;quot;, end=&amp;quot;&amp;quot;)&lt;br /&gt;
            for temp3 in range(baza, temp + 1):&lt;br /&gt;
                print(liber + &amp;quot; &amp;quot;, end=&amp;quot;&amp;quot;)&lt;br /&gt;
        print(margine + &amp;quot; &amp;quot;)&lt;br /&gt;
    for temp4 in range(baza, n + baza):&lt;br /&gt;
        print(margine + &amp;quot; &amp;quot;, end=&amp;quot;&amp;quot;)&lt;br /&gt;
    print()&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    n = input(&amp;quot;Introduceti numarul n: &amp;quot;)&lt;br /&gt;
    while not validare_date(n):&lt;br /&gt;
        n = input(&amp;quot;Valoarea introdusa nu este valida. Introduceti un numar intre 1 si 10: &amp;quot;)&lt;br /&gt;
    if validare_date(n):&lt;br /&gt;
        print(&amp;quot;Date de intrare valide&amp;quot;)&lt;br /&gt;
        n = int(n)&lt;br /&gt;
        afisare_triunghi(n)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
==Explicatie cod:==&lt;br /&gt;
Funcția validare_date(n) verifică dacă valoarea n este un număr valid pentru a rezolva problema dată. Verifică dacă n este un șir de caractere numeric (isdigit()) și apoi îl converteste într-un număr întreg (int(n)). Dacă n nu este un număr întreg sau dacă este mai mic decât 1 sau mai mare decât 10, funcția returnează False. În caz contrar, returnează True.&lt;br /&gt;
Funcția afisare_triunghi(n) rezolvă problema dată și afișează un triunghi cu lățimea n. Folosește variabilele margine, liber, start și baza pentru a defini caracterele utilizate pentru afișare. Utilizează două bucle for pentru a itera prin rândurile triunghiului. În interiorul acestor bucle, utilizează alte bucle pentru a afișa caracterele corespunzătoare în fiecare rând. La final, afișează baza triunghiului prin repetarea caracterului margine de n+baza ori.&lt;br /&gt;
În blocul if __name__ == &#039;__main__&#039;:, se citește input-ul de la utilizator utilizând funcția input(). Se verifică dacă valoarea introdusă este validă utilizând funcția validare_date(n). Dacă nu este validă, se afișează un mesaj de eroare și se cere introducerea unei valori valide. Dacă valoarea introdusă este validă, se apelează funcția afisare_triunghi(n) pentru a rezolva problema și a afișa triunghiul.&lt;/div&gt;</summary>
		<author><name>Paul Ungur</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=2699_-_Puterile_Lui_N&amp;diff=6831</id>
		<title>2699 - Puterile Lui N</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=2699_-_Puterile_Lui_N&amp;diff=6831"/>
		<updated>2023-06-29T18:24:08Z</updated>

		<summary type="html">&lt;p&gt;Paul Ungur: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Date de intrare==&lt;br /&gt;
Programul citește de la tastatură numerele &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;n&amp;lt;/span&amp;gt;, și &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;p&amp;lt;/span&amp;gt;, separate prin spații.&lt;br /&gt;
&lt;br /&gt;
==Date de ieșire==&lt;br /&gt;
Dacă datele sunt introduse corect, pe ecran se va afișa: &#039;&#039;&#039;&amp;quot;Date de intrare valide.&amp;quot;&#039;&#039;&#039;, apoi programul va afișa pe ecran în ordine crescătoare, toate puterile lui &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;n&amp;lt;/span&amp;gt; mai mici sau egale cu &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;p&amp;lt;/span&amp;gt;, separate prin exact un spațiu. În cazul în care datele nu respectă restricțiile, se va afișa pe ecran: &#039;&#039;&#039;&amp;quot;Date de intrare invalide&amp;quot;.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Restricții și precizări ==&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;2 ≤ n ≤ 10&lt;br /&gt;
1 ≤ p ≤ 1.000.000.000.000&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Exemplu: ==&lt;br /&gt;
Intrare&lt;br /&gt;
&lt;br /&gt;
: 4 120&lt;br /&gt;
Ieșire&lt;br /&gt;
: Date de intrare valide&lt;br /&gt;
: 1 4 16 64&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 validare_date(n: int, p: int) -&amp;gt; bool:&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    Functia de validare pentru input.&lt;br /&gt;
    Verifica daca n este intre 2 si 10 si daca p este intre 1 si 1.000.000.000.000.&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    if not (2 &amp;lt;= n &amp;lt;= 10):&lt;br /&gt;
        print(&amp;quot;n trebuie sa fie intre 2 si 10.&amp;quot;)&lt;br /&gt;
        return False&lt;br /&gt;
    if not (1 &amp;lt;= p &amp;lt;= 10**12):&lt;br /&gt;
        print(&amp;quot;p trebuie sa fie intre 1 si 1.000.000.000.000.&amp;quot;)&lt;br /&gt;
        return False&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def puterea_lui_n(n: int, p: int):&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    Functia de rezolvare pentru exercitiul dat.&lt;br /&gt;
    Returneaza un string cu toate puterile lui n mai mici sau egale cu p, separate prin exact un spatiu.&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    puteri = []&lt;br /&gt;
    i = 0&lt;br /&gt;
    while n ** i &amp;lt;= p:&lt;br /&gt;
        puteri.append(n ** i)&lt;br /&gt;
        i += 1&lt;br /&gt;
    print(&#039; &#039;.join(map(str, puteri)))&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    Functia if __name__ care citeste datele de intrare, verifica validitatea lor si afiseaza rezultatul.&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    n, p = map(int, input().split())&lt;br /&gt;
    if validare_date(n, p):&lt;br /&gt;
        print(&amp;quot;Date de intrare valide&amp;quot;)&lt;br /&gt;
        puterea_lui_n(n, p)&lt;br /&gt;
    else:&lt;br /&gt;
        print(&amp;quot;Date de intrare invalide&amp;quot;)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
==Explicatie cod:==&lt;br /&gt;
Funcția validare_date(n, p) verifică dacă valorile n și p sunt valide pentru a rezolva problema dată. Verifică dacă n este între 2 și 10, iar p este între 1 și 1.000.000.000.000. Dacă nu se îndeplinesc aceste condiții, returnează False. Altfel, returnează True.&lt;br /&gt;
Funcția puterea_lui_n(n, p) rezolvă problema dată. Utilizează o buclă while pentru a genera puterile lui n mai mici sau egale cu p. Adaugă fiecare putere la lista puteri și crește exponentul i cu 1 la fiecare iterație. La final, afișează elementele listei puteri, separate printr-un singur spațiu, utilizând funcția join() și funcția print().&lt;br /&gt;
În blocul if __name__ == &#039;__main__&#039;:, se citește input-ul de la utilizator utilizând funcția input(). Valorile citite sunt convertite în numere întregi utilizând funcția map(int, input().split()). Se verifică dacă valorile introduse sunt valide utilizând funcția validare_date(n, p). Dacă nu sunt valide, se afișează mesajul &amp;quot;Date de intrare invalide&amp;quot;. Dacă valorile introduse sunt valide, se apelează funcția puterea_lui_n(n, p) pentru a rezolva problema și a afișa rezultatul.&lt;/div&gt;</summary>
		<author><name>Paul Ungur</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=0458_-_Patrat_1&amp;diff=6830</id>
		<title>0458 - Patrat 1</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=0458_-_Patrat_1&amp;diff=6830"/>
		<updated>2023-06-29T18:22:00Z</updated>

		<summary type="html">&lt;p&gt;Paul Ungur: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Cerinţa:==&lt;br /&gt;
Se citește numărul natural impar &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;n&amp;lt;/span&amp;gt;, şi două caractere &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;c şi d&amp;lt;/span&amp;gt;. Să se afișeze următorul pătrat, format din &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;n&amp;lt;/span&amp;gt; linii şi &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;n&amp;lt;/span&amp;gt; coloane, în care cele două caractere alternează:&lt;br /&gt;
&lt;br /&gt;
cdc...dc&lt;br /&gt;
dcd...cd&lt;br /&gt;
....&lt;br /&gt;
dcd...cd&lt;br /&gt;
cdc...dc&lt;br /&gt;
&lt;br /&gt;
==Date de intrare:==&lt;br /&gt;
Programul citește de la tastatură numărul &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;n&amp;lt;/span&amp;gt; şi caracterele &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;c d &amp;lt;/span&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Date de ieşire:==&lt;br /&gt;
Dacă datele sunt introduse corect, pe ecran se va afișa: &#039;&#039;&#039;&amp;quot;Date de intrare valide.&amp;quot;&#039;&#039;&#039;, apoi programul afișează pe ecran pătratul descris mai sus. În cazul în care datele nu respectă restricțiile, se va afișa pe ecran: &#039;&#039;&#039;&amp;quot;Date de intrare invalide&amp;quot;.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Restricţii şi precizări==&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;1 ≤ n ≤ 19&lt;br /&gt;
c&amp;lt;/span&amp;gt; şi &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;d&amp;lt;/span&amp;gt; sunt caractere cu codul ASCII cuprins între &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;33 şi 126&amp;lt;/span&amp;gt;, inclusiv.&lt;br /&gt;
&lt;br /&gt;
==Exemplu:==&lt;br /&gt;
Intrare&lt;br /&gt;
: 5 * #&lt;br /&gt;
&lt;br /&gt;
Ieșire&lt;br /&gt;
: Date de intrare valide&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*#*#*&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;#*#*#&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*#*#*&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;#*#*#&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*#*#*&amp;lt;/nowiki&amp;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 validare_date(n, c, d):&lt;br /&gt;
    if n % 2 == 0 or not (33 &amp;lt;= ord(c) &amp;lt;= 126) or not (33 &amp;lt;= ord(d) &amp;lt;= 126):&lt;br /&gt;
        return False&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def construire_matrice(n, c, d):&lt;br /&gt;
    matrice = []&lt;br /&gt;
    for i in range(n):&lt;br /&gt;
        rand = []&lt;br /&gt;
        for j in range(n):&lt;br /&gt;
            if (i + j) % 2 == 0:&lt;br /&gt;
                rand.append(c)&lt;br /&gt;
            else:&lt;br /&gt;
                rand.append(d)&lt;br /&gt;
        matrice.append(rand)&lt;br /&gt;
    return matrice&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def print_matrix(matrice):&lt;br /&gt;
    for rand in matrice:&lt;br /&gt;
        print(&amp;quot;&amp;quot;.join(rand))&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    n = int(input(&amp;quot;Introduceti numarul de linii si coloane (impar): &amp;quot;))&lt;br /&gt;
    c = input(&amp;quot;Introduceti primul caracter: &amp;quot;)&lt;br /&gt;
    d = input(&amp;quot;Introduceti al doilea caracter: &amp;quot;)&lt;br /&gt;
    if validare_date(n, c, d):&lt;br /&gt;
        print(&amp;quot;Date de intrare valide&amp;quot;)&lt;br /&gt;
        matrice = construire_matrice(n, c, d)&lt;br /&gt;
        print_matrix(matrice)&lt;br /&gt;
    else:&lt;br /&gt;
        print(&amp;quot;Date de intrare invalide&amp;quot;)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
==Explicatie cod:==&lt;br /&gt;
Funcția validare_date(n, c, d) verifică dacă valorile n, c și d sunt valide pentru a construi o matrice. Verifică dacă n este un număr impar, și dacă caracterele c și d au coduri ASCII între 33 și 126. Dacă nu se îndeplinesc aceste condiții, returnează False. Altfel, returnează True.&lt;br /&gt;
Funcția construire_matrice(n, c, d) construiește o matrice cu n linii și coloane utilizând caracterele c și d. Folosește două bucle for pentru a itera prin rânduri și coloane. Pentru fiecare element al matricei, determină suma i + j a coordonatelor rândului și coloanei. Dacă suma este un număr par, se adaugă caracterul c în matrice, altfel se adaugă caracterul d. Matricea rezultată este returnată.&lt;br /&gt;
Funcția print_matrix(matrice) afișează conținutul matricei pe ecran. Folosește o buclă for pentru a itera prin rândurile matricei. Pentru fiecare rând, concatenează elementele și le afișează pe aceeași linie.&lt;br /&gt;
În blocul if __name__ == &#039;__main__&#039;:, se solicită utilizatorului să introducă numărul impar n, primul caracter c și al doilea caracter d. Se verifică dacă valorile introduse sunt valide utilizând funcția validare_date(n, c, d). Dacă nu sunt valide, se afișează mesajul &amp;quot;Date de intrare invalide&amp;quot;. Dacă valorile introduse sunt valide, se apelează funcția construire_matrice(n, c, d) pentru a construi matricea și se apelează funcția print_matrix(matrice) pentru a o afișa.&lt;/div&gt;</summary>
		<author><name>Paul Ungur</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=0457_-_Patrat&amp;diff=6829</id>
		<title>0457 - Patrat</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=0457_-_Patrat&amp;diff=6829"/>
		<updated>2023-06-29T18:20:58Z</updated>

		<summary type="html">&lt;p&gt;Paul Ungur: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Cerinţa:==&lt;br /&gt;
Se citește numărul natural &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;n&amp;lt;/span&amp;gt;, şi două caractere &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;c&amp;lt;/span&amp;gt; şi d. Să se afișeze următorul pătrat, format din &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;n&amp;lt;/span&amp;gt; linii şi &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;n&amp;lt;/span&amp;gt; coloane:&lt;br /&gt;
ccc...cc&lt;br /&gt;
cdd...dc&lt;br /&gt;
....&lt;br /&gt;
cdd...dc&lt;br /&gt;
ccc...cc&lt;br /&gt;
&lt;br /&gt;
==Date de intrare:==&lt;br /&gt;
Programul citește de la tastatură numărul &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;n&amp;lt;/span&amp;gt; şi caracterele &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;c d&amp;lt;/span&amp;gt; .&lt;br /&gt;
&lt;br /&gt;
==Date de ieşire:==&lt;br /&gt;
Dacă datele sunt introduse corect, pe ecran se va afișa: &#039;&#039;&#039;&amp;quot;Date de intrare valide.&amp;quot;&#039;&#039;&#039;, apoi programul afișează pe ecran pătratul descris mai sus. În cazul în care datele nu respectă restricțiile, se va afișa pe ecran: &#039;&#039;&#039;&amp;quot;Date de intrare invalide&amp;quot;.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Restricţii şi precizări:==&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;3 ≤ n ≤ 20&lt;br /&gt;
c&amp;lt;/span&amp;gt; şi d sunt caractere cu codul ASCII cuprins între &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;33 şi 126&amp;lt;/span&amp;gt;, inclusiv.&lt;br /&gt;
&lt;br /&gt;
==Exemplu:==&lt;br /&gt;
Intrare&lt;br /&gt;
&lt;br /&gt;
: 4 * #&lt;br /&gt;
&lt;br /&gt;
Ieșire&lt;br /&gt;
: Date de intrare valide&lt;br /&gt;
&amp;lt;nowiki&amp;gt;****&amp;lt;/nowiki&amp;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 validare_date(n: int, c: str, d: str) -&amp;gt; bool:&lt;br /&gt;
    if n &amp;lt; 3 or n &amp;gt; 20:&lt;br /&gt;
        print(&amp;quot;n trebuie sa fie intre 3 si 20&amp;quot;)&lt;br /&gt;
        return False&lt;br /&gt;
    if not (33 &amp;lt;= ord(c) &amp;lt;= 126) or not (33 &amp;lt;= ord(d) &amp;lt;= 126):&lt;br /&gt;
        print(&amp;quot;c si d trebuie sa fie caractere cu codul ASCII cuprins intre 33 si 126, inclusiv&amp;quot;)&lt;br /&gt;
        return False&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def construire_patrat(n: int, c: str, d: str) -&amp;gt; str:&lt;br /&gt;
    patrat = &amp;quot;&amp;quot;&lt;br /&gt;
    for i in range(n):&lt;br /&gt;
        if i == 0 or i == n - 1:&lt;br /&gt;
            row = c * n&lt;br /&gt;
        else:&lt;br /&gt;
            row = c + d * (n - 2) + c&lt;br /&gt;
        patrat += row + &amp;quot;\n&amp;quot;&lt;br /&gt;
    return patrat&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def afisare_patrat(patrat):&lt;br /&gt;
    print(patrat.strip())&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    n = int(input(&amp;quot;Introduceti numarul n: &amp;quot;))&lt;br /&gt;
    c = input(&amp;quot;Introduceti caracterul c: &amp;quot;)&lt;br /&gt;
    d = input(&amp;quot;Introduceti caracterul d: &amp;quot;)&lt;br /&gt;
    if validare_date(n, c, d):&lt;br /&gt;
        print(&amp;quot;Date de intrare valide&amp;quot;)&lt;br /&gt;
        patrat = construire_patrat(n, c, d)&lt;br /&gt;
        afisare_patrat(patrat)&lt;br /&gt;
    else:&lt;br /&gt;
        print(&amp;quot;Date de intrare invalide&amp;quot;)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
==Explicatie cod:==&lt;br /&gt;
Funcția validare_date(n, c, d) verifică dacă valorile n, c și d sunt valide pentru a construi un pătrat. Verifică dacă n se încadrează în intervalul [3, 20] și dacă caracterele c și d au coduri ASCII între 33 și 126. Dacă nu se îndeplinesc aceste condiții, afișează mesajele corespunzătoare și returnează False. Altfel, returnează True.&lt;br /&gt;
Funcția construire_patrat(n, c, d) construiește un șir de caractere care reprezintă un pătrat utilizând numărul n și caracterele c și d. Folosește o buclă for pentru a itera prin rândurile pătratului. Pentru rândurile de pe margine (primul și ultimul rând), se construiește un rând format din caracterul c repetat de n ori. Pentru celelalte rânduri, se construiește un rând format din caracterul c, apoi caracterul d repetat de n-2 ori, și în final caracterul c. Șirurile de caractere ale fiecărui rând sunt concatenate pentru a forma pătratul final.&lt;br /&gt;
Funcția afisare_patrat(patrat) afișează șirul de caractere patrat, eliminând spațiile dinaintea și de după șir folosind metoda strip().&lt;br /&gt;
În blocul if __name__ == &#039;__main__&#039;:, se solicită utilizatorului să introducă numărul natural n, caracterul c și caracterul d. Se verifică dacă valorile introduse sunt valide utilizând funcția validare_date(n, c, d). Dacă nu sunt valide, se afișează mesajul &amp;quot;Date de intrare invalide&amp;quot;. Dacă valorile introduse sunt valide, se apelează funcția construire_patrat(n, c, d) pentru a construi pătratul și se apelează funcția afisare_patrat(patrat) pentru a-l afișa.&lt;/div&gt;</summary>
		<author><name>Paul Ungur</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=4275_-_Para_2&amp;diff=6828</id>
		<title>4275 - Para 2</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=4275_-_Para_2&amp;diff=6828"/>
		<updated>2023-06-29T18:19:52Z</updated>

		<summary type="html">&lt;p&gt;Paul Ungur: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Cerinta:==&lt;br /&gt;
Se citește numărul natural n, şi un caracter c. Să se afișeze următorul paralelogram:&lt;br /&gt;
      c&lt;br /&gt;
     cc&lt;br /&gt;
    ccc&lt;br /&gt;
   ....ccc...c&lt;br /&gt;
 ccc...c&lt;br /&gt;
 cc...c&lt;br /&gt;
 ....&lt;br /&gt;
 cc&lt;br /&gt;
 c&lt;br /&gt;
==Date de intrare:==&lt;br /&gt;
Programul citește de la tastatură numărul &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;n&amp;lt;/span&amp;gt; şi caracterul &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;c&amp;lt;/span&amp;gt; .&lt;br /&gt;
&lt;br /&gt;
==Date de ieşire:==&lt;br /&gt;
Dacă datele sunt introduse corect, pe ecran se va afișa: &#039;&#039;&#039;&amp;quot;Date de intrare valide.&amp;quot;&#039;&#039;&#039;, apoi programul afișează pe ecran figura descrisă în enunț. În cazul în care datele nu respectă restricțiile, se va afișa pe ecran: &#039;&#039;&#039;&amp;quot;Date de intrare invalide&amp;quot;.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Restricţii şi precizări:==&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;1 ≤ n ≤ 20&lt;br /&gt;
c&amp;lt;/span&amp;gt; este un caracter cu codul ASCII cuprins între &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;33 şi 126&amp;lt;/span&amp;gt;, inclusiv.&lt;br /&gt;
&lt;br /&gt;
==Exemplu:==&lt;br /&gt;
Intrare&lt;br /&gt;
: 4 *&lt;br /&gt;
&lt;br /&gt;
Ieșire&lt;br /&gt;
: Date de intrare valide&lt;br /&gt;
   *&lt;br /&gt;
  **&lt;br /&gt;
 ***&lt;br /&gt;
****&lt;br /&gt;
****&lt;br /&gt;
***&lt;br /&gt;
**&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 validare_date(n, c):&lt;br /&gt;
    if not 1 &amp;lt;= n &amp;lt;= 20:&lt;br /&gt;
        print(&amp;quot;n trebuie să fie între 1 și 20&amp;quot;)&lt;br /&gt;
        return False&lt;br /&gt;
    if not 33 &amp;lt;= ord(c) &amp;lt;= 126:&lt;br /&gt;
        print(&amp;quot;c trebuie să aibă un cod ASCII între 33 și 126&amp;quot;)&lt;br /&gt;
        return False&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def afisare_paralelogram(n, c):&lt;br /&gt;
    for i in range(1, n + 1):&lt;br /&gt;
        for j in range(n, i, -1):&lt;br /&gt;
            print(&amp;quot; &amp;quot;, end=&amp;quot;&amp;quot;)&lt;br /&gt;
        for j in range(1, i + 1):&lt;br /&gt;
            print(c, end=&amp;quot;&amp;quot;)&lt;br /&gt;
        print()&lt;br /&gt;
&lt;br /&gt;
    for i in range(n, 0, -1):&lt;br /&gt;
        for j in range(1, i + 1):&lt;br /&gt;
            print(c, end=&amp;quot;&amp;quot;)&lt;br /&gt;
        for j in range(n, i, -1):&lt;br /&gt;
            print(&amp;quot; &amp;quot;, end=&amp;quot;&amp;quot;)&lt;br /&gt;
        print()&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    n = int(input(&amp;quot;Introduceți un număr natural n: &amp;quot;))&lt;br /&gt;
    c = input(&amp;quot;Introduceți un caracter c: &amp;quot;)&lt;br /&gt;
    if validare_date(n, c):&lt;br /&gt;
        n = int(n)&lt;br /&gt;
        afisare_paralelogram(n, c)&lt;br /&gt;
    else:&lt;br /&gt;
        print(&amp;quot;Date de intrare invalide&amp;quot;)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
==Explicatie cod:==&lt;br /&gt;
Funcția validare_date(n, c) verifică dacă valorile n și c sunt valide pentru a construi un paralelogram. Verifică dacă n se încadrează în intervalul [1, 20] și dacă caracterul c are un cod ASCII între 33 și 126. Dacă nu se îndeplinesc aceste condiții, afișează mesajul corespunzător și returnează False. Altfel, returnează True.&lt;br /&gt;
Funcția afisare_paralelogram(n, c) construiește și afișează un paralelogram utilizând numărul n și caracterul c. Folosește două bucle for pentru a itera prin rânduri și coloanele fiecărui rând. În prima buclă, iterează de la 1 la n și afișează spații în funcție de diferența dintre n și valoarea curentă a primei bucle, apoi afișează caracterele c înmulțite cu valoarea curentă a primei bucle. Astfel, fiecare rând al paralelogramului conține spații urmate de un număr crescător de caractere c. În a doua buclă, iterează de la n la 1 în ordine descrescătoare și afișează caracterele c în funcție de valoarea curentă a primei bucle, apoi afișează spații în funcție de diferența dintre n și valoarea curentă a primei bucle, pentru a construi partea inferioară a paralelogramului.&lt;br /&gt;
În blocul if __name__ == &#039;__main__&#039;:, se solicită utilizatorului să introducă numărul natural n și caracterul c. Se verifică dacă valorile introduse sunt valide utilizând funcția validare_date(n, c). Dacă nu sunt valide, se afișează mesajul &amp;quot;Date de intrare invalide&amp;quot;. Dacă valorile introduse sunt valide, se convertește n într-un număr întreg și se apelează funcția afisare_paralelogram(n, c) pentru a construi și afișa paralelogramul.&lt;/div&gt;</summary>
		<author><name>Paul Ungur</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=4274_-_Para_1&amp;diff=6827</id>
		<title>4274 - Para 1</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=4274_-_Para_1&amp;diff=6827"/>
		<updated>2023-06-29T18:15:24Z</updated>

		<summary type="html">&lt;p&gt;Paul Ungur: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Cerinţa:==&lt;br /&gt;
Se citește numărul natural &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;n&amp;lt;/span&amp;gt;, şi un caracter &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;c&amp;lt;/span&amp;gt;. Să se afișeze următorul paralelogram:&lt;br /&gt;
c&lt;br /&gt;
cc&lt;br /&gt;
ccc&lt;br /&gt;
....&lt;br /&gt;
ccc...c&lt;br /&gt;
ccc...c&lt;br /&gt;
 cc...c&lt;br /&gt;
   ....&lt;br /&gt;
     cc&lt;br /&gt;
      c&lt;br /&gt;
&lt;br /&gt;
==Date de intrare:==&lt;br /&gt;
Programul citește de la tastatură numărul &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;n&amp;lt;/span&amp;gt; şi caracterul &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;c&amp;lt;/span&amp;gt; .&lt;br /&gt;
&lt;br /&gt;
==Date de ieşire:==&lt;br /&gt;
Dacă datele sunt introduse corect, pe ecran se va afișa: &#039;&#039;&#039;&amp;quot;Date de intrare valide.&amp;quot;&#039;&#039;&#039;, apoi programul afișează pe ecran figura descrisă în enunț. În cazul în care datele nu respectă restricțiile, se va afișa pe ecran: &#039;&#039;&#039;&amp;quot;Date de intrare invalide&amp;quot;.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Restricţii şi precizări:==&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;1 ≤ n ≤ 20&lt;br /&gt;
c&amp;lt;/span&amp;gt; este un caracter cu codul ASCII cuprins între &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;33 şi 126&amp;lt;/span&amp;gt;, inclusiv.&lt;br /&gt;
&lt;br /&gt;
==Exemplu:==&lt;br /&gt;
Intrare:&lt;br /&gt;
: 4 *&lt;br /&gt;
&lt;br /&gt;
Ieșire:&lt;br /&gt;
: Date de intrare valide&lt;br /&gt;
: *&lt;br /&gt;
: **&lt;br /&gt;
: ***&lt;br /&gt;
: ****&lt;br /&gt;
: ****&lt;br /&gt;
:  ***&lt;br /&gt;
:   **&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 validare_date(n, c):&lt;br /&gt;
    if not 1 &amp;lt;= n &amp;lt;= 20:&lt;br /&gt;
        print(&amp;quot;n trebuie să fie între 1 și 20&amp;quot;)&lt;br /&gt;
        return False&lt;br /&gt;
    if not 33 &amp;lt;= ord(c) &amp;lt;= 126:&lt;br /&gt;
        print(&amp;quot;c trebuie să aibă un cod ASCII între 33 și 126&amp;quot;)&lt;br /&gt;
        return False&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def afisare_paralelogram(n, c):&lt;br /&gt;
    for i in range(1, n + 1):&lt;br /&gt;
        for j in range(1, i + 1):&lt;br /&gt;
            print(c, end=&amp;quot;&amp;quot;)&lt;br /&gt;
        print()&lt;br /&gt;
&lt;br /&gt;
    for i in range(n, 0, -1):&lt;br /&gt;
        for j in range(n, i, -1):&lt;br /&gt;
            print(&amp;quot; &amp;quot;, end=&amp;quot;&amp;quot;)&lt;br /&gt;
        for j in range(1, i + 1):&lt;br /&gt;
            print(c, end=&amp;quot;&amp;quot;)&lt;br /&gt;
        print()&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    n = int(input(&amp;quot;Introduceți un număr natural n: &amp;quot;))&lt;br /&gt;
    c = input(&amp;quot;Introduceți un caracter c: &amp;quot;)&lt;br /&gt;
    if validare_date(n, c):&lt;br /&gt;
        n = int(n)&lt;br /&gt;
        afisare_paralelogram(n, c)&lt;br /&gt;
 print(&amp;quot;Date de intrare valide&amp;quot;)&lt;br /&gt;
    else:&lt;br /&gt;
        print(&amp;quot;Date de intrare invalide&amp;quot;)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
==Explicatie cod:==&lt;br /&gt;
Funcția validare_date(n, c) verifică dacă valorile n și c sunt valide pentru a construi un paralelogram. Verifică dacă n se încadrează în intervalul [1, 20] și dacă caracterul c are un cod ASCII între 33 și 126. Dacă nu se îndeplinesc aceste condiții, afișează mesajul corespunzător și returnează False. Altfel, returnează True.&lt;br /&gt;
Funcția afisare_paralelogram(n, c) construiește și afișează un paralelogram utilizând numărul n și caracterul c. Folosește două bucle for pentru a itera prin rânduri și coloanele fiecărui rând. În prima buclă, iterează de la 1 la n și afișează caracterele c înmulțite cu valoarea curentă a primei bucle. Astfel, fiecare rând al paralelogramului conține un număr crescător de caractere c. În a doua buclă, iterează de la n la 1 în ordine descrescătoare și afișează spații și caracterele c în funcție de valorile curente ale buclelor, pentru a construi partea inferioară a paralelogramului.&lt;br /&gt;
În blocul if __name__ == &#039;__main__&#039;:, se solicită utilizatorului să introducă numărul natural n și caracterul c. Se verifică dacă valorile introduse sunt valide utilizând funcția validare_date(n, c). Dacă nu sunt valide, se afișează mesajul &amp;quot;Date de intrare invalide&amp;quot;. Dacă valorile introduse sunt valide, se afișează mesajul &amp;quot;Date de intrare valide&amp;quot;, se convertește n într-un număr întreg și se apelează funcția afisare_paralelogram(n, c) pentru a construi și afișa paralelogramul.&lt;/div&gt;</summary>
		<author><name>Paul Ungur</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=0456_-_Piramida_1&amp;diff=6826</id>
		<title>0456 - Piramida 1</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=0456_-_Piramida_1&amp;diff=6826"/>
		<updated>2023-06-29T18:13:38Z</updated>

		<summary type="html">&lt;p&gt;Paul Ungur: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Cerinţa:==&lt;br /&gt;
Se citește numărul natural &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt; n&amp;lt;/span&amp;gt;, şi un caracter &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt; c&amp;lt;/span&amp;gt;. Să se afișeze următoarea piramidă:&lt;br /&gt;
c&lt;br /&gt;
cc&lt;br /&gt;
ccc&lt;br /&gt;
....&lt;br /&gt;
ccc...c&lt;br /&gt;
&lt;br /&gt;
==Date de intrare:==&lt;br /&gt;
Programul citește de la tastatură numărul &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt; n&amp;lt;/span&amp;gt; şi caracterul &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt; c&amp;lt;/span&amp;gt; .&lt;br /&gt;
&lt;br /&gt;
==Date de ieşire:==&lt;br /&gt;
Dacă datele sunt introduse corect, pe ecran se va afișa: &#039;&#039;&#039;&amp;quot;Date de intrare valide.&amp;quot;&#039;&#039;&#039;, apoi programul afișează pe ecran un caracter &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt; c&amp;lt;/span&amp;gt;, pe a doua linie două caractere &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt; c&amp;lt;/span&amp;gt;, pe a treia linie trei caractere &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt; c&amp;lt;/span&amp;gt;, etc, pe a &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt; n&amp;lt;/span&amp;gt;-a linie n caractere &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt; c&amp;lt;/span&amp;gt;. În cazul în care datele nu respectă restricțiile, se va afișa pe ecran: &#039;&#039;&#039;&amp;quot;Date de intrare invalide&amp;quot;&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==Restricţii şi precizări:==&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt; 1 ≤ n ≤ 20&lt;br /&gt;
c&amp;lt;/span&amp;gt; este un caracter cu codul ASCII cuprins între &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt; 33&amp;lt;/span&amp;gt; şi &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt; 126&amp;lt;/span&amp;gt;, inclusiv.&lt;br /&gt;
&lt;br /&gt;
Exemplu:&lt;br /&gt;
Intrare&lt;br /&gt;
: 4 *&lt;br /&gt;
&lt;br /&gt;
Ieșire&lt;br /&gt;
: Date de intrare valide&lt;br /&gt;
: *&lt;br /&gt;
: **&lt;br /&gt;
: ***&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 validare_date(n, c):&lt;br /&gt;
    flag = True&lt;br /&gt;
    if not isinstance(n, int) or not isinstance(c, str):&lt;br /&gt;
        flag = False&lt;br /&gt;
    if int(n) &amp;lt; 1 or int(n) &amp;gt; 20:&lt;br /&gt;
        flag = False&lt;br /&gt;
    if not 33 &amp;lt;= ord(c) &amp;lt;= 126:&lt;br /&gt;
        flag = False&lt;br /&gt;
    return flag&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def construire_piramid(n, c):&lt;br /&gt;
    for i in range(1, n + 1):&lt;br /&gt;
        print(c * i)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    n = input(&amp;quot;Introduceti numarul natural n: &amp;quot;)&lt;br /&gt;
    c = input(&amp;quot;Introduceti caracterul c: &amp;quot;)&lt;br /&gt;
    if validare_date(n, c):&lt;br /&gt;
        print(&amp;quot;Date de intrare valide&amp;quot;)&lt;br /&gt;
        n = int(n)&lt;br /&gt;
        construire_piramid(n, c)&lt;br /&gt;
    else:&lt;br /&gt;
        print(&amp;quot;Date de intrare invalide&amp;quot;)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
==Explicatie cod:==&lt;br /&gt;
Funcția validare_date(n, c) verifică dacă valorile n și c sunt valide pentru a construi o piramidă. Verifică dacă n este de tip int și c este de tip str. Verifică apoi dacă n se încadrează în intervalul [1, 20] și dacă caracterul c are un cod ASCII între 33 și 126. Dacă nu se îndeplinesc aceste condiții, returnează False, altfel returnează True.&lt;br /&gt;
Funcția construire_piramid(n, c) construiește o piramidă utilizând numărul n și caracterul c. Folosește o buclă for pentru a itera de la 1 la n. La fiecare iterație, afișează caracterul c înmulțit cu valoarea curentă a iterației. Astfel, fiecare rând al piramidei conține un număr crescător de caractere c.&lt;br /&gt;
În blocul if __name__ == &#039;__main__&#039;:, se solicită utilizatorului să introducă numărul natural n și caracterul c. Se verifică dacă valorile introduse sunt valide utilizând funcția validare_date(n, c). Dacă nu sunt valide, se afișează mesajul &amp;quot;Date de intrare invalide&amp;quot;. Dacă valorile introduse sunt valide, se afișează mesajul &amp;quot;Date de intrare valide&amp;quot; și se apelează funcția construire_piramid(n, c) pentru a construi și afișa piramida&lt;/div&gt;</summary>
		<author><name>Paul Ungur</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=1684_-_Numere_Piramidale&amp;diff=6825</id>
		<title>1684 - Numere Piramidale</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=1684_-_Numere_Piramidale&amp;diff=6825"/>
		<updated>2023-06-29T18:12:32Z</updated>

		<summary type="html">&lt;p&gt;Paul Ungur: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Cerința==&lt;br /&gt;
Amicul nostru, Zoli, a învățat la scoală despre pătrate perfecte și numere piramidale. Al &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt; n&amp;lt;/span&amp;gt;-lea număr piramidal înseamnă suma primelor &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt; n&amp;lt;/span&amp;gt; pătrate perfecte, începând de la &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt; 1&amp;lt;/span&amp;gt;. Ajutați-l pe Zoli sa afle primele &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt; n &amp;lt;/span&amp;gt; numere piramidale.&lt;br /&gt;
&lt;br /&gt;
==Date de intrare==&lt;br /&gt;
Programul citește de la tastatură numărul &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt; n&amp;lt;/span&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Date de ieșire==&lt;br /&gt;
Dacă datele sunt introduse corect, pe ecran se va afișa: &#039;&#039;&#039;&amp;quot;Date de intrare valide.&amp;quot;&#039;&#039;&#039;, apoi programul va afișa pe ecran primele &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt; n&amp;lt;/span&amp;gt; numere piramidale, în ordine crescătoare, separate prin câte un spațiu. În cazul în care datele nu respectă restricțiile, se va afișa pe ecran: &#039;&#039;&#039;&amp;quot;Date de intrare invalide&amp;quot;.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Restricții și precizări==&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt; 1 ≤ n ≤ 400&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Exemplu:==&lt;br /&gt;
Intrare&lt;br /&gt;
: 3&lt;br /&gt;
&lt;br /&gt;
Ieșire&lt;br /&gt;
: Date de intrare valide&lt;br /&gt;
: 1 5 14&lt;br /&gt;
&lt;br /&gt;
==Explicație==&lt;br /&gt;
Primele &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt; 3&amp;lt;/span&amp;gt; numere piramidale sunt &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt; 1&amp;lt;/span&amp;gt;, &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt; 5&amp;lt;/span&amp;gt; si &amp;lt;span&amp;gt; 14&amp;lt;/span&amp;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 validare_date(n):&lt;br /&gt;
    if not n.isdigit():&lt;br /&gt;
        return False&lt;br /&gt;
    n = int(n)&lt;br /&gt;
    if n &amp;lt; 1 or n &amp;gt; 400:&lt;br /&gt;
        return False&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def compute_pyramid_numbers(n):&lt;br /&gt;
    pyramid_numbers = []&lt;br /&gt;
    for i in range(1, n+ 1):&lt;br /&gt;
        pyramid_number = sum([j ** 2 for j in range(1, i + 1)])&lt;br /&gt;
        pyramid_numbers.append(pyramid_number)&lt;br /&gt;
    print(&amp;quot;Primele&amp;quot;, n, &amp;quot;numere piramidale sunt:&amp;quot;, &amp;quot; &amp;quot;.join(str(p) for p in pyramid_numbers))&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    n = input(&amp;quot;Introduceti numarul de numere piramidale: &amp;quot;)&lt;br /&gt;
    while not validare_date(n):&lt;br /&gt;
        n = input(&amp;quot;Input invalid! Introduceti numarul de numere piramidale: &amp;quot;)&lt;br /&gt;
    if validare_date(n):&lt;br /&gt;
        print(&amp;quot;Date de intrare valide&amp;quot;)&lt;br /&gt;
        compute_pyramid_numbers(int(n))&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
==Explicatie cod:==&lt;br /&gt;
Funcția validare_date(n) verifică dacă valoarea n este un număr valid pentru a calcula numere piramidale. Verifică dacă n este un șir de caractere numeric și apoi convertește n la tipul int. Verifică apoi dacă n se încadrează în intervalul [1, 400]. Dacă nu se îndeplinesc aceste condiții, returnează False, altfel returnează True.&lt;br /&gt;
Funcția compute_pyramid_numbers(n) calculează primele n numere piramidale. Folosește o buclă for pentru a itera de la 1 la n. Pentru fiecare valoare i, calculează numărul piramidal folosind formula pyramid_number = sum([j ** 2 for j in range(1, i + 1)]). Adaugă numărul piramidal calculat în lista pyramid_numbers. La final, afișează lista pyramid_numbers într-un format adecvat.&lt;br /&gt;
În blocul if __name__ == &#039;__main__&#039;:, se solicită utilizatorului să introducă numărul de numere piramidale pe care dorește să le calculeze. Se verifică dacă valoarea introdusă este validă utilizând funcția validare_date(n). Dacă nu este validă, utilizatorului i se cere să reintroducă un număr valid. Dacă valoarea introdusă este validă, se afișează mesajul &amp;quot;Date de intrare valide&amp;quot; și se apelează funcția compute_pyramid_numbers(int(n)) pentru a calcula și afișa numerele piramidale.&lt;/div&gt;</summary>
		<author><name>Paul Ungur</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=0351_-_Piramida&amp;diff=6824</id>
		<title>0351 - Piramida</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=0351_-_Piramida&amp;diff=6824"/>
		<updated>2023-06-29T18:10:58Z</updated>

		<summary type="html">&lt;p&gt;Paul Ungur: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Cerinţa:==&lt;br /&gt;
Se citește numărul natural &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt; n&amp;lt;/span&amp;gt;. Să se afișeze următoarea piramidă de numere:&lt;br /&gt;
1&lt;br /&gt;
1 2&lt;br /&gt;
1 2 3&lt;br /&gt;
.......&lt;br /&gt;
1 2 3 ... n&lt;br /&gt;
&lt;br /&gt;
==Date de intrare:==&lt;br /&gt;
Programul citește de la tastatură numărul &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt; n&amp;lt;/span&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Date de ieşire:==&lt;br /&gt;
Dacă datele sunt introduse corect, pe ecran se va afișa: &#039;&#039;&#039;&amp;quot;Date de intrare valide.&amp;quot;&#039;&#039;&#039;, apoi programul afișează pe ecran numărul &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt; 1&amp;lt;/span&amp;gt;, pe a doua linie numerele &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt; 1 2&amp;lt;/span&amp;gt;, pe a treia linie numerele &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt; 1 2 3&amp;lt;/span&amp;gt;, etc, pe a n-a linie numerele &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt; 1 2 3 ... n&amp;lt;/span&amp;gt;. Pe fiecare linie numerele sunt separate prin exact un spațiu. În cazul în care datele nu respectă restricțiile, se va afișa pe ecran: &#039;&#039;&#039;&amp;quot;Date de intrare invalide.&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Restricţii şi precizări:==&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt; 1 ≤ n ≤ 20&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Exemplu:==&lt;br /&gt;
Date de intrare&lt;br /&gt;
: 4&lt;br /&gt;
&lt;br /&gt;
Date de ieșire&lt;br /&gt;
: Date de intrare valide&lt;br /&gt;
: 1&lt;br /&gt;
: 1 2&lt;br /&gt;
: 1 2 3&lt;br /&gt;
: 1 2 3 4&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 validare_date(n):&lt;br /&gt;
    if not n.isdigit():&lt;br /&gt;
        return False&lt;br /&gt;
    n = int(n)&lt;br /&gt;
    if n &amp;lt; 1 or n &amp;gt; 20:&lt;br /&gt;
        return False&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def construire_piramid(n):&lt;br /&gt;
    piramid = []&lt;br /&gt;
    for i in range(1, n + 1):&lt;br /&gt;
        row = []&lt;br /&gt;
        for j in range(1, i + 1):&lt;br /&gt;
            row.append(j)&lt;br /&gt;
        piramid.append(row)&lt;br /&gt;
    return piramid&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def afisare_piramid(pyramid):&lt;br /&gt;
    for rand in pyramid:&lt;br /&gt;
        rand_str = &amp;quot; &amp;quot;.join([str(num) for num in rand])&lt;br /&gt;
        print(rand_str)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    n = input(&amp;quot;Introduceti n: &amp;quot;)&lt;br /&gt;
    while not validare_date(n):&lt;br /&gt;
        print(&amp;quot;Va rugam introduceti un numar natural intre 1 si 20.&amp;quot;)&lt;br /&gt;
        n = input(&amp;quot;Introduceti n: &amp;quot;)&lt;br /&gt;
    if validare_date(n):&lt;br /&gt;
        print(&amp;quot;Date de intrare valide&amp;quot;)&lt;br /&gt;
        n = int(n)&lt;br /&gt;
        piramid = construire_piramid(n)&lt;br /&gt;
        afisare_piramid(piramid)&lt;br /&gt;
    else:&lt;br /&gt;
        print(&amp;quot;Date de intrare invalide&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
==Explicatie cod:==&lt;br /&gt;
Codul Python de mai sus definește următoarele funcții și acțiuni:&lt;br /&gt;
&lt;br /&gt;
Funcția validare_date(n):&lt;br /&gt;
Această funcție primește un singur parametru, n, care este o valoare de tip string.&lt;br /&gt;
Verifică dacă n este un număr valid prin următoarele condiții:&lt;br /&gt;
Verifică dacă n conține doar cifre utilizând metoda isdigit(). Dacă n conține și alte caractere în afară de cifre, funcția returnează False, semnalând că datele introduse sunt invalide.&lt;br /&gt;
Converteste n la tipul int și verifică dacă este mai mic decât 1 sau mai mare decât 20. Dacă această condiție nu este îndeplinită, funcția returnează False, semnalând că datele introduse sunt invalide.&lt;br /&gt;
Dacă ambele verificări trec fără a găsi probleme, funcția returnează True, semnalând că datele introduse sunt valide.&lt;br /&gt;
Funcția construire_piramid(n):&lt;br /&gt;
Această funcție primește un singur parametru, n, reprezentând un număr întreg.&lt;br /&gt;
Construiește o piramidă formată din liste de numere întregi.&lt;br /&gt;
Folosind două bucle for, se construiește fiecare rând al piramidei.&lt;br /&gt;
La fiecare iterație, se creează un nou rând care conține numere de la 1 la i, unde i reprezintă indexul rândului curent.&lt;br /&gt;
Rândurile piramidei sunt adăugate într-o listă numită piramid.&lt;br /&gt;
La final, lista piramid este returnată.&lt;br /&gt;
Funcția afisare_piramid(piramid):&lt;br /&gt;
Această funcție primește un singur parametru, piramid, care este o listă de liste de numere întregi reprezentând piramida.&lt;br /&gt;
Afișează conținutul piramidei, parcurgând fiecare rând și convertind numerele la șiruri de caractere.&lt;br /&gt;
Folosind bucla for, se parcurge fiecare rând al piramidei.&lt;br /&gt;
Folosind metoda join, numerele din fiecare rând sunt transformate în șiruri de caractere separate prin spațiu.&lt;br /&gt;
Șirurile de caractere corespunzătoare fiecărui rând sunt afișate cu ajutorul funcției print.&lt;br /&gt;
În cadrul secțiunii if __name__ == &#039;__main__&#039;: se realizează următoarele acțiuni:&lt;br /&gt;
&lt;br /&gt;
Se citește de la tastatură un număr sub formă de șir de caractere n folosind funcția input().&lt;br /&gt;
Se verifică dacă datele introduse sunt valide folosind funcția validare_date(n). Dacă datele sunt valide, se afișeazămesajul &amp;quot;Date de intrare valide&amp;quot; și se continuă executarea programului.&lt;br /&gt;
&lt;br /&gt;
În caz contrar, se afișează mesajul &amp;quot;Date de intrare invalide&amp;quot; și se cere introducerea unui nou număr până când acesta este valid.&lt;br /&gt;
După ce se asigură că datele introduse sunt valide, se convertește n la tipul int.&lt;br /&gt;
Se apelează funcția construire_piramid(n) pentru a construi piramida.&lt;br /&gt;
Piramida rezultată este stocată în variabila piramid.&lt;br /&gt;
Se apelează funcția afisare_piramid(piramid) pentru a afișa piramida construită.&lt;/div&gt;</summary>
		<author><name>Paul Ungur</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=2695_-_Cub_Perfect&amp;diff=6823</id>
		<title>2695 - Cub Perfect</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=2695_-_Cub_Perfect&amp;diff=6823"/>
		<updated>2023-06-29T18:09:07Z</updated>

		<summary type="html">&lt;p&gt;Paul Ungur: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Cerința:==&lt;br /&gt;
Se citește un număr &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt; n &amp;lt;/span&amp;gt; și apoi &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt; n&amp;lt;/span&amp;gt; numere întregi. Să se verifice pentru fiecare număr dacă este cub perfect.&lt;br /&gt;
&lt;br /&gt;
==Date de intrare:==&lt;br /&gt;
Programul citește de la tastatură numărul &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt; n &amp;lt;/span&amp;gt; și &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt; n &amp;lt;/span&amp;gt; numere naturale.&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;Date de intrare valide.&amp;quot;, apoi Programul va afișa &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;  DA&amp;lt;/span&amp;gt; sau &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;  NU&amp;lt;/span&amp;gt; pe câte o linie dacă numărul citit este sau nu cub perfect. În cazul în care datele nu respectă restricțiile, se va afișa pe ecran: &amp;quot;Date de intrare invalide.&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==Restricții și precizări:==&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;  1 ≤ n ≤ 1000&amp;lt;/span&amp;gt;&lt;br /&gt;
cele &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt; n &amp;lt;/span&amp;gt; numere sunt &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;   -1.000.000.000.000 ≤ x ≤ 1.000.000.000.000&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Exemplu:==&lt;br /&gt;
Intrare&lt;br /&gt;
: 5&lt;br /&gt;
: 1 -1 8 -8 9&lt;br /&gt;
&lt;br /&gt;
Ieșire&lt;br /&gt;
: Date de intrare valide&lt;br /&gt;
: DA&lt;br /&gt;
: DA&lt;br /&gt;
: DA &lt;br /&gt;
: DA &lt;br /&gt;
: NU &lt;br /&gt;
&lt;br /&gt;
==Explicație:==&lt;br /&gt;
S-au citit &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt; 5&amp;lt;/span&amp;gt; numere, s-a verificat dacă sunt cuburi perfecte și s-a afișat răspunsul corespunzător.&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 validare_date(n, nums):&lt;br /&gt;
    if n &amp;lt; 1 or n &amp;gt; 1000:&lt;br /&gt;
        return False&lt;br /&gt;
    for num in nums:&lt;br /&gt;
        if num &amp;lt; -1000000000000 or num &amp;gt; 1000000000000:&lt;br /&gt;
            return False&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def este_cub(n):&lt;br /&gt;
    return round(n ** (1.0 / 3)) ** 3 == n&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def verificare_cub(n, nums):&lt;br /&gt;
    result = []&lt;br /&gt;
    for num in nums:&lt;br /&gt;
        if este_cub(abs(num)):&lt;br /&gt;
            result.append(&amp;quot;DA&amp;quot;)&lt;br /&gt;
        else:&lt;br /&gt;
            result.append(&amp;quot;NU&amp;quot;)&lt;br /&gt;
    print(&amp;quot;\n&amp;quot;.join(result))&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    n = int(input())&lt;br /&gt;
    nums = list(map(int, input().split()))&lt;br /&gt;
    if validare_date(n, nums):&lt;br /&gt;
        print(&amp;quot;Date de intrare valide&amp;quot;)&lt;br /&gt;
        verificare_cub(n, nums)&lt;br /&gt;
    else:&lt;br /&gt;
        print(&amp;quot;Date de intrare invalide&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
==Explicatie cod:==&lt;br /&gt;
Codul Python de mai sus definește trei funcții: validare_date, este_cub și verificare_cub. Iată o explicație pentru fiecare dintre ele:&lt;br /&gt;
&lt;br /&gt;
Funcția validare_date(n, nums):&lt;br /&gt;
Această funcție primește doi parametri, n și nums.&lt;br /&gt;
Verifică mai multe condiții pentru a valida datele introduse:&lt;br /&gt;
Verifică dacă n este mai mic decât 1 sau mai mare decât 1000. Dacă această condiție nu este îndeplinită, funcția returnează False, semnalând că datele sunt invalide.&lt;br /&gt;
Verifică fiecare element num din lista nums pentru a se încadra în intervalul -1000000000000 și 1000000000000. Dacă unul dintre elementele nu se încadrează în acest interval, funcția returnează False, semnalând că datele sunt invalide.&lt;br /&gt;
Dacă toate verificările sunt trecute fără a găsi probleme, funcția returnează True, semnalând că datele sunt valide.&lt;br /&gt;
Funcția este_cub(n):&lt;br /&gt;
Această funcție primește un singur parametru, n, reprezentând un număr întreg.&lt;br /&gt;
Verifică dacă n este un cub perfect.&lt;br /&gt;
Folosind proprietatea unui cub perfect, se calculează rădăcina cubică a valorii absolute a lui n (abs(n)) și se verifică dacă ridicarea la puterea 3 a acestei rădăcini este egală cu n. Dacă da, funcția returnează True, semnalând că n este un cub perfect. În caz contrar, funcția returnează False.&lt;br /&gt;
Funcția verificare_cub(n, nums):&lt;br /&gt;
Această funcție primește doi parametri, n și nums, reprezentând un număr întreg și o listă de numere întregi.&lt;br /&gt;
Funcția verifică pentru fiecare element num din lista nums dacă valoarea absolută a acestuia este un cub perfect folosind funcția este_cub. Dacă este un cub perfect, se adaugă string-ul &amp;quot;DA&amp;quot; în lista de rezultate result. Altfel, se adaugă string-ul &amp;quot;NU&amp;quot; în lista de rezultate.&lt;br /&gt;
La final, funcția afișează elementele din lista result, separate prin linii noi, folosind funcția print(&amp;quot;\n&amp;quot;.join(result)).&lt;br /&gt;
În cadrul secțiunii if __name__ == &#039;__main__&#039;: se realizează următoarele acțiuni:&lt;br /&gt;
&lt;br /&gt;
Se citește de la tastatură un număr întreg n folosind funcția input().&lt;br /&gt;
Se citește o listă de numere întregi nums folosind funcția input().split() și convertind elementele la tipul int cu ajutorul funcției map(int, ...).&lt;br /&gt;
Se apelează funcția validare_date(n, nums) pentru a verifica dacă datele introduse sunt valide. Dacă sunt valide, se afișează mesajul &amp;quot;Date de intrare valide&amp;quot; și se apelează funcția verificare_cub(n, nums). În caz contrar, se afișează mesajul &amp;quot;Date de intrare invalide&amp;quot;.&lt;/div&gt;</summary>
		<author><name>Paul Ungur</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=0348_-_Afisare_Puteri&amp;diff=6822</id>
		<title>0348 - Afisare Puteri</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=0348_-_Afisare_Puteri&amp;diff=6822"/>
		<updated>2023-06-29T18:07:10Z</updated>

		<summary type="html">&lt;p&gt;Paul Ungur: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Cerinţa:==&lt;br /&gt;
Se dau două numere naturale nenule &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt; n &amp;lt;/span&amp;gt; și &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt; p&amp;lt;/span&amp;gt;. Afișați în ordine crescătoare puterile lui &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt; n&amp;lt;/span&amp;gt; mai mici sau egale cu &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt; p &amp;lt;/span&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Date de intrare:==&lt;br /&gt;
Programul citește de la tastatură numerele &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt; n &amp;lt;/span&amp;gt; și &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt; p &amp;lt;/span&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Date de ieşire:==&lt;br /&gt;
Dacă datele sunt introduse corect, pe ecran se va afișa: &#039;&#039;&#039;&amp;quot;Date de intrare valide.&amp;quot;&#039;&#039;&#039;, apoi programul afișează pe ecran, în ordine crescătoare, puterile lui &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt; n &amp;lt;/span&amp;gt; mai mici sau egale cu &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt; p &amp;lt;/span&amp;gt;, separate prin câte un spațiu. În cazul în care datele nu respectă restricțiile, se va afișa pe ecran: &#039;&#039;&#039;&amp;quot;Date de intrare invalide&amp;quot;.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Restricţii şi precizări:==&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt; 2 ≤ n ≤ 10&lt;br /&gt;
1 ≤ p &amp;lt; 1.000.000.000&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Exemplu:==&lt;br /&gt;
&lt;br /&gt;
Date de intrare&lt;br /&gt;
: 3 100&lt;br /&gt;
&lt;br /&gt;
Date de ieșire&lt;br /&gt;
: Date de intrare valide&lt;br /&gt;
: 1 3 9 27 81&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 validare(n, p):&lt;br /&gt;
    if not isinstance(n, int) or not isinstance(p, int):&lt;br /&gt;
        return False&lt;br /&gt;
    if n &amp;lt;= 1 or p &amp;lt;= 0 or p &amp;gt;= 1000000000:&lt;br /&gt;
        return False&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def rezolvare(n, p):&lt;br /&gt;
    i = 0&lt;br /&gt;
    while n ** i &amp;lt;= p:&lt;br /&gt;
        print(n ** i, end=&#039; &#039;)&lt;br /&gt;
        i += 1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    n = int(input(&amp;quot;Introduceti n: &amp;quot;))&lt;br /&gt;
    p = int(input(&amp;quot;Introduceti p: &amp;quot;))&lt;br /&gt;
    if validare(n, p):&lt;br /&gt;
        rezolvare(n, p)&lt;br /&gt;
        print(&amp;quot;Date de intrare valide&amp;quot;)&lt;br /&gt;
    else:&lt;br /&gt;
        print(&amp;quot;Date de intrare invalide&amp;quot;)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
==Explicatie cod:==&lt;br /&gt;
Codul Python de mai sus definește două funcții: validare și rezolvare. Iată o explicație pentru fiecare dintre ele:&lt;br /&gt;
&lt;br /&gt;
Funcția validare(n, p):&lt;br /&gt;
Această funcție primește doi parametri, n și p, reprezentând două numere întregi.&lt;br /&gt;
Verifică mai multe condiții pentru a valida datele introduse:&lt;br /&gt;
Verifică dacă atât n cât și p sunt de tipul int. Dacă nu sunt, funcția returnează False, semnalând că datele sunt invalide.&lt;br /&gt;
Verifică dacă n este mai mic sau egal cu 1 sau p este mai mic sau egal cu 0 sau mai mare sau egal cu 1.000.000.000. Dacă una dintre aceste condiții nu este îndeplinită, funcția returnează False, semnalând că datele sunt invalide.&lt;br /&gt;
Dacă toate verificările sunt trecute fără a găsi probleme, funcția returnează True, semnalând că datele sunt valide.&lt;br /&gt;
Funcția rezolvare(n, p):&lt;br /&gt;
Această funcție primește doi parametri, n și p, reprezentând două numere întregi.&lt;br /&gt;
Funcția calculează și afișează toate puterile lui n care sunt mai mici sau egale cu p.&lt;br /&gt;
Într-un ciclu while, se verifică condiția n ** i &amp;lt;= p, unde i este un contor inițializat cu 0. În fiecare iterație, se afișează rezultatul n ** i și se incrementează i cu 1.&lt;br /&gt;
Afișarea este realizată cu ajutorul funcției print, iar valorile sunt separate prin spațiu.&lt;br /&gt;
În cadrul secțiunii if __name__ == &amp;quot;__main__&amp;quot;: se realizează următoarele acțiuni:&lt;br /&gt;
&lt;br /&gt;
Se citește de la tastatură două numere întregi n și p folosind funcția input().&lt;br /&gt;
Se apelează funcția validare(n, p) pentru a verifica validitatea datelor. Dacă datele sunt valide, se apelează funcția rezolvare(n, p) pentru a calcula și afișa rezultatul.&lt;br /&gt;
Dacă datele nu sunt valide, se afișează mesajul &amp;quot;Date de intrare invalide&amp;quot;. În cazul în care datele sunt valide, se afișează mesajul &amp;quot;Date de intrare valide&amp;quot; după ce funcția rezolvare(n, p) a afișat toate puterile lui n.&lt;/div&gt;</summary>
		<author><name>Paul Ungur</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=4049_-_N_Div_N_Len&amp;diff=6821</id>
		<title>4049 - N Div N Len</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=4049_-_N_Div_N_Len&amp;diff=6821"/>
		<updated>2023-06-29T18:05:19Z</updated>

		<summary type="html">&lt;p&gt;Paul Ungur: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Cerința:==&lt;br /&gt;
Se dă un număr natural &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt; n&amp;lt;/span&amp;gt;. Găsiți orice număr &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt; k&amp;lt;/span&amp;gt; de exact &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt; n &amp;lt;/span&amp;gt; cifre care este divizibil cu &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt; n&amp;lt;/span&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Date de intrare:==&lt;br /&gt;
Se citește numărul &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt; n&amp;lt;/span&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Date de ieșire:==&lt;br /&gt;
Dacă datele sunt introduse corect, pe ecran se va afișa: &#039;&#039;&#039;&amp;quot;Date de intrare corecte.&#039;&#039;&#039;, apoi numărul k. În cazul în care datele nu respectă restricțiile, se va afișa pe ecran: &#039;&#039;&#039;&amp;quot;Datele nu corespund restricțiilor impuse.&amp;quot;&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==Restricții și precizări:==&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt; 1 ≤ n ≤ 10^5&amp;lt;/span&amp;gt;&lt;br /&gt;
Dacă există mai multe soluții posibile, se acceptă oricare.&lt;br /&gt;
Pentru &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt; 20 &amp;lt;/span&amp;gt;de puncte, &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt; n ≤6&amp;lt;/span&amp;gt;&lt;br /&gt;
Pentru &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt; 40 &amp;lt;/span&amp;gt;de puncte, &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt; n ≤9&amp;lt;/span&amp;gt;&lt;br /&gt;
Pentru &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt; 50 &amp;lt;/span&amp;gt;de puncte, &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt; n ≤18&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Exemplu:==&lt;br /&gt;
Intrare&lt;br /&gt;
: 3&lt;br /&gt;
Ieșire&lt;br /&gt;
: Date de intrare corecte&lt;br /&gt;
: 123&lt;br /&gt;
&lt;br /&gt;
==Explicație:==&lt;br /&gt;
Numărul &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;123 are &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;3&amp;lt;/span&amp;gt; cifre și este divizibil cu &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;3&amp;lt;/span&amp;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 validare_date(n):&lt;br /&gt;
    if not isinstance(n, int) or n &amp;lt; 1 or n &amp;gt; 10**5:&lt;br /&gt;
        return False&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def find_k(n):&lt;br /&gt;
    nrCif = 1&lt;br /&gt;
    copie_n = n&lt;br /&gt;
    print(n, end=&#039;&#039;)&lt;br /&gt;
    while n:&lt;br /&gt;
        nrCif += 1&lt;br /&gt;
        n //= 10&lt;br /&gt;
        for i in range(1, copie_n):&lt;br /&gt;
            print(0, end=&#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    n = int(input(&amp;quot;Introduceti n: &amp;quot;))&lt;br /&gt;
    if validare_date(n):&lt;br /&gt;
        find_k(n)&lt;br /&gt;
    else:&lt;br /&gt;
        if not validare_date(n):&lt;br /&gt;
            print(&amp;quot;Date de intrare incorecte&amp;quot;)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
==Explicatie cod:==&lt;br /&gt;
Codul Python de mai sus definește două funcții: validare_date și find_k. Iată o explicație pentru fiecare dintre ele:&lt;br /&gt;
&lt;br /&gt;
Funcția validare_date(n):&lt;br /&gt;
Această funcție primește un singur parametru, n, reprezentând un număr întreg.&lt;br /&gt;
Verifică mai multe condiții pentru a valida datele introduse:&lt;br /&gt;
Verifică dacă n este de tipul int și dacă nu este, sau dacă n este mai mic decât 1 sau mai mare decât 100000, funcția returnează False, semnalând că datele sunt invalide.&lt;br /&gt;
Dacă toate verificările sunt trecute fără a găsi probleme, funcția returnează True, semnalând că datele sunt valide.&lt;br /&gt;
Funcția find_k(n):&lt;br /&gt;
Această funcție primește un singur parametru, n, reprezentând un număr întreg.&lt;br /&gt;
Funcția calculează și afișează rezultatul într-un format specific, care presupune afișarea numărului n, urmat de (n-1) de zerouri.&lt;br /&gt;
Începând cu nrCif = 1, se efectuează un ciclu while n, unde n este redus la jumătate în fiecare iterație. La fiecare iterație, nrCif este incrementat cu 1 și se afișează n de zerouri. Acest lucru este realizat de către bucla for care iterează de la 1 până la copie_n - 1, unde copie_n este copia inițială a valorii lui n.&lt;br /&gt;
La final, funcția afișează rezultatul.&lt;br /&gt;
În cadrul secțiunii if __name__ == &#039;__main__&#039;: se realizează următoarele acțiuni:&lt;br /&gt;
&lt;br /&gt;
Se citește de la tastatură un număr întreg n folosind funcția input().&lt;br /&gt;
Se apelează funcția validare_date(n) pentru a verifica validitatea datelor. Dacă datele sunt valide, se apelează funcția find_k(n) pentru a calcula și afișa rezultatul.&lt;br /&gt;
Dacă datele nu sunt valide, se afișează mesajul &amp;quot;Date de intrare incorecte&amp;quot;.&lt;/div&gt;</summary>
		<author><name>Paul Ungur</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=4049_-_N_Div_N_Len&amp;diff=6820</id>
		<title>4049 - N Div N Len</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=4049_-_N_Div_N_Len&amp;diff=6820"/>
		<updated>2023-06-29T18:03:02Z</updated>

		<summary type="html">&lt;p&gt;Paul Ungur: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Cerința:==&lt;br /&gt;
Se dă un număr natural &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt; n&amp;lt;/span&amp;gt;. Găsiți orice număr &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt; k&amp;lt;/span&amp;gt; de exact &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt; n &amp;lt;/span&amp;gt; cifre care este divizibil cu &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt; n&amp;lt;/span&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Date de intrare:==&lt;br /&gt;
Se citește numărul &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt; n&amp;lt;/span&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Date de ieșire:==&lt;br /&gt;
Dacă datele sunt introduse corect, pe ecran se va afișa: &#039;&#039;&#039;&amp;quot;Date de intrare corecte sunt introduse corecte, se va afișa pe ecran: &#039;&#039;&#039;&amp;quot;Datele nu corespund restricțiilor impuse.&amp;quot;&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==Restricții și precizări:==&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt; 1 ≤ n ≤ 10^5&amp;lt;/span&amp;gt;&lt;br /&gt;
Dacă există mai multe soluții posibile, se acceptă oricare.&lt;br /&gt;
Pentru &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt; 20 &amp;lt;/span&amp;gt;de puncte, &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt; n ≤6&amp;lt;/span&amp;gt;&lt;br /&gt;
Pentru &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt; 40 &amp;lt;/span&amp;gt;de puncte, &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt; n ≤9&amp;lt;/span&amp;gt;&lt;br /&gt;
Pentru &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt; 50 &amp;lt;/span&amp;gt;de puncte, &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt; n ≤18&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Exemplu:==&lt;br /&gt;
Intrare&lt;br /&gt;
: 3&lt;br /&gt;
Ieșire&lt;br /&gt;
: Date de intrare corecte&lt;br /&gt;
: 123&lt;br /&gt;
&lt;br /&gt;
==Explicație:==&lt;br /&gt;
Numărul &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;123 are &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;3&amp;lt;/span&amp;gt; cifre și este divizibil cu &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;3&amp;lt;/span&amp;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 validare_date(n):&lt;br /&gt;
    if not isinstance(n, int) or n &amp;lt; 1 or n &amp;gt; 10**5:&lt;br /&gt;
        return False&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def find_k(n):&lt;br /&gt;
    nrCif = 1&lt;br /&gt;
    copie_n = n&lt;br /&gt;
    print(n, end=&#039;&#039;)&lt;br /&gt;
    while n:&lt;br /&gt;
        nrCif += 1&lt;br /&gt;
        n //= 10&lt;br /&gt;
        for i in range(1, copie_n):&lt;br /&gt;
            print(0, end=&#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    n = int(input(&amp;quot;Introduceti n: &amp;quot;))&lt;br /&gt;
    if validare_date(n):&lt;br /&gt;
        find_k(n)&lt;br /&gt;
    else:&lt;br /&gt;
        if not validare_date(n):&lt;br /&gt;
            print(&amp;quot;Date de intrare incorecte&amp;quot;)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
==Explicatie cod:==&lt;br /&gt;
Codul Python de mai sus definește două funcții: validare_date și find_k. Iată o explicație pentru fiecare dintre ele:&lt;br /&gt;
&lt;br /&gt;
Funcția validare_date(n):&lt;br /&gt;
Această funcție primește un singur parametru, n, reprezentând un număr întreg.&lt;br /&gt;
Verifică mai multe condiții pentru a valida datele introduse:&lt;br /&gt;
Verifică dacă n este de tipul int și dacă nu este, sau dacă n este mai mic decât 1 sau mai mare decât 100000, funcția returnează False, semnalând că datele sunt invalide.&lt;br /&gt;
Dacă toate verificările sunt trecute fără a găsi probleme, funcția returnează True, semnalând că datele sunt valide.&lt;br /&gt;
Funcția find_k(n):&lt;br /&gt;
Această funcție primește un singur parametru, n, reprezentând un număr întreg.&lt;br /&gt;
Funcția calculează și afișează rezultatul într-un format specific, care presupune afișarea numărului n, urmat de (n-1) de zerouri.&lt;br /&gt;
Începând cu nrCif = 1, se efectuează un ciclu while n, unde n este redus la jumătate în fiecare iterație. La fiecare iterație, nrCif este incrementat cu 1 și se afișează n de zerouri. Acest lucru este realizat de către bucla for care iterează de la 1 până la copie_n - 1, unde copie_n este copia inițială a valorii lui n.&lt;br /&gt;
La final, funcția afișează rezultatul.&lt;br /&gt;
În cadrul secțiunii if __name__ == &#039;__main__&#039;: se realizează următoarele acțiuni:&lt;br /&gt;
&lt;br /&gt;
Se citește de la tastatură un număr întreg n folosind funcția input().&lt;br /&gt;
Se apelează funcția validare_date(n) pentru a verifica validitatea datelor. Dacă datele sunt valide, se apelează funcția find_k(n) pentru a calcula și afișa rezultatul.&lt;br /&gt;
Dacă datele nu sunt valide, se afișează mesajul &amp;quot;Date de intrare incorecte&amp;quot;.&lt;/div&gt;</summary>
		<author><name>Paul Ungur</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=2747_-_Log&amp;diff=6819</id>
		<title>2747 - Log</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=2747_-_Log&amp;diff=6819"/>
		<updated>2023-06-29T18:00:26Z</updated>

		<summary type="html">&lt;p&gt;Paul Ungur: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Cerința==&lt;br /&gt;
Se dau numerele &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt; n &amp;lt;/span&amp;gt; și &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt; m&amp;lt;/span&amp;gt;. Să se determine exponentul la care se ridică &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt; n &amp;lt;/span&amp;gt; pentru a obține &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt; m&amp;lt;/span&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Date de intrare==&lt;br /&gt;
Programul citește de la tastatură numerele &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt; n &amp;lt;/span&amp;gt; și &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt; m&amp;lt;/span&amp;gt;, separate prin spații.&lt;br /&gt;
&lt;br /&gt;
==Date de ieșire==&lt;br /&gt;
Dacă datele sunt introduse corect, pe ecran se va afișa: &#039;&#039;&#039;&amp;quot;Datele sunt introduse corect.&amp;quot;&#039;&#039;&#039;, apoi programul va afișa pe ecran exponentul la care se ridică &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt; n &amp;lt;/span&amp;gt; pentru a obține &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt; m&amp;lt;/span&amp;gt;. În cazul în care datele nu respectă restricțiile, se va afișa pe ecran: &#039;&#039;&#039;&amp;quot;Datele nu corespund restricțiilor impuse.&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Restricții și precizări==&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt; 1 ≤ n , m ≤ 1.000.000&lt;br /&gt;
n ≠ 1&amp;lt;/span&amp;gt;&lt;br /&gt;
se garantează ca &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt; m &amp;lt;/span&amp;gt; este putere &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt; a &amp;lt;/span&amp;gt; lui &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt; n&amp;lt;/span.&lt;br /&gt;
&lt;br /&gt;
==Exemplu:==&lt;br /&gt;
: Intrare&lt;br /&gt;
: 2 4&lt;br /&gt;
&lt;br /&gt;
Ieșire&lt;br /&gt;
: Datele sunt introduse corect&lt;br /&gt;
: 2&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 validare_date(n, m):&lt;br /&gt;
    if not (1 &amp;lt;= n &amp;lt;= 1000000) or not (1 &amp;lt;= m &amp;lt;= 1000000):&lt;br /&gt;
        print(&amp;quot;n și m trebuie să fie între 1 și 1.000.000.&amp;quot;)&lt;br /&gt;
        return False&lt;br /&gt;
    if n == 1:&lt;br /&gt;
        print(&amp;quot;n trebuie să fie diferit de 1.&amp;quot;)&lt;br /&gt;
        return False&lt;br /&gt;
    if m % n != 0:&lt;br /&gt;
        print(&amp;quot;m trebuie să fie putere a lui n.&amp;quot;)&lt;br /&gt;
        return False&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def compute_exponent(n, m):&lt;br /&gt;
    #Determină exponentul la care trebuie ridicat n pentru a obține m.&lt;br /&gt;
    exponent = 1&lt;br /&gt;
    while m &amp;gt; n:&lt;br /&gt;
        m //= n&lt;br /&gt;
        exponent += 1&lt;br /&gt;
    print(f&amp;quot;Exponentul la care trebuie ridicat {n} pentru a obține {m} este: {exponent}&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    # Citire input și validare&lt;br /&gt;
    n, m = map(int, input(&amp;quot;Introduceți n și m, separate prin spațiu: &amp;quot;).split())&lt;br /&gt;
    if validare_date(n, m):&lt;br /&gt;
        exponent = compute_exponent(n, m)&lt;br /&gt;
    else:&lt;br /&gt;
        while not validare_date(n, m):&lt;br /&gt;
            n, m = map(int, input(&amp;quot;Introduceți n și m, separate prin spațiu: &amp;quot;).split())&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
==Explicatie cod:==&lt;br /&gt;
Codul Python de mai sus definește două funcții: validare_date și compute_exponent. Iată o explicație pentru fiecare dintre ele:&lt;br /&gt;
&lt;br /&gt;
Funcția validare_date(n, m):&lt;br /&gt;
Această funcție primește doi parametri, n și m, reprezentând două numere întregi.&lt;br /&gt;
Verifică mai multe condiții pentru a valida datele introduse:&lt;br /&gt;
Verifică dacă n și m sunt ambele între 1 și 1.000.000. Dacă nu sunt, afișează un mesaj de eroare și returnează False.&lt;br /&gt;
Verifică dacă n este diferit de 1. Dacă nu este, afișează un mesaj de eroare și returnează False.&lt;br /&gt;
Verifică dacă m este o putere a lui n. Dacă nu este, afișează un mesaj de eroare și returnează False.&lt;br /&gt;
Dacă toate verificările sunt trecute fără a găsi probleme, funcția returnează True, semnalând că datele sunt valide.&lt;br /&gt;
Funcția compute_exponent(n, m):&lt;br /&gt;
Această funcție primește doi parametri, n și m, reprezentând două numere întregi.&lt;br /&gt;
Funcția calculează exponentul la care trebuie ridicat n pentru a obține m.&lt;br /&gt;
Inițial, exponentul este setat la 1. Apoi, într-un ciclu while, m este împărțit la n până când m devine mai mic sau egal cu n. În fiecare iterație, exponentul este incrementat cu 1.&lt;br /&gt;
La final, funcția afișează exponentul.&lt;br /&gt;
În cadrul secțiunii if __name__ == &amp;quot;__main__&amp;quot;: se realizează următoarele acțiuni:&lt;br /&gt;
&lt;br /&gt;
Se citește de la tastatură două numere întregi separate prin spațiu, n și m, și sunt convertite în variabilele corespunzătoare.&lt;br /&gt;
Se apelează funcția validare_date(n, m) pentru a verifica validitatea datelor. Dacă datele sunt valide, se apelează funcția compute_exponent(n, m) pentru a calcula și afișa exponentul.&lt;br /&gt;
Dacă datele nu sunt valide, se intră într-un ciclu while până când se introduc date valide. În fiecare iterație se solicită introducerea valorilor n și m, iar apoi se reevaluează validitatea acestora. Ciclul se oprește când se introduc date valide și se calculează și afișează exponentul corespunzător.&lt;/div&gt;</summary>
		<author><name>Paul Ungur</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=1681_-_Power&amp;diff=6818</id>
		<title>1681 - Power</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=1681_-_Power&amp;diff=6818"/>
		<updated>2023-06-29T17:58:23Z</updated>

		<summary type="html">&lt;p&gt;Paul Ungur: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Cerința==&lt;br /&gt;
Prietenul nostru, Zolly, a învățat la scoală despre ridicarea la putere. Ajutați-l să calculeze &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt; a^b &amp;lt;/span&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Date de intrare==&lt;br /&gt;
Programul citește de la tastatură numerele naturale &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt; a &amp;lt;/span&amp;gt; si &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt; b&amp;lt;/span&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Date de ieșire==&lt;br /&gt;
Dacă datele sunt introduse corect, pe ecran se va afișa: &#039;&#039;&#039;&amp;quot;Datele sunt introduse corect.&amp;quot;&#039;&#039;&#039;, apoi programul va afișa pe ecran numărul &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt; P&amp;lt;/span&amp;gt;, reprezentând &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt; a^b &amp;lt;/span&amp;gt;. În cazul în care datele nu respectă restricțiile, se va afișa pe ecran: &#039;&#039;&#039;&amp;quot;Datele NU sunt introduse corect.&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Restricții și precizări==&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt; 0 ≤ P ≤ 2.000.000.000;&lt;br /&gt;
a + b &amp;gt; 0.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Exemplu:==&lt;br /&gt;
Intrare&lt;br /&gt;
: 5&lt;br /&gt;
: 4&lt;br /&gt;
&lt;br /&gt;
Ieșire&lt;br /&gt;
: Datele sunt introduse corect.&lt;br /&gt;
: 625&lt;br /&gt;
&lt;br /&gt;
==Explicație==&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt; 5 * 5 * 5 * 5 = 625.&amp;lt;/span&amp;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 validare_date(a, b):&lt;br /&gt;
    flag = False&lt;br /&gt;
    if 0 &amp;lt; a + b:&lt;br /&gt;
        flag = True&lt;br /&gt;
        print(&amp;quot;Datele sunt introduse corect.&amp;quot;)&lt;br /&gt;
    if flag == False:&lt;br /&gt;
        print(&amp;quot;Datele NU sunt introduse corect.&amp;quot;)&lt;br /&gt;
    return flag&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def Pow(a, b):&lt;br /&gt;
    tmp = 1&lt;br /&gt;
    for i in range(b):&lt;br /&gt;
        tmp *= a&lt;br /&gt;
    print(tmp)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    a, b = map(int, input().split())&lt;br /&gt;
    if validare_date(a, b):&lt;br /&gt;
        Pow(a, b)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
==Explicatie cod:==&lt;br /&gt;
Codul Python de mai sus definește două funcții: validare_date și Pow. Iată o explicație pentru fiecare dintre ele:&lt;br /&gt;
&lt;br /&gt;
Funcția validare_date(a, b):&lt;br /&gt;
Această funcție primește doi parametri, a și b, reprezentând două numere întregi.&lt;br /&gt;
Verifică dacă suma dintre a și b este strict pozitivă (mai mare decât 0). Dacă această condiție este îndeplinită, variabila flag este setată la True, iar mesajul &amp;quot;Datele sunt introduse corect.&amp;quot; este afișat.&lt;br /&gt;
Dacă variabila flag este False, se afișează mesajul &amp;quot;Datele NU sunt introduse corect.&amp;quot;&lt;br /&gt;
Funcția returnează valoarea variabilei flag.&lt;br /&gt;
Funcția Pow(a, b):&lt;br /&gt;
Această funcție primește doi parametri, a și b, reprezentând două numere întregi.&lt;br /&gt;
Funcția calculează a ridicat la puterea b utilizând un buclă for.&lt;br /&gt;
Rezultatul este stocat în variabila tmp.&lt;br /&gt;
Rezultatul este apoi afișat.&lt;br /&gt;
În cadrul secțiunii if __name__ == &amp;quot;__main__&amp;quot;: se realizează următoarele acțiuni:&lt;br /&gt;
&lt;br /&gt;
Se citește de la tastatură două numere întregi separate prin spațiu, a și b, și sunt convertite în variabilele corespunzătoare.&lt;br /&gt;
Se apelează funcția validare_date(a, b) pentru a verifica validitatea datelor. Dacă datele sunt valide, se apelează funcția Pow(a, b) pentru a calcula și afișa puterea, altfel se afișează mesajul &amp;quot;Datele NU sunt introduse corect.&amp;quot;&lt;/div&gt;</summary>
		<author><name>Paul Ungur</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=2222_-_P10_P10&amp;diff=6817</id>
		<title>2222 - P10 P10</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=2222_-_P10_P10&amp;diff=6817"/>
		<updated>2023-06-29T17:56:35Z</updated>

		<summary type="html">&lt;p&gt;Paul Ungur: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Cerința==&lt;br /&gt;
Se dau două numere naturale &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt; n &amp;lt;/span&amp;gt;, care este putere a lui &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt; 10 &amp;lt;/span&amp;gt; și &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt; k&amp;lt;/span&amp;gt;. Să se afișeze &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt; n^k &amp;lt;/span&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Date de intrare==&lt;br /&gt;
Programul citește de la tastatură numerele n și k.&lt;br /&gt;
&lt;br /&gt;
==Date de ieșire==&lt;br /&gt;
Dacă datele sunt introduse corect, pe ecran se va afișa: &#039;&#039;&#039;&amp;quot;Datele sunt introduse corect.&amp;quot;&#039;&#039;&#039;, apoi programul va afișa pe ecran numărul P, reprezentând n˚.. În cazul în care datele nu respectă restricțiile, se va afișa pe ecran: &#039;&#039;&#039;&amp;quot;Datele nu sunt introduse corect.&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Restricții și precizări==&lt;br /&gt;
1 ≤ n ≤ 1.000.000.000, n este putere a lui 10&lt;br /&gt;
0 ≤ k ≤ 1.000&lt;br /&gt;
&lt;br /&gt;
==Exemplu:==&lt;br /&gt;
&lt;br /&gt;
Intrare&lt;br /&gt;
: 100 3&lt;br /&gt;
&lt;br /&gt;
Ieșire&lt;br /&gt;
: Datele sunt introduse corect.&lt;br /&gt;
: 1000000&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 validare_date(n, k):&lt;br /&gt;
    flag = False&lt;br /&gt;
    if 0 &amp;lt; int(n) &amp;lt;= 1_000_000_000 and 0 &amp;lt;= int(k) &amp;lt;= 1_0000:&lt;br /&gt;
        flag = True&lt;br /&gt;
    return flag&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def calculate_power(n, k):&lt;br /&gt;
    print(n ** k)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    n = int(input())&lt;br /&gt;
    k = int(input())&lt;br /&gt;
    if validare_date(n, k):&lt;br /&gt;
        print(&amp;quot;Datele sunt introduse corect.&amp;quot;)&lt;br /&gt;
        calculate_power(n, k)&lt;br /&gt;
    else:&lt;br /&gt;
        print(&amp;quot;Datele nu sunt introduse corect.&amp;quot;)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
==Explicatie cod==&lt;br /&gt;
Codul Python de mai sus definește două funcții: validare_date și calculate_power. Iată o explicație pentru fiecare dintre ele:&lt;br /&gt;
&lt;br /&gt;
Funcția validare_date(n, k):&lt;br /&gt;
Această funcție primește doi parametri, n și k, reprezentând două numere întregi.&lt;br /&gt;
Verifică dacă n se află în intervalul deschis (0, 1_000_000_000] și dacă k se află în intervalul închis [0, 10_000]. Dacă ambele condiții sunt îndeplinite, variabila flag este setată la True.&lt;br /&gt;
Funcția returnează valoarea variabilei flag.&lt;br /&gt;
Funcția calculate_power(n, k):&lt;br /&gt;
Această funcție primește doi parametri, n și k, reprezentând două numere întregi.&lt;br /&gt;
Funcția calculează n ridicat la puterea k și afișează rezultatul.&lt;br /&gt;
În cadrul secțiunii if __name__ == &amp;quot;__main__&amp;quot;: se realizează următoarele acțiuni:&lt;br /&gt;
&lt;br /&gt;
Se citește de la tastatură un număr întreg n.&lt;br /&gt;
Se citește de la tastatură un număr întreg k.&lt;br /&gt;
Se apelează funcția validare_date(n, k) pentru a verifica validitatea datelor. Dacă datele sunt valide, se afișează mesajul &amp;quot;Datele sunt introduse corect.&amp;quot;, se apelează funcția calculate_power(n, k) pentru a calcula și afișa puterea, altfel se afișează mesajul &amp;quot;Datele nu sunt introduse corect.&amp;quot;&lt;/div&gt;</summary>
		<author><name>Paul Ungur</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=2948_-_Media_Patratica&amp;diff=6816</id>
		<title>2948 - Media Patratica</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=2948_-_Media_Patratica&amp;diff=6816"/>
		<updated>2023-06-29T17:54:41Z</updated>

		<summary type="html">&lt;p&gt;Paul Ungur: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cerința ==&lt;br /&gt;
Se dau &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;  n &amp;lt;/span&amp;gt; numere naturale. Calculați media pătratică a celor &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt; n &amp;lt;/span&amp;gt; numere citite cu &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt; 2 &amp;lt;/span&amp;gt; zecimale exacte.&lt;br /&gt;
&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Programul citește de la tastatură numărul &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt; n&amp;lt;/span&amp;gt;, iar apoi &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt; n&amp;lt;/span&amp;gt; numere naturale.&lt;br /&gt;
&lt;br /&gt;
== Date de ieșire ==&lt;br /&gt;
Dacă datele sunt introduse corect, pe ecran se va afișa: &#039;&#039;&#039;&amp;quot;Datele sunt introduse corect.&amp;quot;&#039;&#039;&#039;, apoi programul va afișa pe ecran media&amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt; pătratică &amp;lt;/span&amp;gt; a celor &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt; n &amp;lt;/span&amp;gt; numere cu &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt; 2 &amp;lt;/span&amp;gt; zecimale exacte.. În cazul în care datele nu respectă restricțiile, se va afișa pe ecran: &#039;&#039;&#039;&amp;quot;Datele nu corespund restricțiilor impuse.&amp;quot;&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Restricții și precizări ==&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt; 1 ≤ n ≤ 1000&amp;lt;/span&amp;gt;&lt;br /&gt;
cele&amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;  n&amp;lt;/span&amp;gt; numere citite vor fi mai mici decât &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt; 1.000.000 &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Exemplu: ==&lt;br /&gt;
Intrare&lt;br /&gt;
: 5&lt;br /&gt;
: 1 2 3 4 5&lt;br /&gt;
&lt;br /&gt;
Ieșire&lt;br /&gt;
: Datele sunt introduse corect.&lt;br /&gt;
: 3.31&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 validare_date_intrare(n, nums):&lt;br /&gt;
    if not 1 &amp;lt;= n &amp;lt;= 1000:&lt;br /&gt;
        print(&amp;quot;Numărul n trebuie să fie între 1 și 1000!&amp;quot;)&lt;br /&gt;
        return False&lt;br /&gt;
    if len(nums) != n:&lt;br /&gt;
        print(&amp;quot;Trebuie să introduceți exact {} numere!&amp;quot;.format(n))&lt;br /&gt;
        return False&lt;br /&gt;
    for nr in nums:&lt;br /&gt;
        if not 1 &amp;lt;= nr &amp;lt;= 1000000:&lt;br /&gt;
            print(&amp;quot;Numerele trebuie să fie cuprinse între 1 și 1.000.000!&amp;quot;)&lt;br /&gt;
            return False&lt;br /&gt;
    print(&amp;quot;Datele sunt introduse corect.&amp;quot;)&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def media_patratica(nums):&lt;br /&gt;
    suma_patrate = sum([num ** 2 for num in nums])&lt;br /&gt;
    media_patratica = (suma_patrate / len(nums)) ** 0.5&lt;br /&gt;
    print(round(media_patratica, 2))&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    n = int(input())&lt;br /&gt;
    nums = list(map(int, input().split()))&lt;br /&gt;
    if validare_date_intrare(n, nums):&lt;br /&gt;
        media_patratica(nums)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
==Explicatie cod==&lt;br /&gt;
Codul Python de mai sus definește două funcții: validare_date_intrare și media_patratica. Iată o explicație pentru fiecare dintre ele:&lt;br /&gt;
&lt;br /&gt;
Funcția validare_date_intrare(n, nums):&lt;br /&gt;
Această funcție primește doi parametri, n și nums, reprezentând un număr și o listă de numere întregi.&lt;br /&gt;
Verifică dacă n respectă restricțiile impuse: trebuie să fie între 1 și 1000. Dacă n nu respectă aceste restricții, afișează un mesaj de eroare și returnează False, semnalând că datele nu sunt valide.&lt;br /&gt;
Verifică apoi dacă lungimea listei nums este egală cu n. Dacă nu este, afișează un mesaj de eroare și returnează False, semnalând că datele nu sunt valide.&lt;br /&gt;
În final, se parcurge fiecare număr nr din lista nums și se verifică dacă fiecare număr respectă restricțiile impuse: trebuie să fie între 1 și 1.000.000. Dacă un număr nu respectă aceste restricții, afișează un mesaj de eroare și returnează False.&lt;br /&gt;
Dacă toate verificările sunt trecute fără a găsi probleme, funcția afișează un mesaj că datele sunt introduse corect și returnează True, semnalând că datele sunt valide.&lt;br /&gt;
Funcția media_patratica(nums):&lt;br /&gt;
Această funcție primește un singur parametru, nums, care reprezintă o listă de numere întregi.&lt;br /&gt;
Funcția calculează media pătratică a numerelor din lista. Inițial, se calculează suma pătratelor tuturor numerelor din lista, utilizând o listă de comprimare.&lt;br /&gt;
Apoi, se calculează media pătratică, împărțind suma pătratelor la lungimea listei și aplicând radicalul pătrat la rezultat.&lt;br /&gt;
Funcția afișează valoarea media pătratică, rotunjită la două zecimale, utilizând funcția round() și formatul &amp;quot;%.2f&amp;quot;.&lt;br /&gt;
În cadrul secțiunii if __name__ == &#039;__main__&#039;: se realizează următoarele acțiuni:&lt;br /&gt;
&lt;br /&gt;
Se citește de la tastatură un număr întreg n.&lt;br /&gt;
Se citește de la tastatură o linie de numere întregi separate prin spațiu și se transformă într-o listă de numere întregi nums, folosind funcția map și split.&lt;br /&gt;
Se apelează funcția validare_date_intrare(n, nums) pentru a verifica validitatea datelor. Dacă datele sunt valide, se calculează media pătratică utilizând funcția media_patratica(nums) și se afișează valoarea acesteia.&lt;/div&gt;</summary>
		<author><name>Paul Ungur</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=2949_-_Media_Armonica&amp;diff=6815</id>
		<title>2949 - Media Armonica</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=2949_-_Media_Armonica&amp;diff=6815"/>
		<updated>2023-06-29T17:52:56Z</updated>

		<summary type="html">&lt;p&gt;Paul Ungur: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cerința ==&lt;br /&gt;
Se dau &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt; n &amp;lt;/span&amp;gt; numere naturale. Calculați media armonică a celor &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt; n &amp;lt;span&amp;gt; numere citite cu &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt; 2 &amp;lt;/span&amp;gt; zecimale exacte.&lt;br /&gt;
&lt;br /&gt;
== Date de intrare == &lt;br /&gt;
Programul citește de la tastatură numărul &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt; n &amp;lt;/span&amp;gt;, iar apoi &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt; n &amp;lt;/span&amp;gt; numere naturale.&lt;br /&gt;
&lt;br /&gt;
== Date de ieșire ==&lt;br /&gt;
Dacă datele sunt introduse corect, pe ecran se va afișa: &#039;&#039;&#039;&amp;quot;Datele sunt introduse corect.&amp;quot;&#039;&#039;&#039;, apoi programul va afișa pe ecran media &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt; armonică &amp;lt;/span&amp;gt; a celor &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt; n &amp;lt;/span&amp;gt; numere cu &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt; 2 &amp;lt;/span&amp;gt; zecimale exacte. În cazul în care datele nu respectă restricțiile, se va afișa pe ecran: &#039;&#039;&#039;&amp;quot;Datele nu corespund restricțiilor impuse.&amp;quot;&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Restricții și precizări == &lt;br /&gt;
&amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt; 1 ≤ n ≤ 1000 &amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;cele n numere citite vor fi mai mici decât 1.000.000&lt;br /&gt;
&lt;br /&gt;
== Exemplu: ==&lt;br /&gt;
Intrare&lt;br /&gt;
: 5&lt;br /&gt;
: 1 2 3 4 5&lt;br /&gt;
&lt;br /&gt;
Ieșire&lt;br /&gt;
: Datele sunt introduse corect.&lt;br /&gt;
: 2.18&lt;br /&gt;
&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
def validare_date_intrare(n, numere):&lt;br /&gt;
    if not 1 &amp;lt;= n &amp;lt;= 1000:&lt;br /&gt;
        print(&amp;quot;Numărul n trebuie să fie între 1 și 1000!&amp;quot;)&lt;br /&gt;
        return False&lt;br /&gt;
    if len(numere) != n:&lt;br /&gt;
        print(&amp;quot;Trebuie să introduceți exact {} numere!&amp;quot;.format(n))&lt;br /&gt;
        return False&lt;br /&gt;
    for nr in numere:&lt;br /&gt;
        if not 1 &amp;lt;= nr &amp;lt;= 1000000:&lt;br /&gt;
            print(&amp;quot;Numerele trebuie să fie cuprinse între 1 și 1.000.000!&amp;quot;)&lt;br /&gt;
            return False&lt;br /&gt;
    print(&amp;quot;Datele sunt introduse corect.&amp;quot;)&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def calculare_media_armonica(n, numere):&lt;br /&gt;
    suma_inverselor = 0&lt;br /&gt;
    for nr in numere:&lt;br /&gt;
        suma_inverselor += 1/nr&lt;br /&gt;
    media_armonica = n / suma_inverselor&lt;br /&gt;
    return media_armonica&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    n = int(input())&lt;br /&gt;
    lista = list(map(int, input().split()))&lt;br /&gt;
    if validare_date_intrare(n, lista):&lt;br /&gt;
        media_armonica = calculare_media_armonica(n, lista)&lt;br /&gt;
        print(&amp;quot;%.2f&amp;quot; % media_armonica)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Explicatie cod==&lt;br /&gt;
Codul Python de mai sus definește două funcții: validare_date_intrare și calculare_media_armonica. Iată o explicație pentru fiecare dintre ele:&lt;br /&gt;
&lt;br /&gt;
Funcția validare_date_intrare(n, numere):&lt;br /&gt;
Această funcție primește doi parametri, n și numere, reprezentând un număr și o listă de numere întregi.&lt;br /&gt;
Verifică mai întâi dacă n respectă restricțiile impuse: trebuie să fie între 1 și 1000. Dacă n nu respectă aceste restricții, afișează un mesaj de eroare și returnează False, semnalând că datele nu sunt valide.&lt;br /&gt;
Verifică apoi dacă lungimea listei numere este egală cu n. Dacă nu este, afișează un mesaj de eroare și returnează False, semnalând că datele nu sunt valide.&lt;br /&gt;
În final, se parcurge fiecare număr nr din lista numere și se verifică dacă fiecare număr respectă restricțiile impuse: trebuie să fie între 1 și 1.000.000. Dacă un număr nu respectă aceste restricții, afișează un mesaj de eroare și returnează False.&lt;br /&gt;
Dacă toate verificările sunt trecute fără a găsi probleme, funcția afișează un mesaj că datele sunt introduse corect și returnează True, semnalând că datele sunt valide.&lt;br /&gt;
Funcția calculare_media_armonica(n, numere):&lt;br /&gt;
Această funcție primește aceiași doi parametri, n și numere, ca și funcția validare_date_intrare.&lt;br /&gt;
Funcția calculează media armonică a numerelor din lista. Inițial, se inițializează o variabilă suma_inverselor cu valoarea 0.&lt;br /&gt;
Apoi, se parcurge fiecare număr nr din lista numere și se adaugă inversa acestuia la suma_inverselor.&lt;br /&gt;
După ce s-au adăugat inverselor tuturor numerelor, se calculează media armonică, împărțind n la suma_inverselor.&lt;br /&gt;
Funcția returnează valoarea mediei armonice.&lt;br /&gt;
În cadrul secțiunii if __name__ == &#039;__main__&#039;: se realizează următoarele acțiuni:&lt;br /&gt;
&lt;br /&gt;
Se citește de la tastatură un număr întreg n.&lt;br /&gt;
Se citește de la tastatură o linie de numere întregi separate prin spațiu și se transformă într-o listă de numere întregi lista, folosind funcția map și split.&lt;br /&gt;
Se apelează funcția validare_date_intrare(n, lista) pentru a verifica validitatea datelor. Dacă datele sunt valide, se calculează media armonică utilizând funcția calculare_media_armonica(n, lista) și se afișează valoarea acesteia utilizând formatul &amp;quot;%.2f&amp;quot; pentru a afișa două zecimale.&lt;/div&gt;</summary>
		<author><name>Paul Ungur</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=2299_-_Media_Geometrica&amp;diff=6814</id>
		<title>2299 - Media Geometrica</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=2299_-_Media_Geometrica&amp;diff=6814"/>
		<updated>2023-06-29T17:52:15Z</updated>

		<summary type="html">&lt;p&gt;Paul Ungur: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cerinta ==&lt;br /&gt;
Se dau &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt; n &amp;lt;/span&amp;gt; numere naturale. Calculați media lor geometrică.&lt;br /&gt;
&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Programul citește de la tastatură numărul natural &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt; n &amp;lt;/span&amp;gt;, apoi &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt; n &amp;lt;/span&amp;gt; numere naturale.&lt;br /&gt;
&lt;br /&gt;
== Date de ieșire ==&lt;br /&gt;
Dacă datele sunt introduse corect, pe ecran se va afișa: &#039;&#039;&#039;&amp;quot;Datele sunt introduse corect.&amp;quot;&#039;&#039;&#039;, apoi programul va afișa pe ecran media geometrică a celor &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt; n &amp;lt;/span&amp;gt; numere. În cazul în care datele nu respectă restricțiile, se va afișa pe ecran: &#039;&#039;&#039;&amp;quot;Datele nu corespund restricțiilor impuse.&amp;quot;&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Restricții și precizări ==&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt; 1 &amp;lt; n ≤ 10 &amp;lt;/span&amp;gt;&lt;br /&gt;
numerele citite vor fi cuprinse între &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt; 0 &amp;lt;/span&amp;gt; și &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt; 50 &amp;lt;/span&amp;gt;.&lt;br /&gt;
rezultatul va fi punctat dacă diferența dintre cel afișat de program și cel corect este mai mică decât &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt; 0.01 &amp;lt;/span&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Exemplu ==&lt;br /&gt;
Intrare&lt;br /&gt;
: 4 &lt;br /&gt;
: 2 4 2 1&lt;br /&gt;
&lt;br /&gt;
Ieșire&lt;br /&gt;
: Datele sunt introduse corect.&lt;br /&gt;
: 2&lt;br /&gt;
&lt;br /&gt;
== Explicație ==&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt; 2⋅4⋅2⋅1−−−−−−−−√4=2 &amp;lt;/span&amp;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 validare(n, lista):&lt;br /&gt;
    # Verificăm dacă numărul n respectă restricțiile impuse&lt;br /&gt;
    if not 1 &amp;lt; n &amp;lt;= 10:&lt;br /&gt;
        print(&amp;quot;Datele nu corespund restricțiilor impuse.&amp;quot;)&lt;br /&gt;
        return False&lt;br /&gt;
&lt;br /&gt;
    # Verificăm dacă numerele din listă respectă restricțiile impuse&lt;br /&gt;
    for nr in lista:&lt;br /&gt;
        if not 0 &amp;lt;= nr &amp;lt;= 50:&lt;br /&gt;
            print(&amp;quot;Datele nu corespund restricțiilor impuse.&amp;quot;)&lt;br /&gt;
            return False&lt;br /&gt;
&lt;br /&gt;
    # Toate validările au trecut&lt;br /&gt;
    print(&amp;quot;Datele sunt introduse corect.&amp;quot;)&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def media_geometrica(n, lista):&lt;br /&gt;
    produs = 1&lt;br /&gt;
    for nr in lista:&lt;br /&gt;
        produs *= nr&lt;br /&gt;
    return produs ** (1 / n)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    n = int(input())&lt;br /&gt;
    lista = list(map(int, input().split()))&lt;br /&gt;
    if validare(n, lista):&lt;br /&gt;
        media = media_geometrica(n, lista)&lt;br /&gt;
        print(int(media))&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Explicatie cod==&lt;br /&gt;
Funcția validare(n, lista):&lt;br /&gt;
Această funcție primește doi parametri, n și lista, reprezentând un număr și o listă de numere întregi.&lt;br /&gt;
În primul rând, funcția verifică dacă n respectă restricțiile impuse: trebuie să fie mai mare decât 1 și mai mic sau egal cu 10. Dacă nu se respectă aceste restricții, afișează un mesaj de eroare și returnează False, semnalând că datele nu sunt valide.&lt;br /&gt;
Apoi, funcția verifică dacă fiecare număr din lista respectă restricțiile impuse: trebuie să fie între 0 și 50 (inclusiv). Dacă un număr nu respectă aceste restricții, afișează un mesaj de eroare și returnează False.&lt;br /&gt;
Dacă ambele verificări trec fără a găsi probleme, funcția afișează un mesaj că datele sunt introduse corect și returnează True, semnalând că datele sunt valide.&lt;br /&gt;
Funcția media_geometrica(n, lista):&lt;br /&gt;
Această funcție primește aceiași doi parametri, n și lista, ca și funcția validare.&lt;br /&gt;
Funcția calculează media geometrică a numerelor din lista. Inițial, se inițializează o variabilă produs cu valoarea 1.&lt;br /&gt;
Apoi, se parcurge fiecare număr nr din lista și se înmulțește produs cu nr.&lt;br /&gt;
După ce s-au înmulțit toate numerele din lista, se calculează media geometrică ridicând produs la puterea 1 / n, unde n este numărul dat ca parametru.&lt;br /&gt;
Funcția returnează valoarea mediei geometrice.&lt;br /&gt;
În cadrul secțiunii if __name__ == &#039;__main__&#039;: se realizează următoarele acțiuni:&lt;br /&gt;
&lt;br /&gt;
Se citește de la tastatură un număr întreg n.&lt;br /&gt;
Se citește de la tastatură o linie de numere întregi separate prin spațiu și se transformă într-o listă de numere întregi lista, folosind funcția map și split.&lt;br /&gt;
Se apelează funcția validare(n, lista) pentru a verifica validitatea datelor. Dacă datele sunt valide, se calculează media geometrică utilizând funcția media_geometrica(n, lista) și se afișează valoarea acesteia (convertită la întreg folosind int()).&lt;/div&gt;</summary>
		<author><name>Paul Ungur</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=2299_-_Media_Geometrica&amp;diff=6813</id>
		<title>2299 - Media Geometrica</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=2299_-_Media_Geometrica&amp;diff=6813"/>
		<updated>2023-06-29T17:50:01Z</updated>

		<summary type="html">&lt;p&gt;Paul Ungur: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cerinta ==&lt;br /&gt;
Se dau &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt; n &amp;lt;/span&amp;gt; numere naturale. Calculați media lor geometrică.&lt;br /&gt;
&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Programul citește de la tastatură numărul natural &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt; n &amp;lt;/span&amp;gt;, apoi &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt; n &amp;lt;/span&amp;gt; numere naturale.&lt;br /&gt;
&lt;br /&gt;
== Date de ieșire ==&lt;br /&gt;
Dacă datele sunt introduse corect, pe ecran se va afișa: &#039;&#039;&#039;&amp;quot;Datele sunt introduse corect.&amp;quot;&#039;&#039;&#039;, apoi programul va afișa pe ecran media geometrică a celor &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt; n &amp;lt;/span&amp;gt; numere. În cazul în care datele nu respectă restricțiile, se va afișa pe ecran: &#039;&#039;&#039;&amp;quot;Datele nu corespund restricțiilor impuse.&amp;quot;&#039;&#039;&#039;.&lt;br /&gt;
Programul va afișa pe ecran media geometrică a celor &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt; n &amp;lt;/span&amp;gt; numere.&lt;br /&gt;
&lt;br /&gt;
== Restricții și precizări ==&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt; 1 &amp;lt; n ≤ 10 &amp;lt;/span&amp;gt;&lt;br /&gt;
numerele citite vor fi cuprinse între &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt; 0 &amp;lt;/span&amp;gt; și &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt; 50 &amp;lt;/span&amp;gt;.&lt;br /&gt;
rezultatul va fi punctat dacă diferența dintre cel afișat de program și cel corect este mai mică decât &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt; 0.01 &amp;lt;/span&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Exemplu ==&lt;br /&gt;
Intrare&lt;br /&gt;
: 4 &lt;br /&gt;
: 2 4 2 1&lt;br /&gt;
&lt;br /&gt;
Ieșire&lt;br /&gt;
: Datele sunt introduse corect.&lt;br /&gt;
: 2&lt;br /&gt;
&lt;br /&gt;
== Explicație ==&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt; 2⋅4⋅2⋅1−−−−−−−−√4=2 &amp;lt;/span&amp;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 validare(n, lista):&lt;br /&gt;
    # Verificăm dacă numărul n respectă restricțiile impuse&lt;br /&gt;
    if not 1 &amp;lt; n &amp;lt;= 10:&lt;br /&gt;
        print(&amp;quot;Datele nu corespund restricțiilor impuse.&amp;quot;)&lt;br /&gt;
        return False&lt;br /&gt;
&lt;br /&gt;
    # Verificăm dacă numerele din listă respectă restricțiile impuse&lt;br /&gt;
    for nr in lista:&lt;br /&gt;
        if not 0 &amp;lt;= nr &amp;lt;= 50:&lt;br /&gt;
            print(&amp;quot;Datele nu corespund restricțiilor impuse.&amp;quot;)&lt;br /&gt;
            return False&lt;br /&gt;
&lt;br /&gt;
    # Toate validările au trecut&lt;br /&gt;
    print(&amp;quot;Datele sunt introduse corect.&amp;quot;)&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def media_geometrica(n, lista):&lt;br /&gt;
    produs = 1&lt;br /&gt;
    for nr in lista:&lt;br /&gt;
        produs *= nr&lt;br /&gt;
    return produs ** (1 / n)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    n = int(input())&lt;br /&gt;
    lista = list(map(int, input().split()))&lt;br /&gt;
    if validare(n, lista):&lt;br /&gt;
        media = media_geometrica(n, lista)&lt;br /&gt;
        print(int(media))&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Explicatie cod==&lt;br /&gt;
Funcția validare(n, lista):&lt;br /&gt;
Această funcție primește doi parametri, n și lista, reprezentând un număr și o listă de numere întregi.&lt;br /&gt;
În primul rând, funcția verifică dacă n respectă restricțiile impuse: trebuie să fie mai mare decât 1 și mai mic sau egal cu 10. Dacă nu se respectă aceste restricții, afișează un mesaj de eroare și returnează False, semnalând că datele nu sunt valide.&lt;br /&gt;
Apoi, funcția verifică dacă fiecare număr din lista respectă restricțiile impuse: trebuie să fie între 0 și 50 (inclusiv). Dacă un număr nu respectă aceste restricții, afișează un mesaj de eroare și returnează False.&lt;br /&gt;
Dacă ambele verificări trec fără a găsi probleme, funcția afișează un mesaj că datele sunt introduse corect și returnează True, semnalând că datele sunt valide.&lt;br /&gt;
Funcția media_geometrica(n, lista):&lt;br /&gt;
Această funcție primește aceiași doi parametri, n și lista, ca și funcția validare.&lt;br /&gt;
Funcția calculează media geometrică a numerelor din lista. Inițial, se inițializează o variabilă produs cu valoarea 1.&lt;br /&gt;
Apoi, se parcurge fiecare număr nr din lista și se înmulțește produs cu nr.&lt;br /&gt;
După ce s-au înmulțit toate numerele din lista, se calculează media geometrică ridicând produs la puterea 1 / n, unde n este numărul dat ca parametru.&lt;br /&gt;
Funcția returnează valoarea mediei geometrice.&lt;br /&gt;
În cadrul secțiunii if __name__ == &#039;__main__&#039;: se realizează următoarele acțiuni:&lt;br /&gt;
&lt;br /&gt;
Se citește de la tastatură un număr întreg n.&lt;br /&gt;
Se citește de la tastatură o linie de numere întregi separate prin spațiu și se transformă într-o listă de numere întregi lista, folosind funcția map și split.&lt;br /&gt;
Se apelează funcția validare(n, lista) pentru a verifica validitatea datelor. Dacă datele sunt valide, se calculează media geometrică utilizând funcția media_geometrica(n, lista) și se afișează valoarea acesteia (convertită la întreg folosind int()).&lt;/div&gt;</summary>
		<author><name>Paul Ungur</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=2112_-_Tablita&amp;diff=6629</id>
		<title>2112 - Tablita</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=2112_-_Tablita&amp;diff=6629"/>
		<updated>2023-05-15T17:54:35Z</updated>

		<summary type="html">&lt;p&gt;Paul Ungur: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Adrian participă la o expediţie, împreună cu colegii lui. La un moment dat, copiii descoperă, lângă un copac, &amp;lt;span style=“color: red”&amp;gt; 5&amp;lt;/span&amp;gt; tăbliţe vechi. Primele &amp;lt;span style=“color: red”&amp;gt; 4&amp;lt;/span&amp;gt; tăbliţe sunt inscripţionate complet. Prima tăbliţă conţinea textul : “Grupa &amp;lt;span style=“color: red”&amp;gt; 1&amp;lt;/span&amp;gt; conţine numărul &amp;lt;span style=“color: red”&amp;gt; 1&amp;lt;/span&amp;gt;”, a doua tăbliţă avea textul : „Grupa &amp;lt;span style=“color: red”&amp;gt; 2&amp;lt;/span&amp;gt; conţine numerele &amp;lt;span style=“color: red”&amp;gt; 2&amp;lt;/span&amp;gt; şi &amp;lt;span style=“color: red”&amp;gt; 3&amp;lt;/span&amp;gt;”, a treia tăbliţă avea textul: „Grupa 3 contine numerele &amp;lt;span style=“color: red”&amp;gt; 4&amp;lt;/span&amp;gt;,&amp;lt;span style=“color: red”&amp;gt; 5&amp;lt;/span&amp;gt; şi &amp;lt;span style=“color: red”&amp;gt; 6&amp;lt;/span&amp;gt;” , a patra tăbliţă avea textul: „Grupa &amp;lt;span style=“color: red”&amp;gt; 4&amp;lt;/span&amp;gt; conţine numerele &amp;lt;span style=“color: red”&amp;gt; 7&amp;lt;/span&amp;gt;,&amp;lt;span style=“color: red”&amp;gt; 8&amp;lt;/span&amp;gt;,&amp;lt;span style=“color: red”&amp;gt; 9&amp;lt;/span&amp;gt; şi &amp;lt;span style=“color: red”&amp;gt; 10&amp;lt;/span&amp;gt;.” Pe următoarea tăbliţă găsită era înscris un singur număr, celelalte numere şi numărul grupei erau şterse. Adrian le solicită colegilor lui să descopere ce grupă era scrisă pe a cincea tabliţă găsită.&lt;br /&gt;
&lt;br /&gt;
==Cerința==&lt;br /&gt;
Descoperiţi regula de inscripţionare a tăbliţelor şi pentru numărul găsit pe a cincea tăbliţă, determinaţi din ce grupă face parte.&lt;br /&gt;
&lt;br /&gt;
==Date de intrare==&lt;br /&gt;
Fişierul de intrare tablita.in conţine pe prima linie un număr natural &amp;lt;span style=“color: red”&amp;gt; N&amp;lt;/span&amp;gt;, ce reprezintă numărul care era înscris pe a cincea tăbliţă descoperită de Adrian.&lt;br /&gt;
&lt;br /&gt;
==Date de ieșire==&lt;br /&gt;
Fişierul de ieşire tablita.out va conţine un număr natural ce reprezintă grupa în care se află numărul &amp;lt;span style=“color: red”&amp;gt; N&amp;lt;/span&amp;gt;, înscris pe a cincea tabliţă găsită.&lt;br /&gt;
&lt;br /&gt;
==Restricții și precizări==&lt;br /&gt;
Un număr înscris pe o tăbliţă este nenul şi conţine cel mult &amp;lt;span style=“color: red”&amp;gt; 8&amp;lt;/span&amp;gt; cifre;&lt;br /&gt;
&lt;br /&gt;
==Exemplu:==&lt;br /&gt;
&amp;lt;span style=“color: red”&amp;gt; tablita.in&amp;lt;/span&amp;gt;&lt;br /&gt;
100&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=“color: red”&amp;gt; tablita.out&amp;lt;/span&amp;gt;&lt;br /&gt;
14&lt;br /&gt;
&lt;br /&gt;
==Explicație==&lt;br /&gt;
Numărul &amp;lt;span style=“color: red”&amp;gt; 100&amp;lt;/span&amp;gt; ce apare pe a cincea tăbliţă face parte din grupa &amp;lt;span style=“color: red”&amp;gt; 14&amp;lt;/span&amp;gt;.&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 validare(n):&lt;br /&gt;
    if not (1 &amp;lt;= n &amp;lt;= 100_000_000):&lt;br /&gt;
        return False&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def tablita(n):&lt;br /&gt;
    x, cnt = 1, 1&lt;br /&gt;
    while x &amp;lt; n:&lt;br /&gt;
        cnt += 1&lt;br /&gt;
        x += cnt&lt;br /&gt;
&lt;br /&gt;
    with open(&amp;quot;tablita.out&amp;quot;, &amp;quot;w&amp;quot;) as fout:&lt;br /&gt;
        fout.write(str(cnt))&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    fin = open(&amp;quot;tablita.in&amp;quot;)&lt;br /&gt;
    fout = open(&amp;quot;tablita.out&amp;quot;, &amp;quot;w&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    n = int(fin.readline())&lt;br /&gt;
    if validare(n):&lt;br /&gt;
        print(&amp;quot;Date de intrare valide&amp;quot;)&lt;br /&gt;
        tablita(n)&lt;br /&gt;
    else:&lt;br /&gt;
        print(&amp;quot;Date de intrare invalide&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    fin.close()&lt;br /&gt;
    fout.close()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
==Explicatie cod:==&lt;br /&gt;
validare(n): Această funcție primește un număr întreg n și verifică dacă acesta se află în intervalul specificat, adică între 1 și 100.000.000. Dacă n nu se află în acest interval, funcția returnează False, altfel returnează True.&lt;br /&gt;
tablita(n): Această funcție primește un număr întreg n și calculează valoarea cnt reprezentând numărul de iterații necesare pentru a ajunge la x &amp;gt;= n. Inițial, x este setat la 1 și cnt este setat la 1. Apoi, se crește cnt cu 1 și se adaugă valoarea cnt la x până când x devine mai mare sau egal cu n. La final, rezultatul cnt este scris în fișierul &amp;quot;tablita.out&amp;quot;.&lt;br /&gt;
În blocul __main__, se deschide fișierul de intrare &amp;quot;tablita.in&amp;quot; pentru citire și fișierul de ieșire &amp;quot;tablita.out&amp;quot; pentru scriere. Se citește numărul n din fișierul de intrare și se validează folosind funcția validare(). Dacă n este valid, se afișează &amp;quot;Date de intrare valide&amp;quot; și se apelează funcția tablita(n) pentru a calcula rezultatul și a-l scrie în fișierul de ieșire. În caz contrar, se afișează &amp;quot;Date de intrare invalide&amp;quot;. La final, fișierele de intrare și de ieșire sunt închise.&lt;/div&gt;</summary>
		<author><name>Paul Ungur</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=2279_-_Concurs_Perf&amp;diff=6628</id>
		<title>2279 - Concurs Perf</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=2279_-_Concurs_Perf&amp;diff=6628"/>
		<updated>2023-05-15T17:52:22Z</updated>

		<summary type="html">&lt;p&gt;Paul Ungur: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Cerința==&lt;br /&gt;
Chef vrea să organizeze un concurs. Previziunea nivelurilor de dificultate a problemelor poate fi o sarcină descurajantă. Chef vrea să echilibreze nivelurile de dificultate ale problemelor.&lt;br /&gt;
&lt;br /&gt;
Să presupunem că un concurs a avut &amp;lt;span style=“color: red”&amp;gt; P&amp;lt;/span&amp;gt; participanți în total. &amp;lt;span style=“color: red”&amp;gt; O&amp;lt;/span&amp;gt; problemă care a fost rezolvată de cel puțin jumătate dintre participanți (adică &amp;lt;span style=“color: red”&amp;gt; P/2&amp;lt;/span&amp;gt;) este considerată ușoară. &amp;lt;span style=“color: red”&amp;gt; O&amp;lt;/span&amp;gt; problemă rezolvată de participanții de cel mult &amp;lt;span style=“color: red”&amp;gt; P/10&amp;lt;/span&amp;gt; este considerată dificilă.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Chef vrea echilibru. Potrivit lui, un concurs echilibrat trebuie să aibă exact &amp;lt;span style=“color: red”&amp;gt; 1&amp;lt;/span&amp;gt; problemă ușoară și exact &amp;lt;span style=“color: red”&amp;gt; 2&amp;lt;/span&amp;gt; probleme grele. Vi se oferă descrierea problemelor &amp;lt;span style=“color: red”&amp;gt; N&amp;lt;/span&amp;gt; și numărul de participanți care rezolvă aceste probleme. Puteți spune dacă concursul a fost echilibrat sau nu?&lt;br /&gt;
&lt;br /&gt;
==Date de intrare==&lt;br /&gt;
Primul rând conține un număr întreg &amp;lt;span style=“color: red”&amp;gt; T&amp;lt;/span&amp;gt; care indică numărul de cazuri de testare.&lt;br /&gt;
Prima linie a fiecărui caz de testat conține două numere întregi &amp;lt;span style=“color: red”&amp;gt; N&amp;lt;/span&amp;gt; și &amp;lt;span style=“color: red”&amp;gt; P&amp;lt;/span&amp;gt; indicând numărul de probleme, respectiv numărul de participanți.&lt;br /&gt;
Cea de-a doua linie conține &amp;lt;span style=“color: red”&amp;gt; N&amp;lt;/span&amp;gt; numere întregi, separate prin spațiu, al căror număr indică numărul de participanți care rezolvă problema cu numărul de ordine &amp;lt;span style=“color: red”&amp;gt; i&amp;lt;/span&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Date de ieșire==&lt;br /&gt;
Pentru fiecare caz, afișati da, dacă concursul este echilibrat, sau nu.&lt;br /&gt;
&lt;br /&gt;
==Restricții și precizări==&lt;br /&gt;
&amp;lt;span style=“color: red”&amp;gt; 1 ≤ T, N ≤ 500&lt;br /&gt;
1 ≤ P ≤ 10^8^&lt;br /&gt;
1 ≤ numărul de participanți care rezolvă o problemă ≤ P&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Exemplu:==&lt;br /&gt;
Intrare&lt;br /&gt;
6&lt;br /&gt;
3 100&lt;br /&gt;
10 1 100&lt;br /&gt;
3 100&lt;br /&gt;
11 1 100&lt;br /&gt;
3 100&lt;br /&gt;
10 1 10&lt;br /&gt;
3 100&lt;br /&gt;
10 1 50&lt;br /&gt;
4 100&lt;br /&gt;
50 50 50 50&lt;br /&gt;
4 100&lt;br /&gt;
1 1 1 1&lt;br /&gt;
&lt;br /&gt;
Ieșire&lt;br /&gt;
da&lt;br /&gt;
nu&lt;br /&gt;
nu&lt;br /&gt;
da&lt;br /&gt;
nu&lt;br /&gt;
nu&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 validare(num_teste, nr_probleme, punctaj_maxim, probleme):&lt;br /&gt;
    if num_teste &amp;lt;= 0 or nr_probleme &amp;lt;= 0 or punctaj_maxim &amp;lt;= 0:&lt;br /&gt;
        return False&lt;br /&gt;
    if len(probleme) != nr_probleme:&lt;br /&gt;
        return False&lt;br /&gt;
    if not all(1 &amp;lt;= x &amp;lt;= punctaj_maxim for x in probleme):&lt;br /&gt;
        return False&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def citeste_input():&lt;br /&gt;
    num_teste = int(input())&lt;br /&gt;
    test_cases = []&lt;br /&gt;
    for i in range(num_teste):&lt;br /&gt;
        nr_probleme, punctaj_maxim = map(int, input().split())&lt;br /&gt;
        probleme = list(map(int, input().split()))&lt;br /&gt;
        if not validare(i+1, nr_probleme, punctaj_maxim, probleme):&lt;br /&gt;
            return None&lt;br /&gt;
        test_cases.append((nr_probleme, punctaj_maxim, probleme))&lt;br /&gt;
    return test_cases&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def este_balansata(nr_probleme, punctaj_maxim, probleme):&lt;br /&gt;
    usor = 0&lt;br /&gt;
    greu = 0&lt;br /&gt;
    for i in range(nr_probleme):&lt;br /&gt;
        if probleme[i] &amp;gt; punctaj_maxim // 2:&lt;br /&gt;
            usor += 1&lt;br /&gt;
        elif probleme[i] &amp;lt;= punctaj_maxim // 10:&lt;br /&gt;
            greu += 1&lt;br /&gt;
    return usor == 1 and greu == 2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    teste = citeste_input()&lt;br /&gt;
    if teste is None:&lt;br /&gt;
        print(&amp;quot;Input invalid&amp;quot;)&lt;br /&gt;
    for test in teste:&lt;br /&gt;
        nr_probleme, punctaj_maxim, probleme = test&lt;br /&gt;
        if este_balansata(nr_probleme, punctaj_maxim, probleme):&lt;br /&gt;
            print(&amp;quot;da&amp;quot;)&lt;br /&gt;
        else:&lt;br /&gt;
            print(&amp;quot;nu&amp;quot;)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
==Explicatie cod:==&lt;br /&gt;
validare(num_teste, nr_probleme, punctaj_maxim, probleme): Această funcție primește ca parametri numărul de teste (num_teste), numărul de probleme (nr_probleme), punctajul maxim (punctaj_maxim) și o listă de punctaje pentru fiecare problemă (probleme). Scopul funcției este de a valida datele de intrare pentru un set de teste. Verificările includ asigurarea că numărul de teste, numărul de probleme și punctajul maxim sunt mai mari decât zero și că lungimea listei probleme este egală cu numărul de probleme. De asemenea, se verifică ca fiecare punctaj să fie cuprins între 1 și punctajul maxim inclusiv. Funcția returnează True dacă datele de intrare sunt valide și False în caz contrar.&lt;br /&gt;
citeste_input(): Această funcție nu primește niciun argument. Scopul ei este să citească datele de intrare și să construiască o listă de teste. Întâi se citește numărul total de teste (num_teste). Apoi, pentru fiecare test, se citește numărul de probleme (nr_probleme), punctajul maxim (punctaj_maxim) și lista de punctaje pentru fiecare problemă (probleme). După fiecare citire, se validează datele apelând funcția validare() și se verifică dacă rezultatul validării este False. Dacă datele de intrare sunt invalide, funcția returnează None. În caz contrar, se adaugă un tuplu format din numărul de probleme, punctajul maxim și lista de punctaje în lista test_cases. La final, funcția returnează lista de teste test_cases.&lt;br /&gt;
este_balansata(nr_probleme, punctaj_maxim, probleme): Această funcție primește numărul de probleme (nr_probleme), punctajul maxim (punctaj_maxim) și lista de punctaje pentru fiecare problemă (probleme) pentru un test specific. Scopul funcției este de a determina dacă distribuția punctajelor este echilibrată în funcție de cerințele urmărite. Se parcurge lista de punctaje și se numără de câte ori un punctaj este mai mare decât jumătate din punctajul maxim (usor) și de câte ori este mai mic sau egal cu un zecime din punctajul maxim (greu). Funcția returnează True dacă există exact o problemă ușoară (cu punctaj mai mare decât jumătate din punctajul maxim) și exact două probleme grele (cu punctaj mai mic sau egal cu un zecime din punctajul maxim). În caz contrar, funcția returnează False.&lt;/div&gt;</summary>
		<author><name>Paul Ungur</name></author>
	</entry>
</feed>