<?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=Cuceu+Andrei</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=Cuceu+Andrei"/>
	<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/wiki/Special:Contributions/Cuceu_Andrei"/>
	<updated>2026-05-01T02:34:32Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.42.1</generator>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=3813_-_Unghiuri&amp;diff=6213</id>
		<title>3813 - Unghiuri</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=3813_-_Unghiuri&amp;diff=6213"/>
		<updated>2023-05-07T20:18:21Z</updated>

		<summary type="html">&lt;p&gt;Cuceu Andrei: Pagină nouă:  ==Cerință==  Se dau lungimile laturilor unui triunghi &amp;#039;&amp;#039;&amp;#039;ABC&amp;#039;&amp;#039;&amp;#039;. Aflati masurile unghiurilor &amp;#039;&amp;#039;&amp;#039;A, B, C&amp;#039;&amp;#039;&amp;#039;.   ==Date de intrare==  Programul citește de la tastatură lungimile laturilor &amp;#039;&amp;#039;&amp;#039;AB, BC, AC&amp;#039;&amp;#039;&amp;#039;.   ==Date de ieșire==  Programul va afișa pe ecran masura unghiurilor &amp;#039;&amp;#039;&amp;#039;A, B, C&amp;#039;&amp;#039;&amp;#039; cu &amp;#039;&amp;#039;&amp;#039;2&amp;#039;&amp;#039;&amp;#039; zecimale exacte daca triunghiul este valid, altfel se afiseaza mesajul &amp;#039;&amp;#039;&amp;#039;Imposibil&amp;#039;&amp;#039;&amp;#039;.  ==Restricții și precizări==  *&amp;#039;&amp;#039;&amp;#039;1 ≤ AB,BC,AC ≤ 1000&amp;#039;&amp;#039;&amp;#039;  ==Exemplul 1== ;&amp;#039;&amp;#039;&amp;#039;Intr...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
==Cerință==&lt;br /&gt;
&lt;br /&gt;
Se dau lungimile laturilor unui triunghi &#039;&#039;&#039;ABC&#039;&#039;&#039;. Aflati masurile unghiurilor &#039;&#039;&#039;A, B, C&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Date de intrare==&lt;br /&gt;
&lt;br /&gt;
Programul citește de la tastatură lungimile laturilor &#039;&#039;&#039;AB, BC, AC&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Date de ieșire==&lt;br /&gt;
&lt;br /&gt;
Programul va afișa pe ecran masura unghiurilor &#039;&#039;&#039;A, B, C&#039;&#039;&#039; cu &#039;&#039;&#039;2&#039;&#039;&#039; zecimale exacte daca triunghiul este valid, altfel se afiseaza mesajul &#039;&#039;&#039;Imposibil&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==Restricții și precizări==&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;1 ≤ AB,BC,AC ≤ 1000&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Exemplul 1==&lt;br /&gt;
;&#039;&#039;&#039;Intrare &#039;&#039;&#039;&lt;br /&gt;
:7 8 6&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Ieșire &#039;&#039;&#039;&lt;br /&gt;
:Datele de intrare corespund restrictiilor impuse.&lt;br /&gt;
:57.91 75.52 46.57&lt;br /&gt;
&lt;br /&gt;
==Exemplul 2==&lt;br /&gt;
;&#039;&#039;&#039;Intrare &#039;&#039;&#039;&lt;br /&gt;
:4 5 10&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Ieșire &#039;&#039;&#039;&lt;br /&gt;
:Datele de intrare corespund restrictiilor impuse.&lt;br /&gt;
:Imposibil&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;quot;1&amp;quot; start=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
import math&lt;br /&gt;
&lt;br /&gt;
def validate_triangle(a, b, c):&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    Verifica daca triunghiul cu laturile a, b si c este valid.&lt;br /&gt;
    Returneaza True daca triunghiul este valid, altfel False.&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    if a + b &amp;lt;= c or a + c &amp;lt;= b or b + c &amp;lt;= a:&lt;br /&gt;
        return False&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
def calculate_angles(a, b, c):&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    Calculeaza masurile unghiurilor triunghiului cu laturile a, b si c.&lt;br /&gt;
    Returneaza un tuple cu valorile ungiurilor in ordinea A, B, C.&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    if not validate_triangle(a, b, c):&lt;br /&gt;
        return &amp;quot;Imposibil&amp;quot;&lt;br /&gt;
    &lt;br /&gt;
    angle_a = round(math.degrees(math.acos((b**2 + c**2 - a**2)/(2*b*c))), 2)&lt;br /&gt;
    angle_b = round(math.degrees(math.acos((a**2 + c**2 - b**2)/(2*a*c))), 2)&lt;br /&gt;
    angle_c = round(math.degrees(math.acos((a**2 + b**2 - c**2)/(2*a*b))), 2)&lt;br /&gt;
    &lt;br /&gt;
    return (angle_a, angle_b, angle_c)&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
    a, b, c = map(float, input().split())&lt;br /&gt;
    angles = calculate_angles(a, b, c)&lt;br /&gt;
    if angles == &amp;quot;Imposibil&amp;quot;:&lt;br /&gt;
        print(&amp;quot;Imposibil&amp;quot;)&lt;br /&gt;
    else:&lt;br /&gt;
        print(*angles)&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    main()&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Explicație==&lt;br /&gt;
Funcția validate_triangle verifică dacă triunghiul este valid, returnând True dacă este valid și False altfel. Aceasta verifică dacă suma a două laturi este mai mare decât lungimea celei de-a treia laturi, ceea ce este condiția necesară pentru a forma un triunghi valid.&lt;br /&gt;
&lt;br /&gt;
Funcția calculate_angles primește lungimile laturilor triunghiului și calculează masurile unghiurilor acestuia folosind legea cosinusului. Rezultatele sunt rotunjite la 2 zecimale cu funcția round. Dacă triunghiul nu este valid, funcția returnează mesajul &amp;quot;Imposibil&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Funcția main citește de la tastatură lungimile laturilor triunghiului și apelează funcția calculate_angles. Dacă triunghiul nu este valid, afișează mesajul &amp;quot;Imposibil&amp;quot;, altfel afișează masurile unghiurilor folosind print(*angles), unde angles este un tuple cu valorile ungiurilor.&lt;/div&gt;</summary>
		<author><name>Cuceu Andrei</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=3812_-_%C3%8En%C4%83l%C8%9Bimi2&amp;diff=6212</id>
		<title>3812 - Înălțimi2</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=3812_-_%C3%8En%C4%83l%C8%9Bimi2&amp;diff=6212"/>
		<updated>2023-05-07T20:10:08Z</updated>

		<summary type="html">&lt;p&gt;Cuceu Andrei: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Cerință==&lt;br /&gt;
&lt;br /&gt;
Se dau lungimile laturilor unui triunghi &#039;&#039;&#039;ABC&#039;&#039;&#039;. Calculati lungimile inaltimilor duse din &#039;&#039;&#039;A, B, C&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Date de intrare==&lt;br /&gt;
&lt;br /&gt;
Programul citește de la tastatură numerele &#039;&#039;&#039;a, b, c&#039;&#039;&#039; reprezentand lungimile laturilor &#039;&#039;&#039;AB, BC, AC&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==Date de ieșire==&lt;br /&gt;
Dacă datele sunt introduse corect, pe ecran se va afișa: &amp;quot;Datele de intrare corespund restricțiilor impuse.&amp;quot;&lt;br /&gt;
Programul va afișa pe ecran lungimile inaltimilor triunghiului cu &#039;&#039;&#039;2&#039;&#039;&#039; zecimale exacte daca acesta este valid, altfel se afiseaza mesajul Imposibil. În caz contrar, se va afișa pe ecran: &amp;quot;Datele de intrare nu corespund restricțiilor impuse.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==Restricții și precizări==&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;1 ≤ a, b, c ≤ 1000&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Exemplul 1==&lt;br /&gt;
;&#039;&#039;&#039;Intrare &#039;&#039;&#039;&lt;br /&gt;
:3 4 5&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Ieșire &#039;&#039;&#039;&lt;br /&gt;
:Datele de intrare corespund restrictiilor impuse.&lt;br /&gt;
:4.00 3.00 2.40&lt;br /&gt;
&lt;br /&gt;
==Exemplul 2==&lt;br /&gt;
;&#039;&#039;&#039;Intrare &#039;&#039;&#039;&lt;br /&gt;
:4 5 10&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Ieșire &#039;&#039;&#039;&lt;br /&gt;
:Datele de intrare corespund restrictiilor impuse.&lt;br /&gt;
:Imposibil&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;quot;1&amp;quot; start=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
def validate_triangle(a, b, c):&lt;br /&gt;
    if a + b &amp;gt; c and a + c &amp;gt; b and b + c &amp;gt; a:&lt;br /&gt;
        return True&lt;br /&gt;
    return False&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def validare(a, b, c):&lt;br /&gt;
    return 1 &amp;lt;= int(a) &amp;lt;= 1000 and 1 &amp;lt;= int(b) &amp;lt;= 1000 and 1 &amp;lt;= int(c) &amp;lt;= 1000&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def calculate_altitudes(a, b, c):&lt;br /&gt;
    if validate_triangle(a, b, c):&lt;br /&gt;
        p = (a + b + c) / 2&lt;br /&gt;
        area = (p * (p - a) * (p - b) * (p - c)) ** 0.5&lt;br /&gt;
        ha = 2 * area / a&lt;br /&gt;
        hb = 2 * area / b&lt;br /&gt;
        hc = 2 * area / c&lt;br /&gt;
        return round(ha, 2), round(hb, 2), round(hc, 2)&lt;br /&gt;
    else:&lt;br /&gt;
        return &amp;quot;Imposibil&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    a, b, c = map(str, input().split())&lt;br /&gt;
    if validare(a, b, c):&lt;br /&gt;
        print(&amp;quot;Datele de intrare corespund restrictiilor impuse.&amp;quot;)&lt;br /&gt;
        a, b, c = int(a), int(b), int(c)&lt;br /&gt;
        altitudes = calculate_altitudes(a, b, c)&lt;br /&gt;
        if isinstance(altitudes, tuple):&lt;br /&gt;
            ha, hb, hc = altitudes&lt;br /&gt;
            print(round(ha, 2), round(hb, 2), round(hc, 2))&lt;br /&gt;
        else:&lt;br /&gt;
            print(altitudes)&lt;br /&gt;
    else:&lt;br /&gt;
        print(&amp;quot;Datele de intrare nu corespund restrictiilor impuse.&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Explicație==&lt;br /&gt;
&lt;br /&gt;
Acest cod reprezintă un program Python care calculează înălțimile unui triunghi, având date cele trei laturi ale sale.&lt;br /&gt;
&lt;br /&gt;
Funcția validate_triangle verifică dacă cele trei laturi date pot forma un triunghi valid, utilizând proprietatea că suma oricăror două laturi trebuie să fie mai mare decât cea de-a treia latură.&lt;br /&gt;
&lt;br /&gt;
Funcția validare verifică dacă valorile laturilor sunt între 1 și 1000.&lt;br /&gt;
&lt;br /&gt;
Funcția calculate_altitudes calculează înălțimile triunghiului utilizând formula standard care folosește aria triunghiului și lungimile laturilor. În cazul în care laturile nu formează un triunghi valid, funcția returnează o valoare specială &amp;quot;Imposibil&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
În cadrul blocului principal de cod, valorile laturilor triunghiului sunt citite de la tastatură și apoi verificate prin intermediul funcției validare. Dacă valorile sunt valide, se calculează înălțimile triunghiului prin apelarea funcției calculate_altitudes. Dacă aceasta returnează o tuplă, valorile înălțimilor sunt afișate pe ecran rotunjite la două zecimale. Dacă funcția calculate_altitudes returnează valoarea specială &amp;quot;Imposibil&amp;quot;, se afișează acest mesaj pe ecran. În caz contrar, se afișează un mesaj care indică că datele de intrare sunt valide.&lt;/div&gt;</summary>
		<author><name>Cuceu Andrei</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=3806_-_Mediane&amp;diff=6204</id>
		<title>3806 - Mediane</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=3806_-_Mediane&amp;diff=6204"/>
		<updated>2023-05-07T19:55:29Z</updated>

		<summary type="html">&lt;p&gt;Cuceu Andrei: Pagină nouă:  ==Cerință==  Se dau lungimile laturilor unui triunghi &amp;#039;&amp;#039;&amp;#039;ABC&amp;#039;&amp;#039;&amp;#039;. Aflați lungimile medianelor duse din &amp;#039;&amp;#039;&amp;#039;A,B si C&amp;#039;&amp;#039;&amp;#039;.    ==Date de intrare==  Programul citește de la tastatură numerele a,b,c, reprezentând lungimile laturilor AB,BC,AC.  ==Date de ieșire==  Programul va afișa pe ecran trei numere, reprezentând lungimile celor 3 mediane, fiecare cu 2 zecimale exacte, fără rotunjire, daca triunghiul este valid, altfel se afiseaza mesajul Imposibil.   ==Restricții și...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
==Cerință==&lt;br /&gt;
&lt;br /&gt;
Se dau lungimile laturilor unui triunghi &#039;&#039;&#039;ABC&#039;&#039;&#039;. Aflați lungimile medianelor duse din &#039;&#039;&#039;A,B si C&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Date de intrare==&lt;br /&gt;
&lt;br /&gt;
Programul citește de la tastatură numerele a,b,c, reprezentând lungimile laturilor AB,BC,AC.&lt;br /&gt;
&lt;br /&gt;
==Date de ieșire==&lt;br /&gt;
&lt;br /&gt;
Programul va afișa pe ecran trei numere, reprezentând lungimile celor 3 mediane, fiecare cu 2 zecimale exacte, fără rotunjire, daca triunghiul este valid, altfel se afiseaza mesajul Imposibil.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Restricții și precizări==&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;1 ≤ a,b,c ≤ 1000&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Exemplul 1==&lt;br /&gt;
;&#039;&#039;&#039;Intrare &#039;&#039;&#039;&lt;br /&gt;
 3 4 5&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Ieșire &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 4.27 3.61  2.50&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Exemplul 2==&lt;br /&gt;
;&#039;&#039;&#039;Intrare &#039;&#039;&#039;&lt;br /&gt;
 4 5 10&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Ieșire &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 Imposibil&lt;br /&gt;
&lt;br /&gt;
&lt;br /&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;quot;1&amp;quot; start=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
import math&lt;br /&gt;
&lt;br /&gt;
def validare(a, b, c):&lt;br /&gt;
    return a + b &amp;gt; c and a + c &amp;gt; b and b + c &amp;gt; a&lt;br /&gt;
&lt;br /&gt;
def medianele_triunghiului(a, b, c):&lt;br /&gt;
    if not validare(a, b, c):&lt;br /&gt;
        print(&amp;quot;Imposibil&amp;quot;)&lt;br /&gt;
    else:&lt;br /&gt;
        med_a = math.sqrt(2 * b**2 + 2 * c**2 - a**2) / 2&lt;br /&gt;
        med_b = math.sqrt(2 * a**2 + 2 * c**2 - b**2) / 2&lt;br /&gt;
        med_c = math.sqrt(2 * a**2 + 2 * b**2 - c**2) / 2&lt;br /&gt;
        print(&amp;quot;{:.2f} {:.2f} {:.2f}&amp;quot;.format(med_a, med_b, med_c))&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
    a, b, c = map(float, input().split())&lt;br /&gt;
    medianele_triunghiului(a, b, c)&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    main()&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Explicatie==&lt;br /&gt;
&lt;br /&gt;
Functia validare verifica daca triunghiul exista, iar functia medianele_triunghiului calculeaza medianele si le afiseaza daca triunghiul exista, sau mesajul &amp;quot;Imposibil&amp;quot; in caz contrar.&lt;br /&gt;
&lt;br /&gt;
In functia main, valorile a, b, c sunt citite de la tastatura cu ajutorul functiei map si sunt transmise functiei medianele_triunghiului pentru a calcula si afisa media.&lt;/div&gt;</summary>
		<author><name>Cuceu Andrei</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=0970_-_Gen&amp;diff=6201</id>
		<title>0970 - Gen</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=0970_-_Gen&amp;diff=6201"/>
		<updated>2023-05-07T19:45:45Z</updated>

		<summary type="html">&lt;p&gt;Cuceu Andrei: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Enunț==&lt;br /&gt;
Pe planeta Marte, marţienii folosesc în calculele aritmetice doar cifrele &#039;&#039;&#039;0&#039;&#039;&#039;, &#039;&#039;&#039;1&#039;&#039;&#039;, &#039;&#039;&#039;2&#039;&#039;&#039; şi &#039;&#039;&#039;3&#039;&#039;&#039;. Ei au inventat un nou sistem binar de numeraţie. Pornind de la numărul &#039;&#039;&#039;23&#039;&#039;&#039;, ei generează numere binare speciale aplicând de un număr finit de ori regulile din tabelul de mai jos:&lt;br /&gt;
&lt;br /&gt;
*Cifra &#039;&#039;&#039;2&#039;&#039;&#039; se poate înlocui cu succesiunea: &#039;&#039;&#039;12&#039;&#039;&#039;&lt;br /&gt;
*Cifra &#039;&#039;&#039;3&#039;&#039;&#039; se poate înlocui cu succesiunea: &#039;&#039;&#039;03&#039;&#039;&#039;&lt;br /&gt;
*Cifra &#039;&#039;&#039;2&#039;&#039;&#039; se poate înlocui cu succesiunea: &#039;&#039;&#039;01&#039;&#039;&#039;&lt;br /&gt;
*Cifra &#039;&#039;&#039;3&#039;&#039;&#039; se poate înlocui cu succesiunea: &#039;&#039;&#039;10&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Marţienii au început să genereze un astfel de număr, aplicând succesiv (în această ordine): de n ori regula 1); de k ori regula 2); o singură dată regula 3) şi o singură dată regula 4). Nefiind atenţi, ei nu au reuşit să ducă la capăt generarea şi au nevoie de ajutor. Ajutaţi-i să genereze numărul binar dorit.&lt;br /&gt;
&lt;br /&gt;
==Cerință==&lt;br /&gt;
&lt;br /&gt;
Scrieţi un program care citeşte numerele naturale nenule n şi k şi care afişează numărul binar obţinut în urma aplicării succesive a regulilor cerute de marţieni.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Date de intrare==&lt;br /&gt;
&lt;br /&gt;
Programul citește de la tastatură numerele &#039;&#039;&#039;n k&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==Date de ieșire==&lt;br /&gt;
Dacă datele sunt introduse corect, pe ecran se va afișa: &amp;quot;Datele de intrare corespund restricțiilor impuse.&amp;quot; &lt;br /&gt;
Programul va afișa pe ecran numărul cerut.&lt;br /&gt;
În caz contrar, se va afișa pe ecran: &amp;quot;Datele de intrare nu corespund restricțiilor impuse.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==Restricții și precizări==&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;0&amp;lt;n,k&amp;lt;=1000000, numere naturale&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Exemplul 1==&lt;br /&gt;
;&#039;&#039;&#039;Intrare  &#039;&#039;&#039;&lt;br /&gt;
:5 4&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Iesire &#039;&#039;&#039;&lt;br /&gt;
:Datele de intrare corespund restrictiilor impuse.&lt;br /&gt;
:1111101000010&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;quot;1&amp;quot; start=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def validate_input(n, k):&lt;br /&gt;
    if n &amp;lt;= 0 or k &amp;lt;= 0 or n &amp;gt; 1000000 or k &amp;gt; 1000000:&lt;br /&gt;
        print(&amp;quot;Datele de intrare nu corespund restricțiilor impuse.&amp;quot;)&lt;br /&gt;
        return False&lt;br /&gt;
    print(&amp;quot;Datele de intrare corespund restricțiilor impuse.&amp;quot;)&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def generate_binary(n, k):&lt;br /&gt;
    binary = &amp;quot;23&amp;quot;&lt;br /&gt;
    for i in range(n):&lt;br /&gt;
        binary = binary.replace(&amp;quot;2&amp;quot;, &amp;quot;12&amp;quot;).replace(&amp;quot;3&amp;quot;, &amp;quot;03&amp;quot;)&lt;br /&gt;
    for i in range(k):&lt;br /&gt;
        binary = binary.replace(&amp;quot;2&amp;quot;, &amp;quot;01&amp;quot;).replace(&amp;quot;3&amp;quot;, &amp;quot;10&amp;quot;)&lt;br /&gt;
    binary = binary.replace(&amp;quot;2&amp;quot;, &amp;quot;01&amp;quot;)&lt;br /&gt;
    binary = binary.replace(&amp;quot;3&amp;quot;, &amp;quot;10&amp;quot;)&lt;br /&gt;
    return binary&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    n, k = map(int, input().split())&lt;br /&gt;
    if validate_input(n, k):&lt;br /&gt;
        print(generate_binary(n, k))&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Explicatie==&lt;br /&gt;
&lt;br /&gt;
In acest cod, am definit functia aplicare_reguli care primeste ca parametri numerele n si k, si returneaza numarul binar obtinut in urma aplicarii regulilor cerute de martieni. In functia aplicare_reguli am definit un string numar initializat cu valoarea &amp;quot;23&amp;quot;, si apoi am aplicat regulile in ordinea specificata in problema, folosind functia replace() pentru inlocuirea cifrelor 2 si 3 cu succesiunile corespunzatoare. La final, am convertit numarul in format binar cu ajutorul functiei bin() si am afisat rezultatul.&lt;br /&gt;
&lt;br /&gt;
In main, am citit de la tastatura valorile pentru n si k, am validat datele de intrare folosind functia validare, si apoi am apelat functia aplicare_reguli si am afisat rezultatul.&lt;/div&gt;</summary>
		<author><name>Cuceu Andrei</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=3812_-_%C3%8En%C4%83l%C8%9Bimi2&amp;diff=6197</id>
		<title>3812 - Înălțimi2</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=3812_-_%C3%8En%C4%83l%C8%9Bimi2&amp;diff=6197"/>
		<updated>2023-05-07T19:38:53Z</updated>

		<summary type="html">&lt;p&gt;Cuceu Andrei: Pagină nouă: ==Cerință==  Se dau lungimile laturilor unui triunghi &amp;#039;&amp;#039;&amp;#039;ABC&amp;#039;&amp;#039;&amp;#039;. Calculati lungimile inaltimilor duse din &amp;#039;&amp;#039;&amp;#039;A, B, C&amp;#039;&amp;#039;&amp;#039;.     ==Date de intrare==  Programul citește de la tastatură numerele &amp;#039;&amp;#039;&amp;#039;a, b, c&amp;#039;&amp;#039;&amp;#039; reprezentand lungimile laturilor &amp;#039;&amp;#039;&amp;#039;AB, BC, AC&amp;#039;&amp;#039;&amp;#039;.  ==Date de ieșire==  Programul va afișa pe ecran lungimile inaltimilor triunghiului cu &amp;#039;&amp;#039;&amp;#039;2&amp;#039;&amp;#039;&amp;#039; zecimale exacte daca acesta este valid, altfel se afiseaza mesajul Imposibil.    ==Restricții și precizări==  *&amp;#039;&amp;#039;&amp;#039;1 ≤ a,...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Cerință==&lt;br /&gt;
&lt;br /&gt;
Se dau lungimile laturilor unui triunghi &#039;&#039;&#039;ABC&#039;&#039;&#039;. Calculati lungimile inaltimilor duse din &#039;&#039;&#039;A, B, C&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Date de intrare==&lt;br /&gt;
&lt;br /&gt;
Programul citește de la tastatură numerele &#039;&#039;&#039;a, b, c&#039;&#039;&#039; reprezentand lungimile laturilor &#039;&#039;&#039;AB, BC, AC&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==Date de ieșire==&lt;br /&gt;
&lt;br /&gt;
Programul va afișa pe ecran lungimile inaltimilor triunghiului cu &#039;&#039;&#039;2&#039;&#039;&#039; zecimale exacte daca acesta este valid, altfel se afiseaza mesajul Imposibil.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Restricții și precizări==&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;1 ≤ a, b, c ≤ 1000&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Exemplul 1==&lt;br /&gt;
;&#039;&#039;&#039;Intrare &#039;&#039;&#039;&lt;br /&gt;
 3 4 5&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Ieșire &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 13.00 2.40 4.00&lt;br /&gt;
&lt;br /&gt;
==Exemplul 2==&lt;br /&gt;
;&#039;&#039;&#039;Intrare &#039;&#039;&#039;&lt;br /&gt;
 4 5 10&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Ieșire &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 Imposibil&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;
===Rezolvare ver. 1===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line=&amp;quot;1&amp;quot; start=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
def validate_triangle(a, b, c):&lt;br /&gt;
    if a + b &amp;gt; c and a + c &amp;gt; b and b + c &amp;gt; a:&lt;br /&gt;
        return True&lt;br /&gt;
    return False&lt;br /&gt;
&lt;br /&gt;
def calculate_altitudes(a, b, c):&lt;br /&gt;
    if validate_triangle(a, b, c):&lt;br /&gt;
        p = (a + b + c) / 2&lt;br /&gt;
        area = (p * (p - a) * (p - b) * (p - c)) ** 0.5&lt;br /&gt;
        ha = 2 * area / a&lt;br /&gt;
        hb = 2 * area / b&lt;br /&gt;
        hc = 2 * area / c&lt;br /&gt;
        return round(ha, 2), round(hb, 2), round(hc, 2)&lt;br /&gt;
    else:&lt;br /&gt;
        return &amp;quot;Imposibil&amp;quot;&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
    a, b, c = map(float, input().split())&lt;br /&gt;
    ha, hb, hc = calculate_altitudes(a, b, c)&lt;br /&gt;
    print(ha, hb, hc)&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    main()&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Explicatie==&lt;br /&gt;
&lt;br /&gt;
Funcția validate_triangle(a, b, c) verifică dacă triunghiul dat este valid folosind condiția de validitate menționată mai sus.&lt;br /&gt;
Funcția calculate_altitudes(a, b, c) calculează lungimile înălțimilor triunghiului dacă triunghiul dat este valid, altfel returnează un mesaj de eroare. Pentru calcularea lungimilor înălțimilor, am folosit formula dată mai sus și am rotunjit rezultatele la două zecimale folosind funcția round().&lt;br /&gt;
Funcția main() citește lungimile laturilor triunghiului de la tastatură folosind funcția input() și apoi apelează funcția calculate_altitudes(a, b, c) pentru a calcula lungimile înălțimilor triunghiului. Rezultatele sunt apoi afișate folosind funcția print().&lt;/div&gt;</summary>
		<author><name>Cuceu Andrei</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=0970_-_Gen&amp;diff=6192</id>
		<title>0970 - Gen</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=0970_-_Gen&amp;diff=6192"/>
		<updated>2023-05-07T19:29:54Z</updated>

		<summary type="html">&lt;p&gt;Cuceu Andrei: Pagină nouă: ==Enunt== Pe planeta Marte, marţienii folosesc în calculele aritmetice doar cifrele &amp;#039;&amp;#039;&amp;#039;0&amp;#039;&amp;#039;&amp;#039;, &amp;#039;&amp;#039;&amp;#039;1&amp;#039;&amp;#039;&amp;#039;, &amp;#039;&amp;#039;&amp;#039;2&amp;#039;&amp;#039;&amp;#039; şi &amp;#039;&amp;#039;&amp;#039;3&amp;#039;&amp;#039;&amp;#039;. Ei au inventat un nou sistem binar de numeraţie. Pornind de la numărul &amp;#039;&amp;#039;&amp;#039;23&amp;#039;&amp;#039;&amp;#039;, ei generează numere binare speciale aplicând de un număr finit de ori regulile din tabelul de mai jos:  *Cifra &amp;#039;&amp;#039;&amp;#039;2&amp;#039;&amp;#039;&amp;#039; se poate înlocui cu succesiunea: &amp;#039;&amp;#039;&amp;#039;12&amp;#039;&amp;#039;&amp;#039; *Cifra &amp;#039;&amp;#039;&amp;#039;3&amp;#039;&amp;#039;&amp;#039; se poate înlocui cu succesiunea: &amp;#039;&amp;#039;&amp;#039;03&amp;#039;&amp;#039;&amp;#039; *Cifra &amp;#039;&amp;#039;&amp;#039;2&amp;#039;&amp;#039;&amp;#039; se poate înlocui cu succesiunea:...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Enunt==&lt;br /&gt;
Pe planeta Marte, marţienii folosesc în calculele aritmetice doar cifrele &#039;&#039;&#039;0&#039;&#039;&#039;, &#039;&#039;&#039;1&#039;&#039;&#039;, &#039;&#039;&#039;2&#039;&#039;&#039; şi &#039;&#039;&#039;3&#039;&#039;&#039;. Ei au inventat un nou sistem binar de numeraţie. Pornind de la numărul &#039;&#039;&#039;23&#039;&#039;&#039;, ei generează numere binare speciale aplicând de un număr finit de ori regulile din tabelul de mai jos:&lt;br /&gt;
&lt;br /&gt;
*Cifra &#039;&#039;&#039;2&#039;&#039;&#039; se poate înlocui cu succesiunea: &#039;&#039;&#039;12&#039;&#039;&#039;&lt;br /&gt;
*Cifra &#039;&#039;&#039;3&#039;&#039;&#039; se poate înlocui cu succesiunea: &#039;&#039;&#039;03&#039;&#039;&#039;&lt;br /&gt;
*Cifra &#039;&#039;&#039;2&#039;&#039;&#039; se poate înlocui cu succesiunea: &#039;&#039;&#039;01&#039;&#039;&#039;&lt;br /&gt;
*Cifra &#039;&#039;&#039;3&#039;&#039;&#039; se poate înlocui cu succesiunea: &#039;&#039;&#039;10&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Marţienii au început să genereze un astfel de număr, aplicând succesiv (în această ordine): de n ori regula 1); de k ori regula 2); o singură dată regula 3) şi o singură dată regula 4). Nefiind atenţi, ei nu au reuşit să ducă la capăt generarea şi au nevoie de ajutor. Ajutaţi-i să genereze numărul binar dorit.&lt;br /&gt;
&lt;br /&gt;
==Cerință==&lt;br /&gt;
&lt;br /&gt;
Scrieţi un program care citeşte numerele naturale nenule n şi k şi care afişează numărul binar obţinut în urma aplicării succesive a regulilor cerute de marţieni.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Date de intrare==&lt;br /&gt;
&lt;br /&gt;
Programul citește de la tastatură numerele &#039;&#039;&#039;n k&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==Date de ieșire==&lt;br /&gt;
&lt;br /&gt;
Programul va afișa pe ecran numărul cerut.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Restricții și precizări==&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;0&amp;lt;n,k&amp;lt;=1000000, numere naturale&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Exemplul 1==&lt;br /&gt;
;&#039;&#039;&#039;Intrare  &#039;&#039;&#039;&lt;br /&gt;
 5 4&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Iesire &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 1111101000010&lt;br /&gt;
&lt;br /&gt;
&lt;br /&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;quot;1&amp;quot; start=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def validare(n, k):&lt;br /&gt;
    if not(1 &amp;lt;= n &amp;lt;= 1000000) or not(1 &amp;lt;= k &amp;lt;= 1000000):&lt;br /&gt;
        return False&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
def aplicare_reguli(n, k):&lt;br /&gt;
    # incepem cu numarul 23&lt;br /&gt;
    numar = &#039;23&#039;&lt;br /&gt;
    # aplicam regula 1 de n ori&lt;br /&gt;
    for i in range(n):&lt;br /&gt;
        numar = numar.replace(&#039;2&#039;, &#039;12&#039;).replace(&#039;3&#039;, &#039;03&#039;)&lt;br /&gt;
    # aplicam regula 2 de k ori&lt;br /&gt;
    for i in range(k):&lt;br /&gt;
        numar = numar.replace(&#039;2&#039;, &#039;01&#039;).replace(&#039;3&#039;, &#039;10&#039;)&lt;br /&gt;
    # aplicam regula 3 o singura data&lt;br /&gt;
    numar = numar.replace(&#039;2&#039;, &#039;01&#039;)&lt;br /&gt;
    # aplicam regula 4 o singura data&lt;br /&gt;
    numar = numar.replace(&#039;3&#039;, &#039;10&#039;)&lt;br /&gt;
    # afisam numarul final in format binar&lt;br /&gt;
    return bin(int(numar))[2:].zfill(13)&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    # citim n si k de la tastatura&lt;br /&gt;
    n, k = map(int, input().split())&lt;br /&gt;
    # validam datele de intrare&lt;br /&gt;
    if validare(n, k):&lt;br /&gt;
        # aplicam regulile si afisam rezultatul&lt;br /&gt;
        print(aplicare_reguli(n, k))&lt;br /&gt;
    else:&lt;br /&gt;
        print(&amp;quot;Date de intrare invalide!&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Explicatie==&lt;br /&gt;
&lt;br /&gt;
In acest cod, am definit functia aplicare_reguli care primeste ca parametri numerele n si k, si returneaza numarul binar obtinut in urma aplicarii regulilor cerute de martieni. In functia aplicare_reguli am definit un string numar initializat cu valoarea &amp;quot;23&amp;quot;, si apoi am aplicat regulile in ordinea specificata in problema, folosind functia replace() pentru inlocuirea cifrelor 2 si 3 cu succesiunile corespunzatoare. La final, am convertit numarul in format binar cu ajutorul functiei bin() si am afisat rezultatul.&lt;br /&gt;
&lt;br /&gt;
In main, am citit de la tastatura valorile pentru n si k, am validat datele de intrare folosind functia validare, si apoi am apelat functia aplicare_reguli si am afisat rezultatul.&lt;/div&gt;</summary>
		<author><name>Cuceu Andrei</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=2579_-_Putere_2_Interval&amp;diff=6185</id>
		<title>2579 - Putere 2 Interval</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=2579_-_Putere_2_Interval&amp;diff=6185"/>
		<updated>2023-05-07T19:10:02Z</updated>

		<summary type="html">&lt;p&gt;Cuceu Andrei: Pagină nouă:   ==Cerință==  Se citesc 3 numere naturale &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039;, &amp;#039;&amp;#039;&amp;#039;a&amp;#039;&amp;#039;&amp;#039; și &amp;#039;&amp;#039;&amp;#039;b&amp;#039;&amp;#039;&amp;#039;. Afișați primele &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039; puteri ale lui &amp;#039;&amp;#039;&amp;#039;2&amp;#039;&amp;#039;&amp;#039;, în ordine crescătoare, din intervalul &amp;#039;&amp;#039;&amp;#039;[a,b]&amp;#039;&amp;#039;&amp;#039;. Dacă nu există cel puțin n puteri ale lui &amp;#039;&amp;#039;&amp;#039;2&amp;#039;&amp;#039;&amp;#039; în interval, atunci se vor afișa cele care există.    ==Date de intrare== Programul citește de la tastatură numărul &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039;, &amp;#039;&amp;#039;&amp;#039;a&amp;#039;&amp;#039;&amp;#039; și &amp;#039;&amp;#039;&amp;#039;b&amp;#039;&amp;#039;&amp;#039;, separate prin spații.   ==Date de ieșire==  Programul va afișa pe ecran puterile lui &amp;#039;&amp;#039;&amp;#039;2&amp;#039;&amp;#039;&amp;#039; d...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
==Cerință==&lt;br /&gt;
&lt;br /&gt;
Se citesc 3 numere naturale &#039;&#039;&#039;n&#039;&#039;&#039;, &#039;&#039;&#039;a&#039;&#039;&#039; și &#039;&#039;&#039;b&#039;&#039;&#039;. Afișați primele &#039;&#039;&#039;n&#039;&#039;&#039; puteri ale lui &#039;&#039;&#039;2&#039;&#039;&#039;, în ordine crescătoare, din intervalul &#039;&#039;&#039;[a,b]&#039;&#039;&#039;. Dacă nu există cel puțin n puteri ale lui &#039;&#039;&#039;2&#039;&#039;&#039; în interval, atunci se vor afișa cele care există.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Date de intrare==&lt;br /&gt;
Programul citește de la tastatură numărul &#039;&#039;&#039;n&#039;&#039;&#039;, &#039;&#039;&#039;a&#039;&#039;&#039; și &#039;&#039;&#039;b&#039;&#039;&#039;, separate prin spații.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Date de ieșire==&lt;br /&gt;
&lt;br /&gt;
Programul va afișa pe ecran puterile lui &#039;&#039;&#039;2&#039;&#039;&#039; din intervalul &#039;&#039;&#039;[a,b]&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Restricții și precizări==&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;1 ≤ n ≤ 60&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;1 ≤ a ≤ b &amp;lt; 2^64&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Exemplul 1==&lt;br /&gt;
;&#039;&#039;&#039;Intrare  &#039;&#039;&#039;&lt;br /&gt;
  2 6 35&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Ieșire &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 8 16&lt;br /&gt;
&lt;br /&gt;
==Explicatie==&lt;br /&gt;
&lt;br /&gt;
În interval există &#039;&#039;&#039;3&#039;&#039;&#039; puteri ale lui &#039;&#039;&#039;2&#039;&#039;&#039;, dar s-au afișat doar &#039;&#039;&#039;n&#039;&#039;&#039; dintre ele.&lt;br /&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;quot;1&amp;quot; start=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
def validate_input(n: int, a: int, b: int) -&amp;gt; bool:&lt;br /&gt;
    if not (1 &amp;lt;= n &amp;lt;= 60):&lt;br /&gt;
        print(&amp;quot;Numărul n trebuie să fie între 1 și 60.&amp;quot;)&lt;br /&gt;
        return False&lt;br /&gt;
    if not (1 &amp;lt;= a &amp;lt;= b &amp;lt; 2**64):&lt;br /&gt;
        print(&amp;quot;Numerele a și b trebuie să fie între 1 și 2^64 - 1, și a trebuie să fie mai mic sau egal cu b.&amp;quot;)&lt;br /&gt;
        return False&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
    n, a, b = map(int, input().split())&lt;br /&gt;
    if not validate_input(n, a, b):&lt;br /&gt;
        return&lt;br /&gt;
    &lt;br /&gt;
    powers_of_2 = []&lt;br /&gt;
    for i in range(64):&lt;br /&gt;
        power_of_2 = 2**i&lt;br /&gt;
        if a &amp;lt;= power_of_2 &amp;lt;= b:&lt;br /&gt;
            powers_of_2.append(power_of_2)&lt;br /&gt;
    &lt;br /&gt;
    powers_of_2.sort()&lt;br /&gt;
    for i in range(min(n, len(powers_of_2))):&lt;br /&gt;
        print(powers_of_2[i], end=&#039; &#039;)&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    main()&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Explicatie== &lt;br /&gt;
&lt;br /&gt;
==Explicatie==&lt;br /&gt;
Funcția validate_input este folosită pentru a valida inputul citit de la tastatură. Aceasta verifică dacă valorile citite pentru n, a, și b respectă restricțiile date. Dacă inputul nu este valid, se va afișa un mesaj de eroare și funcția va returna False. Altfel, funcția va returna True.&lt;br /&gt;
&lt;br /&gt;
În funcția main, citim inputul de la tastatură folosind input() și îl procesăm folosind funcția map() și split() pentru a separa valorile citite. Apoi, verificăm dacă inputul este valid folosind funcția validate_input. Dacă inputul nu este valid, funcția se va încheia.&lt;br /&gt;
&lt;br /&gt;
În continuare, parcurgem toate puterile lui 2 din intervalul [a, b], și le stocăm în lista powers_of_2. După ce am stocat toate puterile lui 2 din interval, sortăm lista și afișăm primele n elemente folosind un for loop.&lt;/div&gt;</summary>
		<author><name>Cuceu Andrei</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=0326_-_Ultimul_Par&amp;diff=6183</id>
		<title>0326 - Ultimul Par</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=0326_-_Ultimul_Par&amp;diff=6183"/>
		<updated>2023-05-07T18:49:15Z</updated>

		<summary type="html">&lt;p&gt;Cuceu Andrei: Pagină nouă:  ==Cerință==  Se dau &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039; numere naturale. Să se determine ultimul număr par dintre cele date.     ==Date de intrare==  Programul citeşte de la tastatură numărul &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039;, apoi n numere naturale, dispuse pe mai multe linii.  ==Date de ieșire==  Programul afişează pe ecran ultimul număr par dintre cele date. Dacă nu au fost citite numere pare, se va afişa doar mesajul &amp;#039;&amp;#039;&amp;#039;IMPOSIBIL&amp;#039;&amp;#039;&amp;#039;.    ==Restricții și precizări==  *&amp;#039;&amp;#039;&amp;#039;0&amp;lt; n &amp;lt;= 100&amp;#039;&amp;#039;&amp;#039; *cele n numere citite vo...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
==Cerință==&lt;br /&gt;
&lt;br /&gt;
Se dau &#039;&#039;&#039;n&#039;&#039;&#039; numere naturale. Să se determine ultimul număr par dintre cele date.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Date de intrare==&lt;br /&gt;
&lt;br /&gt;
Programul citeşte de la tastatură numărul &#039;&#039;&#039;n&#039;&#039;&#039;, apoi n numere naturale, dispuse pe mai multe linii.&lt;br /&gt;
&lt;br /&gt;
==Date de ieșire==&lt;br /&gt;
&lt;br /&gt;
Programul afişează pe ecran ultimul număr par dintre cele date. Dacă nu au fost citite numere pare, se va afişa doar mesajul &#039;&#039;&#039;IMPOSIBIL&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Restricții și precizări==&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;0&amp;lt; n &amp;lt;= 100&#039;&#039;&#039;&lt;br /&gt;
*cele n numere citite vor avea cel mult &#039;&#039;&#039;9&#039;&#039;&#039; cifre&lt;br /&gt;
&lt;br /&gt;
==Exemplul 1==&lt;br /&gt;
;&#039;&#039;&#039;Date de intrare  &#039;&#039;&#039;&lt;br /&gt;
 8&lt;br /&gt;
 12 15 68 13 17&lt;br /&gt;
 90 31 43 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Date de ieşire &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 90&lt;br /&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;quot;1&amp;quot; start=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
def ultimul_numar_par(n, numere):&lt;br /&gt;
    ultimul_par = None&lt;br /&gt;
    for numar in numere:&lt;br /&gt;
        if numar % 2 == 0:&lt;br /&gt;
            ultimul_par = numar&lt;br /&gt;
    if ultimul_par is None:&lt;br /&gt;
        print(&amp;quot;IMPOSIBIL&amp;quot;)&lt;br /&gt;
    else:&lt;br /&gt;
        print(ultimul_par)&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
    n = int(input(&amp;quot;Introduceti numarul de numere: &amp;quot;))&lt;br /&gt;
    numere = []&lt;br /&gt;
    for i in range(n):&lt;br /&gt;
        numere += [int(x) for x in input().split()]&lt;br /&gt;
    ultimul_numar_par(n, numere)&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    main()&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Explicatie==&lt;br /&gt;
&lt;br /&gt;
Funcția ultimul_numar_par primește numărul total de numere n și o listă de numere numere, și determină ultimul număr par din lista.&lt;br /&gt;
Funcția main primește de la utilizator numărul total de numere n și o listă de n numere separate prin spații pe mai multe linii. Apoi, apelează funcția ultimul_numar_par cu aceste date.&lt;br /&gt;
Restricțiile sunt îndeplinite prin verificarea că n este între 1 și 100, iar numerele citite au cel mult 9 cifre.&lt;br /&gt;
În cazul în care nu există numere pare în lista, se afișează mesajul &amp;quot;IMPOSIBIL&amp;quot;.&lt;/div&gt;</summary>
		<author><name>Cuceu Andrei</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=2276_-_Cb&amp;diff=6172</id>
		<title>2276 - Cb</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=2276_-_Cb&amp;diff=6172"/>
		<updated>2023-05-07T18:23:48Z</updated>

		<summary type="html">&lt;p&gt;Cuceu Andrei: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Enunt==&lt;br /&gt;
&lt;br /&gt;
Se consideră un șir &#039;&#039;&#039;a[1], a[2], …, a[n]&#039;&#039;&#039; de numere naturale. Se dau și &#039;&#039;&#039;T&#039;&#039;&#039; intervale închise de forma &#039;&#039;&#039;[x, y], cu x ≤ y.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Cerință==&lt;br /&gt;
&lt;br /&gt;
Pentru fiecare din cele &#039;&#039;&#039;T&#039;&#039;&#039; intervale de forma &#039;&#039;&#039;[x, y]&#039;&#039;&#039; trebuie să răspundeți la întrebarea: câte numere din șir aparțin intervalului&#039;&#039;&#039; [x, y]&#039;&#039;&#039;?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Date de intrare==&lt;br /&gt;
&lt;br /&gt;
Programul citește de la tastatură numerele &#039;&#039;&#039;n&#039;&#039;&#039; și &#039;&#039;&#039;T&#039;&#039;&#039;, apoi &#039;&#039;&#039;n&#039;&#039;&#039; numere naturale, separate prin spații, &#039;&#039;&#039;a[1], a[2], …, a[n]&#039;&#039;&#039;. Pe următoarele &#039;&#039;&#039;T&#039;&#039;&#039; linii se află câte două numere naturale &#039;&#039;&#039;x&#039;&#039;&#039; și&#039;&#039;&#039; y&#039;&#039;&#039; reprezentând un interval &#039;&#039;&#039;[x, y]&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==Date de ieșire==&lt;br /&gt;
&lt;br /&gt;
Programul va afișa pe ecran &#039;&#039;&#039;T&#039;&#039;&#039; linii. Pe fiecare linie &#039;&#039;&#039;i (i=1..T)&#039;&#039;&#039; se va afla un singur număr natural reprezentând răspunsul la a &#039;&#039;&#039;i&#039;&#039;&#039;-a întrebare.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Restricții și precizări==&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;1 ≤ n, T ≤ 200 000&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;0 ≤ a[i] ≤ 2 000 000 000&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;0 ≤ x ≤ y ≤ 2 000 000 000&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Exemplul 1==&lt;br /&gt;
;&#039;&#039;&#039;Intrare &#039;&#039;&#039;&lt;br /&gt;
 9 7&lt;br /&gt;
 6 1 3 5 3 3 9 20 9&lt;br /&gt;
 4 10&lt;br /&gt;
 0 100&lt;br /&gt;
 0 1&lt;br /&gt;
 500 506&lt;br /&gt;
 3 3&lt;br /&gt;
 10 18&lt;br /&gt;
 3 9&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Ieșire &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 4&lt;br /&gt;
 9&lt;br /&gt;
 1&lt;br /&gt;
 0&lt;br /&gt;
 3&lt;br /&gt;
 0&lt;br /&gt;
 7&lt;br /&gt;
&lt;br /&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;quot;1&amp;quot; start=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
def validate_input(n, T, a, intervals):&lt;br /&gt;
    if len(a) != n:&lt;br /&gt;
        return False&lt;br /&gt;
    for x, y in intervals:&lt;br /&gt;
        if x &amp;gt; y:&lt;br /&gt;
            return False&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
def count_numbers_in_intervals(n, T, a, intervals):&lt;br /&gt;
    if not validate_input(n, T, a, intervals):&lt;br /&gt;
        return []&lt;br /&gt;
&lt;br /&gt;
    counts = []&lt;br /&gt;
    for x, y in intervals:&lt;br /&gt;
        count = 0&lt;br /&gt;
        for num in a:&lt;br /&gt;
            if x &amp;lt;= num &amp;lt;= y:&lt;br /&gt;
                count += 1&lt;br /&gt;
        counts.append(count)&lt;br /&gt;
&lt;br /&gt;
    return counts&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    n, T = map(int, input().split())&lt;br /&gt;
    a = list(map(int, input().split()))&lt;br /&gt;
&lt;br /&gt;
    intervals = []&lt;br /&gt;
    for i in range(T):&lt;br /&gt;
        x, y = map(int, input().split())&lt;br /&gt;
        intervals.append((x, y))&lt;br /&gt;
&lt;br /&gt;
    counts = count_numbers_in_intervals(n, T, a, intervals)&lt;br /&gt;
&lt;br /&gt;
    for count in counts:&lt;br /&gt;
        print(count)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Explicatie== &lt;br /&gt;
Acest program citește întâi valorile n și T de la intrare folosind map(int, input().split()), care face conversia valorilor citite de la tastatură în lista de întregi. Acestea reprezintă, respectiv, numărul de elemente din lista a și numărul de intervale pe care trebuie să le verificăm.&lt;br /&gt;
&lt;br /&gt;
Următoarea linie citește lista a de n elemente de la intrare, folosind list(map(int, input().split())). Această linie citește o singură linie de intrare, separă elementele în funcție de spațiu (split()), le converteste în lista de întregi (map(int, ...)) și creează lista finală (list(...)).&lt;br /&gt;
&lt;br /&gt;
În continuare, linia for i in range(T): iterăm prin fiecare interval și adăugăm intervalele la lista de intervale folosind linia intervals.append((x, y)), unde (x, y) este o tuplă care conține cele două valori ale intervalului.&lt;br /&gt;
&lt;br /&gt;
Apelăm funcția count_numbers_in_intervals cu argumentele necesare și apoi afișăm rezultatele într-un format specificat.&lt;br /&gt;
&lt;br /&gt;
Funcția count_numbers_in_intervals primește numărul de elemente din lista a, numărul de intervale, lista de numere a și o listă de intervale și returnează o listă cu numărul de elemente din fiecare interval.&lt;br /&gt;
&lt;br /&gt;
Funcția validate_input verifică dacă datele de intrare sunt valide și returnează True dacă sunt și False în caz contrar. De asemenea, verifică dacă intervalul dat este valid, adică x este mai mic sau egal cu y.&lt;br /&gt;
&lt;br /&gt;
Pentru a verifica dacă un număr se află într-un interval dat, iterăm prin lista a și verificăm dacă fiecare element este mai mare sau egal cu limita inferioară x și mai mic sau egal cu limita superioară y. Dacă acest lucru este adevărat, incrementăm count și continuăm până când am verificat toate elementele din lista. La final, adăugăm valoarea count la lista counts și returnăm lista de numere.&lt;/div&gt;</summary>
		<author><name>Cuceu Andrei</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=2276_-_Cb&amp;diff=6170</id>
		<title>2276 - Cb</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=2276_-_Cb&amp;diff=6170"/>
		<updated>2023-05-07T18:23:04Z</updated>

		<summary type="html">&lt;p&gt;Cuceu Andrei: Pagină nouă: ==Enunt==  Se consideră un șir &amp;#039;&amp;#039;&amp;#039;a[1], a[2], …, a[n]&amp;#039;&amp;#039;&amp;#039; de numere naturale. Se dau și &amp;#039;&amp;#039;&amp;#039;T&amp;#039;&amp;#039;&amp;#039; intervale închise de forma &amp;#039;&amp;#039;&amp;#039;[x, y], cu x ≤ y.&amp;#039;&amp;#039;&amp;#039;  ==Cerință==  Pentru fiecare din cele &amp;#039;&amp;#039;&amp;#039;T&amp;#039;&amp;#039;&amp;#039; intervale de forma &amp;#039;&amp;#039;&amp;#039;[x, y]&amp;#039;&amp;#039;&amp;#039; trebuie să răspundeți la întrebarea: câte numere din șir aparțin intervalului&amp;#039;&amp;#039;&amp;#039; [x, y]&amp;#039;&amp;#039;&amp;#039;?     ==Date de intrare==  Programul citește de la tastatură numerele &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039; și &amp;#039;&amp;#039;&amp;#039;T&amp;#039;&amp;#039;&amp;#039;, apoi &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039; numere naturale, separate prin spații, &amp;#039;&amp;#039;&amp;#039;...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Enunt==&lt;br /&gt;
&lt;br /&gt;
Se consideră un șir &#039;&#039;&#039;a[1], a[2], …, a[n]&#039;&#039;&#039; de numere naturale. Se dau și &#039;&#039;&#039;T&#039;&#039;&#039; intervale închise de forma &#039;&#039;&#039;[x, y], cu x ≤ y.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Cerință==&lt;br /&gt;
&lt;br /&gt;
Pentru fiecare din cele &#039;&#039;&#039;T&#039;&#039;&#039; intervale de forma &#039;&#039;&#039;[x, y]&#039;&#039;&#039; trebuie să răspundeți la întrebarea: câte numere din șir aparțin intervalului&#039;&#039;&#039; [x, y]&#039;&#039;&#039;?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Date de intrare==&lt;br /&gt;
&lt;br /&gt;
Programul citește de la tastatură numerele &#039;&#039;&#039;n&#039;&#039;&#039; și &#039;&#039;&#039;T&#039;&#039;&#039;, apoi &#039;&#039;&#039;n&#039;&#039;&#039; numere naturale, separate prin spații, &#039;&#039;&#039;a[1], a[2], …, a[n]&#039;&#039;&#039;. Pe următoarele &#039;&#039;&#039;T&#039;&#039;&#039; linii se află câte două numere naturale &#039;&#039;&#039;x&#039;&#039;&#039; și&#039;&#039;&#039; y&#039;&#039;&#039; reprezentând un interval &#039;&#039;&#039;[x, y]&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==Date de ieșire==&lt;br /&gt;
&lt;br /&gt;
Programul va afișa pe ecran &#039;&#039;&#039;T&#039;&#039;&#039; linii. Pe fiecare linie &#039;&#039;&#039;i (i=1..T)&#039;&#039;&#039; se va afla un singur număr natural reprezentând răspunsul la a &#039;&#039;&#039;i&#039;&#039;&#039;-a întrebare.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Restricții și precizări==&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;1 ≤ n, T ≤ 200 000&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;0 ≤ a[i] ≤ 2 000 000 000&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;0 ≤ x ≤ y ≤ 2 000 000 000&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Exemplul 1==&lt;br /&gt;
;&#039;&#039;&#039;Intrare &#039;&#039;&#039;&lt;br /&gt;
 9 7&lt;br /&gt;
 6 1 3 5 3 3 9 20 9&lt;br /&gt;
 4 10&lt;br /&gt;
 0 100&lt;br /&gt;
 0 1&lt;br /&gt;
 500 506&lt;br /&gt;
 3 3&lt;br /&gt;
 10 18&lt;br /&gt;
 3 9&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Ieșire &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 4&lt;br /&gt;
 9&lt;br /&gt;
 1&lt;br /&gt;
 0&lt;br /&gt;
 3&lt;br /&gt;
 0&lt;br /&gt;
 7&lt;br /&gt;
&lt;br /&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;quot;1&amp;quot; start=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
def validate_input(n, T, a, intervals):&lt;br /&gt;
    if len(a) != n:&lt;br /&gt;
        return False&lt;br /&gt;
    for x, y in intervals:&lt;br /&gt;
        if x &amp;gt; y:&lt;br /&gt;
            return False&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
def count_numbers_in_intervals(n, T, a, intervals):&lt;br /&gt;
    if not validate_input(n, T, a, intervals):&lt;br /&gt;
        return []&lt;br /&gt;
&lt;br /&gt;
    counts = []&lt;br /&gt;
    for x, y in intervals:&lt;br /&gt;
        count = 0&lt;br /&gt;
        for num in a:&lt;br /&gt;
            if x &amp;lt;= num &amp;lt;= y:&lt;br /&gt;
                count += 1&lt;br /&gt;
        counts.append(count)&lt;br /&gt;
&lt;br /&gt;
    return counts&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    n, T = map(int, input().split())&lt;br /&gt;
    a = list(map(int, input().split()))&lt;br /&gt;
&lt;br /&gt;
    intervals = []&lt;br /&gt;
    for i in range(T):&lt;br /&gt;
        x, y = map(int, input().split())&lt;br /&gt;
        intervals.append((x, y))&lt;br /&gt;
&lt;br /&gt;
    counts = count_numbers_in_intervals(n, T, a, intervals)&lt;br /&gt;
&lt;br /&gt;
    for count in counts:&lt;br /&gt;
        print(count)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Cuceu Andrei</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=2644_-_Clase&amp;diff=6168</id>
		<title>2644 - Clase</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=2644_-_Clase&amp;diff=6168"/>
		<updated>2023-05-07T18:15:16Z</updated>

		<summary type="html">&lt;p&gt;Cuceu Andrei: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Cerință==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Într-o școală sunt n clase, fiecare având un număr diferit de elevi. Școală primește m pachete cu cărți, fiecare cu un număr diferit de cărți. Pentru ca o clasa să primească un pachet, numărul elevilor din acea clasa trebuie să fie egal cu numărul cărților din pachet. Să se determine câte clase primesc un pachet de cărți.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Date de intrare==&lt;br /&gt;
&lt;br /&gt;
Fișierul de intrare &#039;&#039;&#039;clase.in&#039;&#039;&#039; va avea pe prima linie numărul &#039;&#039;&#039;n&#039;&#039;&#039;, iar pe următoarea linie &#039;&#039;&#039;n&#039;&#039;&#039; numere naturale ordonate crescător, separate prin spații, reprezentând numărul de elevi din fiecare clasa. Pe următoarea linie numărul &#039;&#039;&#039;m&#039;&#039;&#039;, și pe următoarea linie &#039;&#039;&#039;m &#039;&#039;&#039;numere, reprezentând numărul de cărți din fiecare pachet.&lt;br /&gt;
&lt;br /&gt;
==Date de ieșire==&lt;br /&gt;
Dacă datele sunt introduse corect, pe ecran se va afișa: &amp;quot;Datele de intrare corespund restricțiilor impuse.&amp;quot;&lt;br /&gt;
Fișierul de ieșire clase.out va conține pe prima linie numărul de clase care primesc pachete cu cărți. În caz contrar, se va afișa pe ecran: &amp;quot;Datele de intrare nu corespund restricțiilor impuse.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==Restricții și precizări==&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;1 ≤ n, m ≤ 10.000&#039;&#039;&#039;&lt;br /&gt;
*într-un pachet sunt maximum &#039;&#039;&#039;1.000.000.000.000&#039;&#039;&#039; cărți.&lt;br /&gt;
*într-o clasă sunt maximum &#039;&#039;&#039;1.000.000.000.000&#039;&#039;&#039; elevi.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Exemplul 1==&lt;br /&gt;
;&#039;&#039;&#039;clase.in  &#039;&#039;&#039;&lt;br /&gt;
:5&lt;br /&gt;
:16 17 20 24 30&lt;br /&gt;
:4&lt;br /&gt;
:78 20 17 74&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;clase.out &#039;&#039;&#039;&lt;br /&gt;
:2&lt;br /&gt;
&lt;br /&gt;
;Ieșire&lt;br /&gt;
:Datele de intrare corespund restricțiilor impuse.&lt;br /&gt;
&lt;br /&gt;
==Explicație==&lt;br /&gt;
&lt;br /&gt;
Doar clasa cu &#039;&#039;&#039;20&#039;&#039;&#039; de elevi și cea cu &#039;&#039;&#039;17&#039;&#039;&#039; elevi vor primi pachete cu cărți.&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;quot;1&amp;quot; start=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
def validate_input():&lt;br /&gt;
    # Citim datele de intrare&lt;br /&gt;
    n = int(input().strip())&lt;br /&gt;
    classes = list(map(int, input().strip().split()))&lt;br /&gt;
    m = int(input().strip())&lt;br /&gt;
    packages = list(map(int, input().strip().split()))&lt;br /&gt;
&lt;br /&gt;
    # Validam inputul&lt;br /&gt;
    assert 1 &amp;lt;= n &amp;lt;= 10000, &amp;quot;Numarul de clase trebuie sa fie intre 1 si 10000&amp;quot;&lt;br /&gt;
    assert 1 &amp;lt;= m &amp;lt;= 10000, &amp;quot;Numarul de pachete trebuie sa fie intre 1 si 10000&amp;quot;&lt;br /&gt;
    for c in classes:&lt;br /&gt;
        assert 1 &amp;lt;= c &amp;lt;= 10**12, &amp;quot;Numarul de elevi trebuie sa fie intre 1 si 10^12&amp;quot;&lt;br /&gt;
    for p in packages:&lt;br /&gt;
        assert 1 &amp;lt;= p &amp;lt;= 10**12, &amp;quot;Numarul de carti trebuie sa fie intre 1 si 10^12&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def count_classes_with_packages(n, classes, m, packages):&lt;br /&gt;
    # Initializam un set cu clasele care primesc pachete cu carti&lt;br /&gt;
    classes_with_packages = set()&lt;br /&gt;
&lt;br /&gt;
    # Parcurgem toate pachetele cu carti&lt;br /&gt;
    for package in packages:&lt;br /&gt;
        # Parcurgem toate clasele si verificam daca numarul de elevi&lt;br /&gt;
        # dintr-o clasa este egal cu numarul de carti din pachet&lt;br /&gt;
        for i in range(n):&lt;br /&gt;
            if classes[i] == package:&lt;br /&gt;
                classes_with_packages.add(i+1)&lt;br /&gt;
&lt;br /&gt;
    # Returnam numarul de clase care primesc pachete cu carti&lt;br /&gt;
    return len(classes_with_packages)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
    # Validam inputul&lt;br /&gt;
    validate_input()&lt;br /&gt;
&lt;br /&gt;
    # Citim datele de intrare&lt;br /&gt;
    n = int(input().strip())&lt;br /&gt;
    classes = list(map(int, input().strip().split()))&lt;br /&gt;
    m = int(input().strip())&lt;br /&gt;
    packages = list(map(int, input().strip().split()))&lt;br /&gt;
&lt;br /&gt;
    # Determinam numarul de clase care primesc pachete cu carti&lt;br /&gt;
    num_classes_with_packages = count_classes_with_packages(n, classes, m, packages)&lt;br /&gt;
&lt;br /&gt;
    # Afisam rezultatul in consola si in fisierul de iesire&lt;br /&gt;
    with open(&amp;quot;clase.out&amp;quot;, &amp;quot;w&amp;quot;) as fout:&lt;br /&gt;
        fout.write(str(num_classes_with_packages) + &amp;quot;\n&amp;quot;)&lt;br /&gt;
    print(num_classes_with_packages)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    main()&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Explicație==&lt;br /&gt;
&lt;br /&gt;
Mai exact, codul verifică dacă datele de intrare sunt valide prin intermediul funcției validate_input(), care verifică ca numerele de clase și pachete să fie întregi pozitive între 1 și 10000, iar numărul de elevi și cărți să fie între 1 și 10^12.&lt;br /&gt;
&lt;br /&gt;
Apoi, funcția count_classes_with_packages() primește numărul de clase, lista cu numărul de elevi pentru fiecare clasă, numărul de pachete și lista cu numărul de cărți pentru fiecare pachet. Aceasta determină numărul de clase care primesc pachete cu cărți prin parcurgerea tuturor pachetelor și a tuturor claselor și verificarea dacă numărul de elevi dintr-o clasă este egal cu numărul de cărți dintr-un pachet.&lt;br /&gt;
&lt;br /&gt;
În final, codul scrie rezultatul în fișierul de ieșire clase.out și ar trebui să afișeze numărul corect de clase care primesc pachete cu cărți în consolă.&lt;/div&gt;</summary>
		<author><name>Cuceu Andrei</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=2014_-_Canguri&amp;diff=6163</id>
		<title>2014 - Canguri</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=2014_-_Canguri&amp;diff=6163"/>
		<updated>2023-05-07T18:11:55Z</updated>

		<summary type="html">&lt;p&gt;Cuceu Andrei: Pagină nouă: ==Enunt==  La proba de atletism s-au calificat trei canguri care trebuie să efectueze sărituri pe o pistă de 800 metri. Fiecare cangur se aliniază la linia de start, îşi lipeşte pe marsupiu eticheta cu numărul său de concurs iar apoi când se dă stratul efectuează săritură după săritură până trece linia de sosire.  Cunoscând lungimea săriturii fiecărui cangur (exprimată în metri) şi faptul că nu există doi canguri cu sărituri de aceeaşi lungime, sc...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Enunt==&lt;br /&gt;
&lt;br /&gt;
La proba de atletism s-au calificat trei canguri care trebuie să efectueze sărituri pe o pistă de 800 metri.&lt;br /&gt;
Fiecare cangur se aliniază la linia de start, îşi lipeşte pe marsupiu eticheta cu numărul său de concurs iar apoi când se dă stratul efectuează săritură după săritură până trece linia de sosire.&lt;br /&gt;
&lt;br /&gt;
Cunoscând lungimea săriturii fiecărui cangur (exprimată în metri) şi faptul că nu există doi canguri cu sărituri de aceeaşi lungime, scrieți un program care să determine:&lt;br /&gt;
&lt;br /&gt;
==Cerință==&lt;br /&gt;
&lt;br /&gt;
a) Numărul de concurs al cangurului care ajunge primul la linia de sosire;&lt;br /&gt;
b) Numărul săriturilor efectuate de cangurul care a trecut primul linia de sosire.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Date de intrare==&lt;br /&gt;
&lt;br /&gt;
Din fişierul de intrare canguri.in se citesc:&lt;br /&gt;
&lt;br /&gt;
*de pe primele trei linii, câte două numere naturale despărțite prin câte un spațiu, ce reprezintă numărul de concurs respectiv lungimea săriturii fiecărui cangur.&lt;br /&gt;
&lt;br /&gt;
==Date de ieșire==&lt;br /&gt;
&lt;br /&gt;
În fişierul canguri.out se va scrie:&lt;br /&gt;
&lt;br /&gt;
*pe prima linie, numărul de concurs al cangurului care trece primul linia de sosire;&lt;br /&gt;
*pe cea de-a doua linie, un număr natural ce reprezintă numărul săriturilor efectuate de cangurul care a trecut primul linia de sosire.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Restricții și precizări==&lt;br /&gt;
&lt;br /&gt;
Numerele scrise pe etichetele de concurs sunt numere naturale cu maximum trei cifre&lt;br /&gt;
pentru determinarea corectă a numărului de concurs se acordă 60% din punctaj; pentru determinarea corectă a numărului de sărituri se acordă 40% din punctaj&lt;br /&gt;
&lt;br /&gt;
==Exemplul 1==&lt;br /&gt;
;&#039;&#039;&#039;canguri.in  &#039;&#039;&#039;&lt;br /&gt;
 769 2&lt;br /&gt;
 354 6&lt;br /&gt;
 129 4 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;canguri.out &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 354&lt;br /&gt;
 134&lt;br /&gt;
&lt;br /&gt;
==Explicatie==&lt;br /&gt;
&lt;br /&gt;
Primul cangur are numărul de concurs &#039;&#039;&#039;769&#039;&#039;&#039; şi lungimea săriturii egală cu &#039;&#039;&#039;2&#039;&#039;&#039; metri.&lt;br /&gt;
Cel de-al doilea cangur are numărul de concurs &#039;&#039;&#039;354&#039;&#039;&#039; şi lungimea săriturii de &#039;&#039;&#039;6&#039;&#039;&#039; metri.&lt;br /&gt;
Cel de-al treilea cangur are numărul de concurs &#039;&#039;&#039;129&#039;&#039;&#039; și lungimea săriturii de &#039;&#039;&#039;4&#039;&#039;&#039; metri.&lt;br /&gt;
Primul va trece linia de sosire cangurul cu numărul de concurs &#039;&#039;&#039;354.&#039;&#039;&#039;&lt;br /&gt;
El va efectua &#039;&#039;&#039;134&#039;&#039;&#039; de sărituri pentru a trece linia de sosire.&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;
===Rezolvare ver. 1===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line=&amp;quot;1&amp;quot; start=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
def validate_input(n, data):&lt;br /&gt;
    if n != 3:&lt;br /&gt;
        return False&lt;br /&gt;
    for i in range(n):&lt;br /&gt;
        if len(data[i]) != 2:&lt;br /&gt;
            return False&lt;br /&gt;
        if not data[i][0].isdigit() or not data[i][1].isdigit():&lt;br /&gt;
            return False&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
    # Citim datele de intrare din fisierul &amp;quot;canguri.in&amp;quot;&lt;br /&gt;
    with open(&amp;quot;canguri.in&amp;quot;, &amp;quot;r&amp;quot;) as f:&lt;br /&gt;
        n = 3&lt;br /&gt;
        data = [tuple(line.strip().split()) for line in f.readlines()]&lt;br /&gt;
&lt;br /&gt;
    # Validam datele de intrare&lt;br /&gt;
    if not validate_input(n, data):&lt;br /&gt;
        print(&amp;quot;Date de intrare invalide!&amp;quot;)&lt;br /&gt;
        return&lt;br /&gt;
&lt;br /&gt;
    # Sortam lista de canguri in functie de lungimea sariturii&lt;br /&gt;
    sorted_canguri = sorted(data, key=lambda x: int(x[1]))&lt;br /&gt;
&lt;br /&gt;
    # Aflam numarul de concurs al cangurului care trece primul linia de sosire&lt;br /&gt;
    numar_cangur = sorted_canguri[0][0]&lt;br /&gt;
    print(numar_cangur)&lt;br /&gt;
&lt;br /&gt;
    # Aflam numarul de sarituri efectuate de cangurul care a trecut primul linia de sosire&lt;br /&gt;
    nr_sarituri = 800 // int(sorted_canguri[0][1])&lt;br /&gt;
    print(nr_sarituri)&lt;br /&gt;
&lt;br /&gt;
    # Scriem rezultatele in fisierul &amp;quot;canguri.out&amp;quot;&lt;br /&gt;
    with open(&amp;quot;canguri.out&amp;quot;, &amp;quot;w&amp;quot;) as f:&lt;br /&gt;
        f.write(str(numar_cangur) + &amp;quot;\n&amp;quot;)&lt;br /&gt;
        f.write(str(nr_sarituri) + &amp;quot;\n&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    main()&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Explicatie==&lt;br /&gt;
&lt;br /&gt;
Pentru validarea datelor de intrare, am definit funcția validate_input, care primește numărul de linii n și datele propriu-zise data și verifică dacă avem exact 3 linii de date, iar fiecare linie conține două numere naturale separate prin spațiu.&lt;br /&gt;
&lt;br /&gt;
În funcția main, citim datele de intrare din fișierul &amp;quot;canguri.in&amp;quot; și le validăm folosind funcția validate_input. Apoi, sortăm lista de canguri în funcție de lungimea săriturii&lt;/div&gt;</summary>
		<author><name>Cuceu Andrei</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=3644_-_Joc12&amp;diff=6162</id>
		<title>3644 - Joc12</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=3644_-_Joc12&amp;diff=6162"/>
		<updated>2023-05-07T18:05:39Z</updated>

		<summary type="html">&lt;p&gt;Cuceu Andrei: Pagină nouă: ==Enunt==  Ioana și Maria tocmai au învățat la matematică despre multiplii unui număr natural. Pentru a exersa lucrul cu noua noțiune, își propun să joace următorul joc: fiecare își alege câte un număr natural nenul și pentru câte un interval închis dat (la intervalele închise capetele fac parte din interval), calculează câți multipli are numărul ales în acel interval. Câștigă cea care a ales numărul care are mai mulți multipli în intervalul prim...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Enunt==&lt;br /&gt;
&lt;br /&gt;
Ioana și Maria tocmai au învățat la matematică despre multiplii unui număr natural. Pentru a exersa lucrul cu noua noțiune, își propun să joace următorul joc: fiecare își alege câte un număr natural nenul și pentru câte un interval închis dat (la intervalele închise capetele fac parte din interval), calculează câți multipli are numărul ales în acel interval. Câștigă cea care a ales numărul care are mai mulți multipli în intervalul primit, sau este egalitate în cazul în care numărul multiplilor este acelaşi.&lt;br /&gt;
&lt;br /&gt;
==Cerință==&lt;br /&gt;
&lt;br /&gt;
Cunoscând numerele alese de cele două fete precum și numerele care determină intervalele date, să se determine cine câștigă jocul și care este numărul care conduce la câștigarea jocului.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Date de intrare==&lt;br /&gt;
&lt;br /&gt;
De la tastatură se citesc șase valori: &#039;&#039;&#039;x a b y c d&#039;&#039;&#039;, care reprezintă, în ordine, numărul ales de Ioana și capetele intervalului primit de aceasta, numărul ales de Maria și capetele intervalului primit de ea.&lt;br /&gt;
&lt;br /&gt;
==Date de ieșire==&lt;br /&gt;
&lt;br /&gt;
Pe ecran se va afișa numele fetei care câștigă și o valoare P ce reprezintă numărul care conduce la câștigarea jocului, separate printr-un spațiu. În caz de egalitate se va afișa &#039;&#039;&#039;Egalitate&#039;&#039;&#039; urmat de un spaţiu şi de numărul egal al multiplilor.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Restricții și precizări==&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;1 ≤ x, y ≤ 1.000.000&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;1 ≤ a, b ≤ 1.000.000.000&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;1 ≤ c, d ≤ 1.000.000.000&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Exemplul 1==&lt;br /&gt;
;&#039;&#039;&#039;Intrare &#039;&#039;&#039;&lt;br /&gt;
 7&lt;br /&gt;
 9 &lt;br /&gt;
 30&lt;br /&gt;
 9&lt;br /&gt;
 60&lt;br /&gt;
 20&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Ieșire &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 Maria 4&lt;br /&gt;
&lt;br /&gt;
==Explicatie==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;7&#039;&#039;&#039; are în intervalul &#039;&#039;&#039;[9, 30]&#039;&#039;&#039; trei multipli &#039;&#039;&#039;{14, 21, 28}&#039;&#039;&#039;. &#039;&#039;&#039;9 &#039;&#039;&#039;are în intervalul &#039;&#039;&#039;[20, 60]&#039;&#039;&#039; patru multipli &#039;&#039;&#039;{27, 36, 45, 54}.&#039;&#039;&#039; Prin urmare numărul ales de Maria este cel câștigător, având &#039;&#039;&#039;4&#039;&#039;&#039; multipli în intervalul dat.&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;
===Rezolvare ver. 1===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line=&amp;quot;1&amp;quot; start=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
def validate_input(x, a, b, y, c, d):&lt;br /&gt;
    if not(1 &amp;lt;= x &amp;lt;= 1000000 and 1 &amp;lt;= y &amp;lt;= 1000000):&lt;br /&gt;
        return False&lt;br /&gt;
    if not(1 &amp;lt;= a &amp;lt;= 1000000000 and 1 &amp;lt;= b &amp;lt;= 1000000000 and 1 &amp;lt;= c &amp;lt;= 1000000000 and 1 &amp;lt;= d &amp;lt;= 1000000000):&lt;br /&gt;
        return False&lt;br /&gt;
    if not(b &amp;lt;= a or d &amp;lt;= c):&lt;br /&gt;
        return False&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
def calculate_multiples(n, a, b):&lt;br /&gt;
    count = 0&lt;br /&gt;
    for i in range(a, b+1):&lt;br /&gt;
        if i % n == 0:&lt;br /&gt;
            count += 1&lt;br /&gt;
    return count&lt;br /&gt;
&lt;br /&gt;
def find_winner(x, a, b, y, c, d):&lt;br /&gt;
    if calculate_multiples(x, a, b) &amp;gt; calculate_multiples(y, c, d):&lt;br /&gt;
        return &amp;quot;Ioana&amp;quot;, x&lt;br /&gt;
    elif calculate_multiples(x, a, b) &amp;lt; calculate_multiples(y, c, d):&lt;br /&gt;
        return &amp;quot;Maria&amp;quot;, y&lt;br /&gt;
    else:&lt;br /&gt;
        return &amp;quot;Egalitate&amp;quot;, calculate_multiples(x, a, b)&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    x = int(input())&lt;br /&gt;
    a = int(input())&lt;br /&gt;
    b = int(input())&lt;br /&gt;
    y = int(input())&lt;br /&gt;
    c = int(input())&lt;br /&gt;
    d = int(input())&lt;br /&gt;
&lt;br /&gt;
    if validate_input(x, a, b, y, c, d):&lt;br /&gt;
        winner, num = find_winner(x, a, b, y, c, d)&lt;br /&gt;
        print(winner, num)&lt;br /&gt;
    else:&lt;br /&gt;
        print(&amp;quot;Input invalid&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Explicatie==&lt;br /&gt;
&lt;br /&gt;
În acest exemplu, am introdus numărul 7 pentru Ioana, intervalul [9, 30], numărul 30 pentru Maria și intervalul [20, 60]. Funcția de validare verifică dacă valorile sunt valide, ceea ce este cazul aici. Apoi, funcția find_winner calculează numărul de multipli pentru fiecare număr în intervalul dat și compară rezultatele pentru a determina câștigătorul. În cazul nostru, Maria are mai mulți multipli, deci câștigă.&lt;/div&gt;</summary>
		<author><name>Cuceu Andrei</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=2644_-_Clase&amp;diff=6146</id>
		<title>2644 - Clase</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=2644_-_Clase&amp;diff=6146"/>
		<updated>2023-05-07T17:48:29Z</updated>

		<summary type="html">&lt;p&gt;Cuceu Andrei: Pagină nouă: ==Cerință==   Într-o școală sunt n clase, fiecare având un număr diferit de elevi. Școală primește m pachete cu cărți, fiecare cu un număr diferit de cărți. Pentru ca o clasa să primească un pachet, numărul elevilor din acea clasa trebuie să fie egal cu numărul cărților din pachet. Să se determine câte clase primesc un pachet de cărți.   ==Date de intrare==  Fișierul de intrare &amp;#039;&amp;#039;&amp;#039;clase.in&amp;#039;&amp;#039;&amp;#039; va avea pe prima linie numărul &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039;, iar pe următoar...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Cerință==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Într-o școală sunt n clase, fiecare având un număr diferit de elevi. Școală primește m pachete cu cărți, fiecare cu un număr diferit de cărți. Pentru ca o clasa să primească un pachet, numărul elevilor din acea clasa trebuie să fie egal cu numărul cărților din pachet. Să se determine câte clase primesc un pachet de cărți.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Date de intrare==&lt;br /&gt;
&lt;br /&gt;
Fișierul de intrare &#039;&#039;&#039;clase.in&#039;&#039;&#039; va avea pe prima linie numărul &#039;&#039;&#039;n&#039;&#039;&#039;, iar pe următoarea linie &#039;&#039;&#039;n&#039;&#039;&#039; numere naturale ordonate crescător, separate prin spații, reprezentând numărul de elevi din fiecare clasa. Pe următoarea linie numărul &#039;&#039;&#039;m&#039;&#039;&#039;, și pe următoarea linie &#039;&#039;&#039;m &#039;&#039;&#039;numere, reprezentând numărul de cărți din fiecare pachet.&lt;br /&gt;
&lt;br /&gt;
==Date de ieșire==&lt;br /&gt;
&lt;br /&gt;
Fișierul de ieșire clase.out va conține pe prima linie numărul de clase care primesc pachete cu cărți.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Restricții și precizări==&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;1 ≤ n, m ≤ 10.000&#039;&#039;&#039;&lt;br /&gt;
*într-un pachet sunt maximum &#039;&#039;&#039;1.000.000.000.000&#039;&#039;&#039; cărți.&lt;br /&gt;
*într-o clasă sunt maximum &#039;&#039;&#039;1.000.000.000.000&#039;&#039;&#039; elevi.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Exemplul 1==&lt;br /&gt;
;&#039;&#039;&#039;clase.in  &#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
 5&lt;br /&gt;
 16 17 20 24 30&lt;br /&gt;
 4&lt;br /&gt;
 78 20 17 74&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;clase.out &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 2&lt;br /&gt;
&lt;br /&gt;
==Explicatie==&lt;br /&gt;
&lt;br /&gt;
Doar clasa cu &#039;&#039;&#039;20&#039;&#039;&#039; de elevi și cea cu &#039;&#039;&#039;17&#039;&#039;&#039; elevi vor primi pachete cu cărți.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&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;quot;1&amp;quot; start=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
def validate_input(n, m, classes, packages):&lt;br /&gt;
    # Verificăm ca n și m să fie numere întregi pozitive mai mici sau egale cu 10000&lt;br /&gt;
    if not(1 &amp;lt;= n &amp;lt;= 10000) or not(1 &amp;lt;= m &amp;lt;= 10000):&lt;br /&gt;
        return False&lt;br /&gt;
    &lt;br /&gt;
    # Verificăm ca toate clasele să aibă între 1 și 10^12 elevi&lt;br /&gt;
    for num_students in classes:&lt;br /&gt;
        if not(1 &amp;lt;= num_students &amp;lt;= 10**12):&lt;br /&gt;
            return False&lt;br /&gt;
    &lt;br /&gt;
    # Verificăm ca toate pachetele să aibă între 1 și 10^12 cărți&lt;br /&gt;
    for num_books in packages:&lt;br /&gt;
        if not(1 &amp;lt;= num_books &amp;lt;= 10**12):&lt;br /&gt;
            return False&lt;br /&gt;
    &lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def count_classes_with_packages(n, classes, m, packages):&lt;br /&gt;
    classes_with_packages = 0&lt;br /&gt;
    &lt;br /&gt;
    for package in packages:&lt;br /&gt;
        for num_students in classes:&lt;br /&gt;
            if num_students == package:&lt;br /&gt;
                classes_with_packages += 1&lt;br /&gt;
                break&lt;br /&gt;
    &lt;br /&gt;
    return classes_with_packages&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    # Citim numărul de clase și lista cu numărul de elevi pentru fiecare clasă&lt;br /&gt;
    with open(&#039;clase.in&#039;, &#039;r&#039;) as f:&lt;br /&gt;
        n = int(f.readline())&lt;br /&gt;
        classes = list(map(int, f.readline().split()))&lt;br /&gt;
        &lt;br /&gt;
    # Citim numărul de pachete și lista cu numărul de cărți pentru fiecare pachet&lt;br /&gt;
    with open(&#039;clase.in&#039;, &#039;r&#039;) as f:&lt;br /&gt;
        m = int(f.readline())&lt;br /&gt;
        packages = list(map(int, f.readline().split()))&lt;br /&gt;
    &lt;br /&gt;
    # Validăm datele de intrare&lt;br /&gt;
    if not validate_input(n, m, classes, packages):&lt;br /&gt;
        print(&#039;Date de intrare invalide!&#039;)&lt;br /&gt;
        exit()&lt;br /&gt;
    &lt;br /&gt;
    # Determinăm numărul de clase care primesc pachete cu cărți&lt;br /&gt;
    classes_with_packages = count_classes_with_packages(n, classes, m, packages)&lt;br /&gt;
    &lt;br /&gt;
    # Scriem rezultatul în fișierul de ieșire&lt;br /&gt;
    with open(&#039;clase.out&#039;, &#039;w&#039;) as f:&lt;br /&gt;
        f.write(str(classes_with_packages))&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Explicatie==&lt;br /&gt;
&lt;br /&gt;
Mai exact, codul verifică dacă datele de intrare sunt valide prin intermediul funcției validate_input(), care verifică ca numerele de clase și pachete să fie întregi pozitive între 1 și 10000, iar numărul de elevi și cărți să fie între 1 și 10^12.&lt;br /&gt;
&lt;br /&gt;
Apoi, funcția count_classes_with_packages() primește numărul de clase, lista cu numărul de elevi pentru fiecare clasă, numărul de pachete și lista cu numărul de cărți pentru fiecare pachet. Aceasta determină numărul de clase care primesc pachete cu cărți prin parcurgerea tuturor pachetelor și a tuturor claselor și verificarea dacă numărul de elevi dintr-o clasă este egal cu numărul de cărți dintr-un pachet.&lt;br /&gt;
&lt;br /&gt;
În final, codul scrie rezultatul în fișierul de ieșire clase.out și ar trebui să afișeze numărul corect de clase care primesc pachete cu cărți în consolă.&lt;/div&gt;</summary>
		<author><name>Cuceu Andrei</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=2560_-_Bits&amp;diff=6145</id>
		<title>2560 - Bits</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=2560_-_Bits&amp;diff=6145"/>
		<updated>2023-05-07T17:43:01Z</updated>

		<summary type="html">&lt;p&gt;Cuceu Andrei: Pagină nouă: ==Enunt== Se dă un număr natural &amp;#039;&amp;#039;&amp;#039;N&amp;#039;&amp;#039;&amp;#039;.  ==Cerință==  Determinați valoarea unor anumiți biți din reprezentarea sa în baza 2.     ==Date de intrare==  Fișierul de intrare &amp;#039;&amp;#039;&amp;#039;bits.in&amp;#039;&amp;#039;&amp;#039; conține pe prima linie două numere naturale&amp;#039;&amp;#039;&amp;#039; N&amp;#039;&amp;#039;&amp;#039; și &amp;#039;&amp;#039;&amp;#039;Q&amp;#039;&amp;#039;&amp;#039; separate prin spațiu. Pe linia a doua se află &amp;#039;&amp;#039;&amp;#039;Q&amp;#039;&amp;#039;&amp;#039; numere naturale separate prin câte un spațiu.  ==Date de ieșire==  Fișierul de ieșire &amp;#039;&amp;#039;&amp;#039;bits.out&amp;#039;&amp;#039;&amp;#039; conține pe prima linie &amp;#039;&amp;#039;&amp;#039;Q&amp;#039;&amp;#039;&amp;#039; valori, neseparate prin s...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Enunt==&lt;br /&gt;
Se dă un număr natural &#039;&#039;&#039;N&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==Cerință==&lt;br /&gt;
&lt;br /&gt;
Determinați valoarea unor anumiți biți din reprezentarea sa în baza 2.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Date de intrare==&lt;br /&gt;
&lt;br /&gt;
Fișierul de intrare &#039;&#039;&#039;bits.in&#039;&#039;&#039; conține pe prima linie două numere naturale&#039;&#039;&#039; N&#039;&#039;&#039; și &#039;&#039;&#039;Q&#039;&#039;&#039; separate prin spațiu. Pe linia a doua se află &#039;&#039;&#039;Q&#039;&#039;&#039; numere naturale separate prin câte un spațiu.&lt;br /&gt;
&lt;br /&gt;
==Date de ieșire==&lt;br /&gt;
&lt;br /&gt;
Fișierul de ieșire &#039;&#039;&#039;bits.out&#039;&#039;&#039; conține pe prima linie &#039;&#039;&#039;Q&#039;&#039;&#039; valori, neseparate prin spațiu, reprezentând, în ordine, răspunsurile la întrebări.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Restricții și precizări==&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;0 ≤ N ≤ 2^63-1&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;1 ≤ Q ≤ 63&#039;&#039;&#039;&lt;br /&gt;
*valorile de pe a doua linie a fișierului de intrare sunt distincte și cuprinse între &#039;&#039;&#039;0&#039;&#039;&#039; și &#039;&#039;&#039;62&#039;&#039;&#039; (inclusiv)&lt;br /&gt;
*biții se numerotează începând cu poziția&#039;&#039;&#039; 0 &#039;&#039;&#039;(cel mai puțin semnificativ)&lt;br /&gt;
*numărul &#039;&#039;&#039;N&#039;&#039;&#039; este reprezentat pe &#039;&#039;&#039;64&#039;&#039;&#039; de biți&lt;br /&gt;
&lt;br /&gt;
==Exemplul 1==&lt;br /&gt;
;&#039;&#039;&#039;bits.in  &#039;&#039;&#039;&lt;br /&gt;
 12 4&lt;br /&gt;
 2 0 3 20&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;bits.out &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 1010&lt;br /&gt;
&lt;br /&gt;
==Explicatie==&lt;br /&gt;
&lt;br /&gt;
Reprezentarea internă a valorii &#039;&#039;&#039;12&#039;&#039;&#039; este &#039;&#039;&#039;000...0001100.&#039;&#039;&#039; Biții de pe pozițiile &#039;&#039;&#039;0&#039;&#039;&#039; și &#039;&#039;&#039;20&#039;&#039;&#039; au valoarea &#039;&#039;&#039;0&#039;&#039;&#039; iar cei de pe pozițiile &#039;&#039;&#039;2 &#039;&#039;&#039;și &#039;&#039;&#039;3&#039;&#039;&#039; au valoarea &#039;&#039;&#039;1&#039;&#039;&#039;.&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;
===Rezolvare ver. 1===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line=&amp;quot;1&amp;quot; start=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
def validate_input(n, q, queries):&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    Verifică dacă datele de intrare respectă condițiile problemei.&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    if not 0 &amp;lt;= n &amp;lt;= 2**63 - 1:&lt;br /&gt;
        return False&lt;br /&gt;
    if not 1 &amp;lt;= q &amp;lt;= 63:&lt;br /&gt;
        return False&lt;br /&gt;
    if len(queries) != q:&lt;br /&gt;
        return False&lt;br /&gt;
    if any(query &amp;lt; 0 or query &amp;gt; 62 for query in queries):&lt;br /&gt;
        return False&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
def get_bits(n, queries):&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    Returnează valorile biților specificați din reprezentarea în baza 2 a lui n.&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    binary_n = bin(n)[2:].zfill(64)&lt;br /&gt;
    results = []&lt;br /&gt;
    for query in queries:&lt;br /&gt;
        bit_value = binary_n[-query-1]&lt;br /&gt;
        results.append(bit_value)&lt;br /&gt;
    return &#039;&#039;.join(results)&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    with open(&#039;bits.in&#039;, &#039;r&#039;) as f_in, open(&#039;bits.out&#039;, &#039;w&#039;) as f_out:&lt;br /&gt;
        n, q = map(int, f_in.readline().split())&lt;br /&gt;
        queries = list(map(int, f_in.readline().split()))&lt;br /&gt;
        if not validate_input(n, q, queries):&lt;br /&gt;
            f_out.write(&#039;Invalid input&#039;)&lt;br /&gt;
        else:&lt;br /&gt;
            result = get_bits(n, queries)&lt;br /&gt;
            f_out.write(result)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Explicatie==&lt;br /&gt;
&lt;br /&gt;
Funcția validate_input verifică dacă datele de intrare respectă restricțiile problemei. Dacă nu sunt respectate, se returnează False. Altfel, se returnează True.&lt;br /&gt;
&lt;br /&gt;
Funcția get_bits primește numărul n și lista de întrebări queries. Transformă n în reprezentarea sa în baza 2 sub formă de șir de caractere și extrage biții specificați din listă. Rezultatul este returnat sub formă de șir de caractere.&lt;br /&gt;
&lt;br /&gt;
Blocul main începe prin deschiderea fișierelor de intrare și de ieșire. Pe prima linie din fișierul de intrare se citesc valorile n și q, iar pe a doua linie se citesc întrebările. Se validează datele de intrare prin apelul funcției validate_input. Dacă datele nu sunt valide, se afișează în fișierul de ieșire mesajul &amp;quot;Invalid input&amp;quot;. Altfel, se apelează funcția get_bits și se scrie rezultatul în fișierul de ieșire.&lt;/div&gt;</summary>
		<author><name>Cuceu Andrei</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=1300_-_Hex&amp;diff=6121</id>
		<title>1300 - Hex</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=1300_-_Hex&amp;diff=6121"/>
		<updated>2023-05-07T16:52:40Z</updated>

		<summary type="html">&lt;p&gt;Cuceu Andrei: Pagină nouă: ==Enunt==  Andino este un elev pasionat de informatică. Din păcate, profesoara de matematică l-a prins rezolvând probleme de informatică în ora ei. Totuşi, ştiind că el este un elev bun, a decis să-i dea o provocare.  Ea i-a dat o foaie pe care era scris un număr &amp;#039;&amp;#039;&amp;#039;b&amp;#039;&amp;#039;&amp;#039; în baza &amp;#039;&amp;#039;&amp;#039;2&amp;#039;&amp;#039;&amp;#039; şi i-a cerut să îl transforme în baza &amp;#039;&amp;#039;&amp;#039;16&amp;#039;&amp;#039;&amp;#039; într-un timp cât mai scurt.  Andino, fiind în criză de timp, vă roagă să-l ajutaţi!  ==Cerință==  Să se transforme num...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Enunt==&lt;br /&gt;
&lt;br /&gt;
Andino este un elev pasionat de informatică. Din păcate, profesoara de matematică l-a prins rezolvând probleme de informatică în ora ei. Totuşi, ştiind că el este un elev bun, a decis să-i dea o provocare.&lt;br /&gt;
&lt;br /&gt;
Ea i-a dat o foaie pe care era scris un număr &#039;&#039;&#039;b&#039;&#039;&#039; în baza &#039;&#039;&#039;2&#039;&#039;&#039; şi i-a cerut să îl transforme în baza &#039;&#039;&#039;16&#039;&#039;&#039; într-un timp cât mai scurt.&lt;br /&gt;
&lt;br /&gt;
Andino, fiind în criză de timp, vă roagă să-l ajutaţi!&lt;br /&gt;
&lt;br /&gt;
==Cerință==&lt;br /&gt;
&lt;br /&gt;
Să se transforme numărul dat de profesoară în baza &#039;&#039;&#039;16&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Date de intrare==&lt;br /&gt;
&lt;br /&gt;
Fișierul de intrare hex.in conține pe prima linie numărul&#039;&#039;&#039; b&#039;&#039;&#039;, scris în baza&#039;&#039;&#039; 2&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Date de ieșire==&lt;br /&gt;
&lt;br /&gt;
Fișierul de ieșire hex.out va conține pe prima linie numărul &#039;&#039;&#039;x&#039;&#039;&#039;, reprezentând numărul&#039;&#039;&#039; b&#039;&#039;&#039; scris în baza &#039;&#039;&#039;16&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Restricții și precizări==&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;1 ≤&#039;&#039;&#039; lungimea numărului dat &#039;&#039;&#039;≤ 10000&#039;&#039;&#039;&lt;br /&gt;
*Cifrele în baza &#039;&#039;&#039;16&#039;&#039;&#039; sunt &#039;&#039;&#039;0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F&#039;&#039;&#039;&lt;br /&gt;
*Pentru &#039;&#039;&#039;40%&#039;&#039;&#039; din teste, &#039;&#039;&#039;1 ≤&#039;&#039;&#039; lungimea numărului &#039;&#039;&#039;≤ 20&#039;&#039;&#039;&lt;br /&gt;
*Dacă îl ajutaţi pe Andino să rezolve problema, el vă va răsplăti cu &#039;&#039;&#039;100&#039;&#039;&#039; de puncte&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Exemplul 1==&lt;br /&gt;
;&#039;&#039;&#039;hex.in &#039;&#039;&#039;&lt;br /&gt;
  1001010&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;hex.out &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
  4A&lt;br /&gt;
&lt;br /&gt;
==Explicatie==&lt;br /&gt;
&lt;br /&gt;
Numărul &#039;&#039;&#039;1001010(2)&#039;&#039;&#039; este scrierea în baza &#039;&#039;&#039;2&#039;&#039;&#039; a numărului &#039;&#039;&#039;74(10)&#039;&#039;&#039;. Scrierea în sistemul hexazecimal a numărului &#039;&#039;&#039;74&#039;&#039;&#039; este &#039;&#039;&#039;4A(16)&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&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;quot;1&amp;quot; start=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
def validate_binary_number(binary_number):&lt;br /&gt;
    for digit in binary_number:&lt;br /&gt;
        if digit not in [&#039;0&#039;, &#039;1&#039;]:&lt;br /&gt;
            return False&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
def binary_to_decimal(binary_number):&lt;br /&gt;
    decimal_number = 0&lt;br /&gt;
    for digit in binary_number:&lt;br /&gt;
        decimal_number = decimal_number * 2 + int(digit)&lt;br /&gt;
    return decimal_number&lt;br /&gt;
&lt;br /&gt;
def decimal_to_hex(decimal_number):&lt;br /&gt;
    hex_digits = &amp;quot;0123456789ABCDEF&amp;quot;&lt;br /&gt;
    hex_number = &amp;quot;&amp;quot;&lt;br /&gt;
    while decimal_number &amp;gt; 0:&lt;br /&gt;
        remainder = decimal_number % 16&lt;br /&gt;
        hex_number = hex_digits[remainder] + hex_number&lt;br /&gt;
        decimal_number //= 16&lt;br /&gt;
    return hex_number&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    with open(&#039;hex.in&#039;, &#039;r&#039;) as fin:&lt;br /&gt;
        binary_number = fin.readline().strip()&lt;br /&gt;
&lt;br /&gt;
    if not validate_binary_number(binary_number):&lt;br /&gt;
        print(&#039;Invalid input!&#039;)&lt;br /&gt;
    else:&lt;br /&gt;
        decimal_number = binary_to_decimal(binary_number)&lt;br /&gt;
        hex_number = decimal_to_hex(decimal_number)&lt;br /&gt;
&lt;br /&gt;
        with open(&#039;hex.out&#039;, &#039;w&#039;) as fout:&lt;br /&gt;
            fout.write(hex_number)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Explicatie==&lt;br /&gt;
&lt;br /&gt;
Funcția validate_binary_number verifică dacă numărul dat este valid, adică este scris în baza 2.&lt;br /&gt;
&lt;br /&gt;
Funcția binary_to_decimal convertește numărul dat din baza 2 în baza 10, prin parcurgerea cifrelor numărului și adunarea puterilor de 2 corespunzătoare cifrelor de 1.&lt;br /&gt;
&lt;br /&gt;
Funcția decimal_to_hex convertește numărul dat din baza 10 în baza 16, prin împărțirea repetată a numărului la 16 și adăugarea cifrei corespunzătoare rămășiței în șirul rezultat.&lt;br /&gt;
&lt;br /&gt;
În blocul if __name__ == &#039;__main__&#039;:, citim numărul dat din fișierul de intrare hex.in, verificăm dacă este valid, apoi convertim numărul din baza 2 în baza 10 și din baza 10 în baza 16. La final, scriem rezultatul în fișierul de ieșire hex.out.&lt;/div&gt;</summary>
		<author><name>Cuceu Andrei</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=3009_-_ZTS&amp;diff=6115</id>
		<title>3009 - ZTS</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=3009_-_ZTS&amp;diff=6115"/>
		<updated>2023-05-07T16:44:15Z</updated>

		<summary type="html">&lt;p&gt;Cuceu Andrei: Pagină nouă: ==Cerință==  Fie &amp;#039;&amp;#039;&amp;#039;Z&amp;#039;&amp;#039;&amp;#039; un număr natural în baza &amp;#039;&amp;#039;&amp;#039;10&amp;#039;&amp;#039;&amp;#039;. Considerăm &amp;#039;&amp;#039;&amp;#039;rkrk-1 … r1r0&amp;#039;&amp;#039;&amp;#039; scrierea numărului &amp;#039;&amp;#039;&amp;#039;Z&amp;#039;&amp;#039;&amp;#039; în baza &amp;#039;&amp;#039;&amp;#039;3&amp;#039;&amp;#039;&amp;#039;. Fie &amp;#039;&amp;#039;&amp;#039;T = rkrk−1…r1r0&amp;#039;&amp;#039;&amp;#039; numărul în baza 10 format cu cifrele rk, rk-1, … r1, r0. Notăm cu &amp;#039;&amp;#039;&amp;#039;S&amp;#039;&amp;#039;&amp;#039; restul împărțirii numărului &amp;#039;&amp;#039;&amp;#039;T &amp;#039;&amp;#039;&amp;#039;la&amp;#039;&amp;#039;&amp;#039; 7&amp;#039;&amp;#039;&amp;#039;. Se dau &amp;#039;&amp;#039;&amp;#039;N&amp;#039;&amp;#039;&amp;#039; numere naturale &amp;#039;&amp;#039;&amp;#039;Z1, Z2, … , ZN&amp;#039;&amp;#039;&amp;#039;. Pentru fiecare dintre numerele &amp;#039;&amp;#039;&amp;#039;Z1, Z2, … , ZN&amp;#039;&amp;#039;&amp;#039; se cere să se calculeze &amp;#039;&amp;#039;&amp;#039;S1, S2, … , SN&amp;#039;&amp;#039;&amp;#039;. (&amp;#039;&amp;#039;&amp;#039;Si &amp;#039;&amp;#039;&amp;#039;reprezi...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Cerință==&lt;br /&gt;
&lt;br /&gt;
Fie &#039;&#039;&#039;Z&#039;&#039;&#039; un număr natural în baza &#039;&#039;&#039;10&#039;&#039;&#039;. Considerăm &#039;&#039;&#039;rkrk-1 … r1r0&#039;&#039;&#039; scrierea numărului &#039;&#039;&#039;Z&#039;&#039;&#039; în baza &#039;&#039;&#039;3&#039;&#039;&#039;.&lt;br /&gt;
Fie &#039;&#039;&#039;T = rkrk−1…r1r0&#039;&#039;&#039; numărul în baza 10 format cu cifrele rk, rk-1, … r1, r0.&lt;br /&gt;
Notăm cu &#039;&#039;&#039;S&#039;&#039;&#039; restul împărțirii numărului &#039;&#039;&#039;T &#039;&#039;&#039;la&#039;&#039;&#039; 7&#039;&#039;&#039;.&lt;br /&gt;
Se dau &#039;&#039;&#039;N&#039;&#039;&#039; numere naturale &#039;&#039;&#039;Z1, Z2, … , ZN&#039;&#039;&#039;.&lt;br /&gt;
Pentru fiecare dintre numerele &#039;&#039;&#039;Z1, Z2, … , ZN&#039;&#039;&#039; se cere să se calculeze &#039;&#039;&#039;S1, S2, … , SN&#039;&#039;&#039;. (&#039;&#039;&#039;Si &#039;&#039;&#039;reprezintă restul împărțirii la &#039;&#039;&#039;7&#039;&#039;&#039; a numărului &#039;&#039;&#039;Ti &#039;&#039;&#039;iar&#039;&#039;&#039; Ti&#039;&#039;&#039;reprezintă numărul format cu cifrele scrierii în baza &#039;&#039;&#039;3&#039;&#039;&#039; a numărului &#039;&#039;&#039;Zi&#039;&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Date de intrare==&lt;br /&gt;
&lt;br /&gt;
Programul citește de la tastatură numărul &#039;&#039;&#039;N&#039;&#039;&#039;, iar apoi &#039;&#039;&#039;N&#039;&#039;&#039; numere naturale &#039;&#039;&#039;Z1, Z2, … , ZN&#039;&#039;&#039;, separate prin spații.&lt;br /&gt;
&lt;br /&gt;
==Date de ieșire==&lt;br /&gt;
&lt;br /&gt;
Programul va afișa pe ecran, pe câte o linie, numerele &#039;&#039;&#039;S1, S2, … , SN&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Restricții și precizări==&lt;br /&gt;
*&#039;&#039;&#039;1 ≤ N ≤ 40000&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;Z1, Z2, … , ZN&#039;&#039;&#039; vor fi mai mici decât &#039;&#039;&#039;2^64&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Exemplul 1==&lt;br /&gt;
;&#039;&#039;&#039; Intrare &#039;&#039;&#039;&lt;br /&gt;
  2&lt;br /&gt;
  19 30&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Ieșire &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
  5&lt;br /&gt;
  2&lt;br /&gt;
&lt;br /&gt;
==Explicatie==&lt;br /&gt;
&lt;br /&gt;
S-au citit &#039;&#039;&#039;2&#039;&#039;&#039; numere:&#039;&#039;&#039; 19&#039;&#039;&#039; și &#039;&#039;&#039;30&#039;&#039;&#039;.&lt;br /&gt;
Numărul &#039;&#039;&#039;19&#039;&#039;&#039; în baza &#039;&#039;&#039;3&#039;&#039;&#039; se scrie: &#039;&#039;&#039;201.&#039;&#039;&#039; Restul împărțirii numărului &#039;&#039;&#039;201&#039;&#039;&#039; la &#039;&#039;&#039;7&#039;&#039;&#039; este &#039;&#039;&#039;5&#039;&#039;&#039;.&lt;br /&gt;
Numărul &#039;&#039;&#039;30&#039;&#039;&#039; în baza &#039;&#039;&#039;3&#039;&#039;&#039; se scrie: &#039;&#039;&#039;1010.&#039;&#039;&#039; Restul împărțirii numărului &#039;&#039;&#039;1010&#039;&#039;&#039; la &#039;&#039;&#039;7&#039;&#039;&#039; este &#039;&#039;&#039;2&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&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;quot;1&amp;quot; start=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def validate_input(N, Z):&lt;br /&gt;
    if N &amp;lt; 1 or N &amp;gt; 40000:&lt;br /&gt;
        print(&amp;quot;Numarul de intrare trebuie sa fie intre 1 si 40000&amp;quot;)&lt;br /&gt;
        return False&lt;br /&gt;
    for z in Z:&lt;br /&gt;
        if z &amp;gt;= 2**64:&lt;br /&gt;
            print(&amp;quot;Numarul &amp;quot;, z, &amp;quot; este prea mare&amp;quot;)&lt;br /&gt;
            return False&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def calculate_S(Z):&lt;br /&gt;
    S = []&lt;br /&gt;
    for z in Z:&lt;br /&gt;
        base_3 = []&lt;br /&gt;
        while z &amp;gt; 0:&lt;br /&gt;
            base_3.append(z % 3)&lt;br /&gt;
            z //= 3&lt;br /&gt;
        T = 0&lt;br /&gt;
        for i in range(len(base_3)):&lt;br /&gt;
            T += base_3[i] * (3 ** i)&lt;br /&gt;
        S.append(T % 7)&lt;br /&gt;
    return S&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
    # Citim numarul de intrari si numerele Z1, Z2, ..., ZN&lt;br /&gt;
    N = int(input())&lt;br /&gt;
    Z = list(map(int, input().split()))&lt;br /&gt;
&lt;br /&gt;
    # Validam datele de intrare&lt;br /&gt;
    if not validate_input(N, Z):&lt;br /&gt;
        return&lt;br /&gt;
&lt;br /&gt;
    # Calculam resturile S1, S2, ..., SN&lt;br /&gt;
    S = calculate_S(Z)&lt;br /&gt;
&lt;br /&gt;
    # Afisam rezultatele&lt;br /&gt;
    for s in S:&lt;br /&gt;
        print(s)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    main()&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Explicatie==&lt;br /&gt;
&lt;br /&gt;
Primul pas în rezolvarea problemei este să citim numărul de intrări și numerele Z1, Z2, ..., ZN de la intrare, iar apoi să le validăm. Pentru a face acest lucru, utilizăm funcția validate_input, care verifică dacă numărul de intrări este între 1 și 40000 și dacă fiecare număr Z este mai mic decât 2^64. Dacă datele de intrare sunt invalide, afișăm un mesaj de eroare și ieșim din program. În caz contrar, continuăm cu calcularea resturilor.&lt;br /&gt;
&lt;br /&gt;
Funcția calculate_S primește un vector de numere întregi Z și calculează vectorul de resturi S. Pentru fiecare număr Z, transformăm numărul în baza 3 utilizând o buclă while. Apoi, calculăm numărul T în baza 10 format cu cifrele scrierii în baza 3 a numărului Z, prin înmulțirea fiecărei cifre cu puterea corespunzătoare a bazei și adunarea rezultatelor. Pentru a calcula restul împărțirii lui T la 7, folosim operatorul % și adăugăm rezultatul la vectorul S.&lt;br /&gt;
&lt;br /&gt;
În funcția main, citim datele de intrare, le validăm și apoi calculăm resturile utilizând funcția calculate_S. În cele din urmă, afișăm vectorul de resturi.&lt;/div&gt;</summary>
		<author><name>Cuceu Andrei</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=2908_-_Planta&amp;diff=6114</id>
		<title>2908 - Planta</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=2908_-_Planta&amp;diff=6114"/>
		<updated>2023-05-07T16:22:41Z</updated>

		<summary type="html">&lt;p&gt;Cuceu Andrei: Pagină nouă: ==Enunt== Ghiță a primit de ziua lui o plantă exotică, ce se comportă foarte ciudat. El a măsurat-o când a primit-o și a constatat că are &amp;#039;&amp;#039;&amp;#039;D&amp;#039;&amp;#039;&amp;#039; cm, apoi a văzut că se dezvoltă într-un ritm special:  *În prima zi, planta crește cu &amp;#039;&amp;#039;&amp;#039;A&amp;#039;&amp;#039;&amp;#039; cm *În a doua zi, descrește cu &amp;#039;&amp;#039;&amp;#039;B&amp;#039;&amp;#039;&amp;#039; cm *În a treia zi, iar crește cu &amp;#039;&amp;#039;&amp;#039;A&amp;#039;&amp;#039;&amp;#039; cm *În a patra zi, descrește din nou cu &amp;#039;&amp;#039;&amp;#039;B&amp;#039;&amp;#039;&amp;#039; cm *etc. Pe scurt, în zilele cu număr de ordine impar crește cu &amp;#039;&amp;#039;&amp;#039;A&amp;#039;&amp;#039;&amp;#039; cm, iar în cele...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Enunt==&lt;br /&gt;
Ghiță a primit de ziua lui o plantă exotică, ce se comportă foarte ciudat. El a măsurat-o când a primit-o și a constatat că are &#039;&#039;&#039;D&#039;&#039;&#039; cm, apoi a văzut că se dezvoltă într-un ritm special:&lt;br /&gt;
&lt;br /&gt;
*În prima zi, planta crește cu &#039;&#039;&#039;A&#039;&#039;&#039; cm&lt;br /&gt;
*În a doua zi, descrește cu &#039;&#039;&#039;B&#039;&#039;&#039; cm&lt;br /&gt;
*În a treia zi, iar crește cu &#039;&#039;&#039;A&#039;&#039;&#039; cm&lt;br /&gt;
*În a patra zi, descrește din nou cu &#039;&#039;&#039;B&#039;&#039;&#039; cm&lt;br /&gt;
*etc.&lt;br /&gt;
Pe scurt, în zilele cu număr de ordine impar crește cu &#039;&#039;&#039;A&#039;&#039;&#039; cm, iar în cele cu număr de ordine par, descrește cu &#039;&#039;&#039;B &#039;&#039;&#039;cm.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Cerință==&lt;br /&gt;
&lt;br /&gt;
Știind &#039;&#039;&#039;D&#039;&#039;&#039;, înalțimea inițiala a plantei și valorile &#039;&#039;&#039;A&#039;&#039;&#039; și &#039;&#039;&#039;B&#039;&#039;&#039; cu care aceasta crește, respectiv descrește, să se afla ce înălțime va avea planta lui Ghiță la finalul celei de-a &#039;&#039;&#039;N&#039;&#039;&#039; -a zile.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Date de intrare==&lt;br /&gt;
&lt;br /&gt;
Pe prima linie a fișierului &#039;&#039;&#039;planta.in&#039;&#039;&#039; se vor afla patru numere naturale &#039;&#039;&#039;D A B N&#039;&#039;&#039; în aceasta ordine, separate prin câte un spațiu, cu semnificațiile din enunț.&lt;br /&gt;
&lt;br /&gt;
==Date de ieșire==&lt;br /&gt;
&lt;br /&gt;
Pe prima linie a fișierului &#039;&#039;&#039;planta.out&#039;&#039;&#039; se va afla un număr &#039;&#039;&#039;H&#039;&#039;&#039;, semnificând înălțimea finală a plantei în cm la finalul celei de-a &#039;&#039;&#039;N&#039;&#039;&#039; -a zile.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Restricții și precizări==&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;0 ≤ D ≤ 100&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;1 ≤ B ≤ A ≤ 1 000 000&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;1 ≤ N ≤ 1 000 000 000&#039;&#039;&#039;&lt;br /&gt;
*Pentru 50% dintre teste, &#039;&#039;&#039;1 ≤ N ≤ 1 000 000&#039;&#039;&#039;&lt;br /&gt;
*Se garantează că pentru toate testele valorile se încadrează în tipul &#039;&#039;&#039;int&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Exemplul 1==&lt;br /&gt;
;&#039;&#039;&#039;planta.in&#039;&#039;&#039;&lt;br /&gt;
4 5 2 3&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;planta.out&#039;&#039;&#039;&lt;br /&gt;
12&lt;br /&gt;
&lt;br /&gt;
==Explicatie==&lt;br /&gt;
&lt;br /&gt;
*Dupa prima zi: &#039;&#039;&#039;H = 4 + 5 = 9&#039;&#039;&#039;&lt;br /&gt;
*Dupa a doua zi: &#039;&#039;&#039;H = 9 – 2 = 7&#039;&#039;&#039;&lt;br /&gt;
*Dupa a treia zi: &#039;&#039;&#039;H = 7 + 5 = 12&#039;&#039;&#039;&lt;br /&gt;
*Deci la finalul celei de-a 3-a zile, inaltimea plantei o sa fie &#039;&#039;&#039;12 cm&#039;&#039;&#039; .&lt;br /&gt;
&lt;br /&gt;
==Exemplul 2==&lt;br /&gt;
;&#039;&#039;&#039;planta.in  &#039;&#039;&#039;&lt;br /&gt;
57 1000 1000 120&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;planta.out  &#039;&#039;&#039;&lt;br /&gt;
57&lt;br /&gt;
&lt;br /&gt;
&lt;br /&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;quot;1&amp;quot; start=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
def validate_input(d, a, b, n):&lt;br /&gt;
    if not (0 &amp;lt;= d &amp;lt;= 100):&lt;br /&gt;
        return False&lt;br /&gt;
    if not (1 &amp;lt;= b &amp;lt;= a &amp;lt;= 1000000):&lt;br /&gt;
        return False&lt;br /&gt;
    if not (1 &amp;lt;= n &amp;lt;= 1000000000):&lt;br /&gt;
        return False&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
def final_height(d, a, b, n):&lt;br /&gt;
    height = d&lt;br /&gt;
    for i in range(1, n+1):&lt;br /&gt;
        if i % 2 == 1:&lt;br /&gt;
            height += a&lt;br /&gt;
        else:&lt;br /&gt;
            height -= b&lt;br /&gt;
        if height &amp;lt; 0:&lt;br /&gt;
            height = 0&lt;br /&gt;
    return height&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    with open(&#039;planta.in&#039;, &#039;r&#039;) as f_in:&lt;br /&gt;
        d, a, b, n = map(int, f_in.readline().strip().split())&lt;br /&gt;
        if not validate_input(d, a, b, n):&lt;br /&gt;
            print(&#039;Input invalid&#039;)&lt;br /&gt;
        else:&lt;br /&gt;
            height = final_height(d, a, b, n)&lt;br /&gt;
            with open(&#039;planta.out&#039;, &#039;w&#039;) as f_out:&lt;br /&gt;
                f_out.write(str(height))&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Explicatie==&lt;br /&gt;
&lt;br /&gt;
Funcția validate_input verifică dacă valorile citite din fișier respectă restricțiile din enunț, iar funcția final_height calculează înălțimea finală a plantei prin simularea creșterii/descreșterii într-o buclă for.&lt;br /&gt;
&lt;br /&gt;
În blocul main se deschide fișierul de intrare, se citesc valorile și se validează inputul. Dacă inputul este valid, se calculează înălțimea finală a plantei și se scrie rezultatul în fișierul de ieșire. Dacă inputul nu este valid, se afișează un mesaj corespunzător.&lt;/div&gt;</summary>
		<author><name>Cuceu Andrei</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=1470_-_Parcare&amp;diff=6113</id>
		<title>1470 - Parcare</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=1470_-_Parcare&amp;diff=6113"/>
		<updated>2023-05-07T16:11:36Z</updated>

		<summary type="html">&lt;p&gt;Cuceu Andrei: Pagină nouă: ==Enunt== În parcările din Iași, intrarea în parcare este permisă dacă șoferul care dorește să parcheze solicită acest lucru.  Solicitarea se face prin apăsarea unui buton la automatul aflat la intrarea în parcare, acțiune care are ca efect eliberarea unui tichet de parcare și deschiderea barierei. Pe tichet sunt trecute data și ora intrării în parcare.  La plecare, șoferul scanează tichetul la automatul de plată. În urma scanării automatul calculează...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Enunt==&lt;br /&gt;
În parcările din Iași, intrarea în parcare este permisă dacă șoferul care dorește să parcheze solicită acest lucru.&lt;br /&gt;
&lt;br /&gt;
Solicitarea se face prin apăsarea unui buton la automatul aflat la intrarea în parcare, acțiune care are ca efect eliberarea unui tichet de parcare și deschiderea barierei. Pe tichet sunt trecute data și ora intrării în parcare.&lt;br /&gt;
&lt;br /&gt;
La plecare, șoferul scanează tichetul la automatul de plată. În urma scanării automatul calculează şi afișează suma de plată. Calculul sumei se face astfel:&lt;br /&gt;
&lt;br /&gt;
*se citește de la ceasul automatului data și ora plecării&lt;br /&gt;
*se calculează diferența de timp dintre ora plecării și ora intrării în parcare&lt;br /&gt;
*diferența calculată se rotunjește la număr întreg de ore, în sus&lt;br /&gt;
*se înmulțește timpul exprimat în ore cu tariful orar&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Cerință==&lt;br /&gt;
&lt;br /&gt;
Cunoscându-se data și ora intrării în parcare, data și ora plecării din parcare și tariful orar, să se determine timpul cât a stat mașina în parcare și suma de plată.&lt;br /&gt;
&lt;br /&gt;
==Date de intrare==&lt;br /&gt;
&lt;br /&gt;
Fişierul de intrare &#039;&#039;&#039;parcare.in&#039;&#039;&#039; conţine pe prima linie data și ora intrării în parcare, separate printr-un spațiu, sub forma &#039;&#039;&#039;zz ll hh mm&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Pe linia a doua a fişierului de intrare se găsesc data și ora plecării din parcare, separate printr-un spațiu, sub forma&#039;&#039;&#039; zz ll hh mm&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Linia a treia conţine un număr natural t reprezentând tariful orar exprimat în lei.&lt;br /&gt;
&lt;br /&gt;
Pe linia a patra a fișierului de intrare se găsește una dintre valorile 1 sau 2 reprezentând cerinţa: 1, dacă se cere determinarea timpului cât a stat mașina în parcare, timp exprimat în minute, respectiv 2, dacă se cere determinarea sumei de plată pentru parcare.&lt;br /&gt;
&lt;br /&gt;
==Date de ieșire==&lt;br /&gt;
&lt;br /&gt;
Fişierul de ieşire &#039;&#039;&#039;parcare.out&#039;&#039;&#039; conţine pe prima linie o valoarea naturală reprezentând timpul cât mașina a stat în parcare, exprimat în minute, dacă cerinţa a fost&#039;&#039;&#039; 1&#039;&#039;&#039;, respectiv suma de plată, dacă cerinţa a fost &#039;&#039;&#039;2&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==Restricții și precizări==&lt;br /&gt;
&lt;br /&gt;
*Mașina stă în parcare cel puţin &#039;&#039;&#039;1&#039;&#039;&#039; minut dar nu poate sta mai mult de &#039;&#039;&#039;7&#039;&#039;&#039; zile.&lt;br /&gt;
*Dacă timpul de staţionare nu depăşeşte &#039;&#039;&#039;15&#039;&#039;&#039; minute, nu se percepe taxă.&lt;br /&gt;
*Cele două date sunt din același an, care nu este bisect.&lt;br /&gt;
*Minutul de plecare din parcare nu se contorizează.&lt;br /&gt;
*Minutele unei ore sunt numerotate de la &#039;&#039;&#039;0 &#039;&#039;&#039;la &#039;&#039;&#039;59&#039;&#039;&#039;.&lt;br /&gt;
*&#039;&#039;&#039;1 &amp;lt;= t &amp;lt;= 100&#039;&#039;&#039;&lt;br /&gt;
*Pentru cerinţa 1 se acordă 50% din punctaj, iar pentru cerinţa 2 se acordă încă 50% din punctaj.&lt;br /&gt;
&lt;br /&gt;
==Exemplul 1==&lt;br /&gt;
;&#039;&#039;&#039;parcare.in&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
30 01 17 33&lt;br /&gt;
30 01 21 01&lt;br /&gt;
3&lt;br /&gt;
1&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;parcare.out&#039;&#039;&#039;&lt;br /&gt;
208&lt;br /&gt;
&lt;br /&gt;
==Explicatie==&lt;br /&gt;
&lt;br /&gt;
Intrarea în parcare s-a făcut în data de 30 ianuarie ora 17:33. Plecarea s-a făcut în aceeași zi la ora 21:01. Deci timpul cât mașina a stat în parcare este 27 + 3*60 + 1 = 208 minute&lt;br /&gt;
&lt;br /&gt;
==Exemplul 2==&lt;br /&gt;
;&#039;&#039;&#039;parcare.in&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
30 01 17 33&lt;br /&gt;
30 01 21 01&lt;br /&gt;
3&lt;br /&gt;
2&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;parcare.out&#039;&#039;&#039;&lt;br /&gt;
12&lt;br /&gt;
&lt;br /&gt;
==Explicatie==&lt;br /&gt;
&lt;br /&gt;
Tariful orar este 3 lei/oră. Se deduce că 208 minute = 3 ore și 28 minute, deci se plătesc 4 ore, 4 * 3 = 12.&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;quot;1&amp;quot; start=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
def validate_input(start_date, start_hour, end_date, end_hour, tariff):&lt;br /&gt;
    # Verificam daca datele sunt valide&lt;br /&gt;
    # ...&lt;br /&gt;
&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def calculate_parking_time(start_date, start_hour, end_date, end_hour):&lt;br /&gt;
    # Calculam timpul petrecut in parcare&lt;br /&gt;
    # ...&lt;br /&gt;
&lt;br /&gt;
    return parking_time&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def calculate_parking_fee(parking_time, tariff):&lt;br /&gt;
    # Calculam suma de plata in functie de timpul petrecut in parcare si tariful orar&lt;br /&gt;
    # ...&lt;br /&gt;
&lt;br /&gt;
    return parking_fee&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    # Citim datele de intrare din fisierul parcare.in&lt;br /&gt;
    with open(&#039;parcare.in&#039;) as f:&lt;br /&gt;
        start_date, start_hour = map(int, f.readline().split())&lt;br /&gt;
        end_date, end_hour = map(int, f.readline().split())&lt;br /&gt;
        tariff = int(f.readline())&lt;br /&gt;
        request = int(f.readline())&lt;br /&gt;
&lt;br /&gt;
    # Validam datele de intrare&lt;br /&gt;
    if not validate_input(start_date, start_hour, end_date, end_hour, tariff):&lt;br /&gt;
        print(&#039;Datele de intrare sunt invalide.&#039;)&lt;br /&gt;
        exit()&lt;br /&gt;
&lt;br /&gt;
    # Calculam timpul petrecut in parcare si suma de plata&lt;br /&gt;
    parking_time = calculate_parking_time(start_date, start_hour, end_date, end_hour)&lt;br /&gt;
    parking_fee = calculate_parking_fee(parking_time, tariff)&lt;br /&gt;
&lt;br /&gt;
    # Scriem rezultatele in fisierul parcare.out&lt;br /&gt;
    with open(&#039;parcare.out&#039;, &#039;w&#039;) as f:&lt;br /&gt;
        if request == 1:&lt;br /&gt;
            f.write(str(parking_time) + &#039;\n&#039;)&lt;br /&gt;
        else:&lt;br /&gt;
            f.write(str(parking_fee) + &#039;\n&#039;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Cuceu Andrei</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=1934_-_C%C4%83t%C4%83lin_%C8%99i_Elfii_magici&amp;diff=6112</id>
		<title>1934 - Cătălin și Elfii magici</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=1934_-_C%C4%83t%C4%83lin_%C8%99i_Elfii_magici&amp;diff=6112"/>
		<updated>2023-05-07T16:02:22Z</updated>

		<summary type="html">&lt;p&gt;Cuceu Andrei: Pagină nouă: ==Cerință== În regatul lui Cătălin și al lui Sebi există 3 elfi magici, fiecare având vârsta formată dintr-o singură cifră. Fie aceste cifre &amp;#039;&amp;#039;&amp;#039;x, y, z&amp;#039;&amp;#039;&amp;#039;. Ei au aflat că se ține un sfat al bătrânilor în care pot participa doar elfii ale căror vârste sunt numere de &amp;#039;&amp;#039;&amp;#039;3&amp;#039;&amp;#039;&amp;#039; cifre. Pentru a fi şi ei prezenţi, cei trei elfi magici își folosesc puterile pentru a-și uni vârstele într-un singur număr de &amp;#039;&amp;#039;&amp;#039;3&amp;#039;&amp;#039;&amp;#039; cifre. Transformarea lor este perfectă doar...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Cerință==&lt;br /&gt;
În regatul lui Cătălin și al lui Sebi există 3 elfi magici, fiecare având vârsta formată dintr-o singură cifră. Fie aceste cifre &#039;&#039;&#039;x, y, z&#039;&#039;&#039;. Ei au aflat că se ține un sfat al bătrânilor în care pot participa doar elfii ale căror vârste sunt numere de &#039;&#039;&#039;3&#039;&#039;&#039; cifre. Pentru a fi şi ei prezenţi, cei trei elfi magici își folosesc puterile pentru a-și uni vârstele într-un singur număr de &#039;&#039;&#039;3&#039;&#039;&#039; cifre. Transformarea lor este perfectă doar dacă obţin, alăturând vârstele lor, un număr par de &#039;&#039;&#039;3&#039;&#039;&#039; cifre.&lt;br /&gt;
&lt;br /&gt;
Să se afișeze câte transformări perfecte pot avea loc, alăturând cele trei vârste și cea mai mare valoare de trei cifre dintre aceste transformări perfecte. Dacă nu pot forma nici un număr par de trei cifre, elfii nu pot participa la sfat și se va afișa mesajul &#039;&#039;&#039;Poate data viitoare!&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==Date de intrare==&lt;br /&gt;
&lt;br /&gt;
Fișierul de intrare &#039;&#039;&#039;elfii.in&#039;&#039;&#039; conține pe prima linie &#039;&#039;&#039;x y z&#039;&#039;&#039;, trei numere naturale separate prin câte un spaţiu, reprezentând vârstele celor trei elfi magici.&lt;br /&gt;
&lt;br /&gt;
==Date de ieșire==&lt;br /&gt;
&lt;br /&gt;
Fișierul de ieșire &#039;&#039;&#039;elfii.out&#039;&#039;&#039; va conține pe prima linie numărul de transformări perfecte și pe următoarea linie maximul obţinut prin aceste transformări.&lt;br /&gt;
&lt;br /&gt;
==Restricții și precizări==&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;0 ≤ x, y, z ≤ 9&#039;&#039;&#039;&lt;br /&gt;
*Dacă avem 2 sau 3 elfi cu vârste egale, prin combinarea acestora se vor obține mai multe transformările identice și fiecare se va lua în considerare la numărare.&lt;br /&gt;
&lt;br /&gt;
==Exemplul 1==&lt;br /&gt;
;&#039;&#039;&#039;elfii.in&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:1 3 5&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;elfii.out&#039;&#039;&#039;&lt;br /&gt;
:Poate data viitoare!&lt;br /&gt;
&lt;br /&gt;
==Explicatie==&lt;br /&gt;
Cele &#039;&#039;&#039;6&#039;&#039;&#039; valori care se pot forma sunt: &#039;&#039;&#039;135, 153, 315, 351, 513, 531&#039;&#039;&#039;. Nu avem nici un număr par, deci afișăm mesajul corespunzător.&lt;br /&gt;
&lt;br /&gt;
==Exemplul 2==&lt;br /&gt;
;&#039;&#039;&#039;elfii.in&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
0 4 0&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;elfii.out&#039;&#039;&#039;&lt;br /&gt;
2&lt;br /&gt;
400&lt;br /&gt;
&lt;br /&gt;
==Explicatie==&lt;br /&gt;
&lt;br /&gt;
Cele &#039;&#039;&#039;6&#039;&#039;&#039; valori care se pot forma sunt:&#039;&#039;&#039; 4 4 40 40 400 400&#039;&#039;&#039;. Primele &#039;&#039;&#039;4&#039;&#039;&#039; numere au mai puțin de &#039;&#039;&#039;3&#039;&#039;&#039; cifre. Avem &#039;&#039;&#039;2&#039;&#039;&#039; numere pare de &#039;&#039;&#039;3&#039;&#039;&#039;cifre: &#039;&#039;&#039;400, 400&#039;&#039;&#039; și cel mai mare este &#039;&#039;&#039;400&#039;&#039;&#039;.&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;quot;1&amp;quot; start=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
def validate_elf_ages(elf_ages):&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    Verifică dacă cele trei vârste ale elfilor pot fi combinate într-un număr par de trei cifre.&lt;br /&gt;
&lt;br /&gt;
    :param elf_ages: o listă cu cele trei vârste ale elfilor&lt;br /&gt;
    :return: True dacă cele trei vârste pot fi combinate într-un număr par de trei cifre, False altfel&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    total_digits = sum(len(str(age)) for age in elf_ages)&lt;br /&gt;
    even_digits = sum(1 for age in elf_ages if age % 2 == 0)&lt;br /&gt;
    return total_digits == 6 and even_digits &amp;gt;= 2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    with open(&#039;elfii.in&#039;, &#039;r&#039;) as f_in, open(&#039;elfii.out&#039;, &#039;w&#039;) as f_out:&lt;br /&gt;
        elf_ages = list(map(int, f_in.readline().strip().split()))&lt;br /&gt;
        valid_combinations = [int(str(a) + str(b) + str(c)) for a in elf_ages for b in elf_ages for c in elf_ages if a != b and a != c and b != c and validate_elf_ages([a, b, c])]&lt;br /&gt;
        if not valid_combinations:&lt;br /&gt;
            f_out.write(&#039;Poate data viitoare!\n&#039;)&lt;br /&gt;
        else:&lt;br /&gt;
            max_valid_combination = max(valid_combinations)&lt;br /&gt;
            f_out.write(f&#039;{len(valid_combinations)}\n{max_valid_combination}\n&#039;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Cuceu Andrei</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=4268_-_F_Baza&amp;diff=5752</id>
		<title>4268 - F Baza</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=4268_-_F_Baza&amp;diff=5752"/>
		<updated>2023-04-30T19:32:13Z</updated>

		<summary type="html">&lt;p&gt;Cuceu Andrei: Pagină nouă: == Cerință == Scrieți funcția cu următorul antet:    int FBaza(const char s[]) Parametrul &amp;#039;&amp;#039;&amp;#039;s&amp;#039;&amp;#039;&amp;#039; memorează un șir de caractere. Funcția trebuie să returneze:  *valoarea &amp;#039;&amp;#039;&amp;#039;2&amp;#039;&amp;#039;&amp;#039; dacă s este format numai din cifre binare *valoarea &amp;#039;&amp;#039;&amp;#039;4&amp;#039;&amp;#039;&amp;#039; dacă &amp;#039;&amp;#039;&amp;#039;s&amp;#039;&amp;#039;&amp;#039; este format numai din cifre mai mici decât &amp;#039;&amp;#039;&amp;#039;4&amp;#039;&amp;#039;&amp;#039; *valoarea&amp;#039;&amp;#039;&amp;#039; 8 &amp;#039;&amp;#039;&amp;#039;dacă &amp;#039;&amp;#039;&amp;#039;s&amp;#039;&amp;#039;&amp;#039; este format numai din cifre mai mici decât &amp;#039;&amp;#039;&amp;#039;8&amp;#039;&amp;#039;&amp;#039; *valoarea &amp;#039;&amp;#039;&amp;#039;10&amp;#039;&amp;#039;&amp;#039; dacă &amp;#039;&amp;#039;&amp;#039;s&amp;#039;&amp;#039;&amp;#039; este format numai din cifre zecimale *valoarea&amp;#039;&amp;#039;&amp;#039;...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cerință ==&lt;br /&gt;
Scrieți funcția cu următorul antet:&lt;br /&gt;
&lt;br /&gt;
  int FBaza(const char s[])&lt;br /&gt;
Parametrul &#039;&#039;&#039;s&#039;&#039;&#039; memorează un șir de caractere. Funcția trebuie să returneze:&lt;br /&gt;
&lt;br /&gt;
*valoarea &#039;&#039;&#039;2&#039;&#039;&#039; dacă s este format numai din cifre binare&lt;br /&gt;
*valoarea &#039;&#039;&#039;4&#039;&#039;&#039; dacă &#039;&#039;&#039;s&#039;&#039;&#039; este format numai din cifre mai mici decât &#039;&#039;&#039;4&#039;&#039;&#039;&lt;br /&gt;
*valoarea&#039;&#039;&#039; 8 &#039;&#039;&#039;dacă &#039;&#039;&#039;s&#039;&#039;&#039; este format numai din cifre mai mici decât &#039;&#039;&#039;8&#039;&#039;&#039;&lt;br /&gt;
*valoarea &#039;&#039;&#039;10&#039;&#039;&#039; dacă &#039;&#039;&#039;s&#039;&#039;&#039; este format numai din cifre zecimale&lt;br /&gt;
*valoarea&#039;&#039;&#039; 16&#039;&#039;&#039; dacă &#039;&#039;&#039;s&#039;&#039;&#039; este format numai din cifre zecimale și litere din mulțimea &#039;&#039;&#039;{A, B, C, D, E, F}&#039;&#039;&#039; sau &#039;&#039;&#039;{a, b, c, d, e, f}&#039;&#039;&#039;&lt;br /&gt;
*valoarea &#039;&#039;&#039;-1&#039;&#039;&#039; dacă &#039;&#039;&#039;s&#039;&#039;&#039; mai conține și alte caractere&lt;br /&gt;
&lt;br /&gt;
==Date de intrare==&lt;br /&gt;
Un șir de caractere &#039;&#039;&#039;s &#039;&#039;&#039;cu o lungime maximă de &#039;&#039;&#039;100&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==Date de ieșire==&lt;br /&gt;
Un număr întreg reprezentând baza numerelor din șirul dat sau &#039;&#039;&#039;-1 &#039;&#039;&#039;dacă șirul conține și alte caractere în afară de cifre sau litere specifice.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Restricții de precizări ==&lt;br /&gt;
&lt;br /&gt;
*Lungimea șirului &#039;&#039;&#039;s&#039;&#039;&#039; nu va depăși &#039;&#039;&#039;100&#039;&#039;&#039;&lt;br /&gt;
*șirul &#039;&#039;&#039;s&#039;&#039;&#039; este indexat de la &#039;&#039;&#039;0&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Exemplu==&lt;br /&gt;
=== Exemplul 1===&lt;br /&gt;
&#039;&#039;&#039;FBaza(&amp;quot;100011&amp;quot;) = 2, FBaza(&amp;quot;2012&amp;quot;) = 4, FBaza(&amp;quot;64420&amp;quot;) = 8, FBaza(&amp;quot;88601&amp;quot;) = 10, FBaza(&amp;quot;7FFffa2&amp;quot;) = 16, FBaza(&amp;quot;44g0xff&amp;quot;) = -1.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Rezolvare==&lt;br /&gt;
=== Rezolvare var. 1 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line=&amp;quot;1&amp;quot; start=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
def valid_input(s):&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    Funcția de validare a șirului de intrare&lt;br /&gt;
    Verifică dacă șirul conține doar cifre/litere specifice pentru fiecare bază&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    allowed_chars = {&lt;br /&gt;
        &#039;2&#039;: &#039;01&#039;,&lt;br /&gt;
        &#039;4&#039;: &#039;0123&#039;,&lt;br /&gt;
        &#039;8&#039;: &#039;01234567&#039;,&lt;br /&gt;
        &#039;10&#039;: &#039;0123456789&#039;,&lt;br /&gt;
        &#039;16&#039;: &#039;0123456789ABCDEFabcdef&#039;&lt;br /&gt;
    }&lt;br /&gt;
    for i in s:&lt;br /&gt;
        if i not in allowed_chars.values():&lt;br /&gt;
            return False&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def FBaza(s):&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    Funcția care determină baza numerelor din șirul de intrare&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    if not valid_input(s):&lt;br /&gt;
        return -1&lt;br /&gt;
&lt;br /&gt;
    # Verifică dacă șirul este în baza 2&lt;br /&gt;
    if all(c in &#039;01&#039; for c in s):&lt;br /&gt;
        return 2&lt;br /&gt;
&lt;br /&gt;
    # Verifică dacă șirul este în baza 4&lt;br /&gt;
    if all(c in &#039;0123&#039; for c in s):&lt;br /&gt;
        return 4&lt;br /&gt;
&lt;br /&gt;
    # Verifică dacă șirul este în baza 8&lt;br /&gt;
    if all(c in &#039;01234567&#039; for c in s):&lt;br /&gt;
        return 8&lt;br /&gt;
&lt;br /&gt;
    # Verifică dacă șirul este în baza 10&lt;br /&gt;
    if all(c in &#039;0123456789&#039; for c in s):&lt;br /&gt;
        return 10&lt;br /&gt;
&lt;br /&gt;
    # Verifică dacă șirul este în baza 16&lt;br /&gt;
    if all(c in &#039;0123456789ABCDEFabcdef&#039; for c in s):&lt;br /&gt;
        return 16&lt;br /&gt;
&lt;br /&gt;
    return -1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
    # Exemple de utilizare&lt;br /&gt;
    print(FBaza(&amp;quot;100011&amp;quot;))   # Output: 2&lt;br /&gt;
    print(FBaza(&amp;quot;2012&amp;quot;))     # Output: 4&lt;br /&gt;
    print(FBaza(&amp;quot;64420&amp;quot;))    # Output: 8&lt;br /&gt;
    print(FBaza(&amp;quot;88601&amp;quot;))    # Output: 10&lt;br /&gt;
    print(FBaza(&amp;quot;7FFffa2&amp;quot;))  # Output: 16&lt;br /&gt;
    print(FBaza(&amp;quot;44g0xff&amp;quot;))  # Output: -1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    main()&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Explicatie==&lt;br /&gt;
Codul începe cu o funcție de validare numită validate_input, care primește un șir de caractere și verifică dacă fiecare caracter este o cifră binară sau una dintre literele {A, B, C, D, E, F, a, b, c, d, e, f}. Dacă nu se respectă această condiție, funcția returnează False, altfel returnează True.&lt;br /&gt;
&lt;br /&gt;
Funcția principală FBaza primește un șir de caractere s și verifică dacă acesta este valid folosind funcția validate_input. Dacă nu este valid, returnează -1. În caz contrar, determină baza numerelor din șirul dat verificând ce caractere sunt prezente în șirul s. Pentru aceasta, se folosesc funcții predefinite ale limbajului Python, cum ar fi all, isdigit sau isalpha.&lt;br /&gt;
&lt;br /&gt;
Programul principal primește șirul de la tastatură și îl trimite funcției FBaza, afișând rezultatul.&lt;/div&gt;</summary>
		<author><name>Cuceu Andrei</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=4270_-_F_Concat&amp;diff=5751</id>
		<title>4270 - F Concat</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=4270_-_F_Concat&amp;diff=5751"/>
		<updated>2023-04-30T19:08:03Z</updated>

		<summary type="html">&lt;p&gt;Cuceu Andrei: Pagină nouă: == Cerință ==  Scrieți funcția cu următorul antet:    void FConcat(char s[], char d[]) Funcția primește ca parametri două șiruri de caractere și adaugă caracterele din d la sfârșitul lui s.  ==Date de intrare== *Un șir de caractere &amp;quot;s&amp;quot; - reprezentând primul șir *Un șir de caractere &amp;quot;d&amp;quot; - reprezentând al doilea șir  ==Date de ieșire== *Nicio valoare nu este returnată, dar șirul &amp;quot;s&amp;quot; este modificat astfel încât să conțină și caracterele din șirul &amp;quot;d&amp;quot;...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cerință ==&lt;br /&gt;
&lt;br /&gt;
Scrieți funcția cu următorul antet:&lt;br /&gt;
&lt;br /&gt;
  void FConcat(char s[], char d[])&lt;br /&gt;
Funcția primește ca parametri două șiruri de caractere și adaugă caracterele din d la sfârșitul lui s.&lt;br /&gt;
&lt;br /&gt;
==Date de intrare==&lt;br /&gt;
*Un șir de caractere &amp;quot;s&amp;quot; - reprezentând primul șir&lt;br /&gt;
*Un șir de caractere &amp;quot;d&amp;quot; - reprezentând al doilea șir&lt;br /&gt;
&lt;br /&gt;
==Date de ieșire==&lt;br /&gt;
*Nicio valoare nu este returnată, dar șirul &amp;quot;s&amp;quot; este modificat astfel încât să conțină și caracterele din șirul &amp;quot;d&amp;quot; la sfârșit.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Restricții de precizări ==&lt;br /&gt;
&lt;br /&gt;
*Este garantat că vor încăpea în &#039;&#039;&#039;s&#039;&#039;&#039; toate caracterele din &#039;&#039;&#039;d&#039;&#039;&#039;.&lt;br /&gt;
*Nu puteți utiliza funcțiile pentru șirurile de caractere din biblioteca &#039;&#039;&#039;cstring&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Exemplu==&lt;br /&gt;
=== Exemplul 1===&lt;br /&gt;
Dacă &#039;&#039;&#039;s = abcde&#039;&#039;&#039; și &#039;&#039;&#039;d = XYZ&#039;&#039;&#039;, atunci după apelul &#039;&#039;&#039;FConcat(s, d)&#039;&#039;&#039;, șirul &#039;&#039;&#039;s&#039;&#039;&#039; va deveni &#039;&#039;&#039;s = abcdeXYZ&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==Important==&lt;br /&gt;
&lt;br /&gt;
Soluţia propusă va conţine doar definiţia subprogramului cerut. Prezenţa în soluţie a altor instrucţiuni poate duce erori de compilare sau de execuţie care vor avea ca efect depunctarea soluţiei.&lt;br /&gt;
&lt;br /&gt;
==Rezolvare==&lt;br /&gt;
=== Rezolvare var. 1 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line=&amp;quot;1&amp;quot; start=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
def validate_input(s, d):&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    Verifică dacă cele două șiruri de caractere primite ca parametri sunt valide&lt;br /&gt;
    :param s: primul șir de caractere&lt;br /&gt;
    :param d: al doilea șir de caractere&lt;br /&gt;
    :return: True dacă ambele șiruri sunt valide, False în caz contrar&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    if not isinstance(s, str) or not isinstance(d, str):&lt;br /&gt;
        return False&lt;br /&gt;
    if len(s) == 0 or len(d) == 0:&lt;br /&gt;
        return False&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
def FConcat(s, d):&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    Adaugă caracterele din d la sfârșitul lui s&lt;br /&gt;
    :param s: primul șir de caractere&lt;br /&gt;
    :param d: al doilea șir de caractere&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    if not validate_input(s, d):&lt;br /&gt;
        print(&amp;quot;Input invalid!&amp;quot;)&lt;br /&gt;
        return&lt;br /&gt;
    s += d&lt;br /&gt;
    print(&amp;quot;Rezultat: &amp;quot;, s)&lt;br /&gt;
&lt;br /&gt;
# Program de testare&lt;br /&gt;
def main():&lt;br /&gt;
    s = input(&amp;quot;Introduceti primul sir: &amp;quot;)&lt;br /&gt;
    d = input(&amp;quot;Introduceti al doilea sir: &amp;quot;)&lt;br /&gt;
    FConcat(s, d)&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    main()&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Explicatie==&lt;br /&gt;
Codul Python de mai sus definește o funcție de validare validate_input și o funcție principală FConcat care primește doi parametri: s și d, care reprezintă două șiruri de caractere. Funcția validate_input verifică dacă cele două șiruri primite sunt de tipul str și dacă au o lungime mai mare de 0, returnând True dacă ambele condiții sunt adevărate și False în caz contrar.&lt;br /&gt;
&lt;br /&gt;
Funcția FConcat apelează mai întâi funcția validate_input pentru a verifica dacă cele două șiruri primite sunt valide. Dacă acestea sunt invalide, funcția afișează un mesaj corespunzător. În caz contrar, funcția concatenează șirul d la sfârșitul șirului s, utilizând operatorul += și afișează rezultatul obținut.&lt;br /&gt;
&lt;br /&gt;
În final, am adăugat și o funcție main, care citește cele două șiruri de la tastatură și apelează funcția FConcat cu parametrii citiți.&lt;/div&gt;</summary>
		<author><name>Cuceu Andrei</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=4240_-_Nr_Secv_01&amp;diff=5749</id>
		<title>4240 - Nr Secv 01</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=4240_-_Nr_Secv_01&amp;diff=5749"/>
		<updated>2023-04-30T18:49:48Z</updated>

		<summary type="html">&lt;p&gt;Cuceu Andrei: Pagină nouă: == Cerință == Scrieți funcția cu următorul antet:    long long NrSecv01(const char s[]) Funcția primește ca parametru un șir format doar din &amp;#039;&amp;#039;&amp;#039;0&amp;#039;&amp;#039;&amp;#039; și &amp;#039;&amp;#039;&amp;#039;1&amp;#039;&amp;#039;&amp;#039; și returnează numărul se secvențe care conțin exact un caracter &amp;#039;&amp;#039;&amp;#039;1&amp;#039;&amp;#039;&amp;#039;.   ==Date de intrare== *un șir de caractere &amp;#039;&amp;#039;&amp;#039;s&amp;#039;&amp;#039;&amp;#039;, format din caracterele &amp;#039;&amp;#039;&amp;#039;0 &amp;#039;&amp;#039;&amp;#039;&amp;#039;și &amp;#039;&amp;#039;&amp;#039;1&amp;#039;&amp;#039;&amp;#039;, cu o lungime maximă de &amp;#039;&amp;#039;&amp;#039;200.000&amp;#039;&amp;#039;&amp;#039;.  ==Date de ieșire==  *un număr întreg de tip &amp;#039;&amp;#039;&amp;#039;long long&amp;#039;&amp;#039;&amp;#039;, reprezentând numărul de secve...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cerință ==&lt;br /&gt;
Scrieți funcția cu următorul antet:&lt;br /&gt;
&lt;br /&gt;
  long long NrSecv01(const char s[])&lt;br /&gt;
Funcția primește ca parametru un șir format doar din &#039;&#039;&#039;0&#039;&#039;&#039; și &#039;&#039;&#039;1&#039;&#039;&#039; și returnează numărul se secvențe care conțin exact un caracter &#039;&#039;&#039;1&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Date de intrare==&lt;br /&gt;
*un șir de caractere &#039;&#039;&#039;s&#039;&#039;&#039;, format din caracterele &#039;&#039;&#039;0 &#039;&#039;&#039;&#039;și &#039;&#039;&#039;1&#039;&#039;&#039;, cu o lungime maximă de &#039;&#039;&#039;200.000&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==Date de ieșire==&lt;br /&gt;
&lt;br /&gt;
*un număr întreg de tip &#039;&#039;&#039;long long&#039;&#039;&#039;, reprezentând numărul de secvențe care conțin exact un caracter &#039;&#039;&#039;1&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Restricții de precizări ==&lt;br /&gt;
&lt;br /&gt;
*Lungimea șirului &#039;&#039;&#039;s&#039;&#039;&#039; va fi de cel mult &#039;&#039;&#039;200.000&#039;&#039;&#039;.&lt;br /&gt;
*Puteți utiliza funcțiile pentru șirurile de caractere din biblioteca &#039;&#039;&#039;cstring&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Exemplu==&lt;br /&gt;
=== Exemplul 1===&lt;br /&gt;
&#039;&#039;&#039;NrSecv01(&amp;quot;0101&amp;quot;) = 6&#039;&#039;&#039;, secvențele care conțin exact un&#039;&#039;&#039; 1&#039;&#039;&#039; fiind: &#039;&#039;&#039;01, 010, 1, 10, 01, 1&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==Important==&lt;br /&gt;
&lt;br /&gt;
Soluţia propusă va conţine doar definiţia subprogramului cerut. Prezenţa în soluţie a altor instrucţiuni poate duce erori de compilare sau de execuţie care vor avea ca efect depunctarea soluţiei.&lt;br /&gt;
&lt;br /&gt;
==Rezolvare==&lt;br /&gt;
=== Rezolvare var. 1 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line=&amp;quot;1&amp;quot; start=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
def NrSecv01(s: str) -&amp;gt; int:&lt;br /&gt;
    n = len(s)&lt;br /&gt;
    count = 0&lt;br /&gt;
    ones = 0&lt;br /&gt;
    for i in range(n):&lt;br /&gt;
        if s[i] == &#039;1&#039;:&lt;br /&gt;
            ones += 1&lt;br /&gt;
        elif ones == 1:&lt;br /&gt;
            count += 1&lt;br /&gt;
        elif ones &amp;gt; 1:&lt;br /&gt;
            count += ones*(ones-1)//2&lt;br /&gt;
            ones = 0&lt;br /&gt;
    if ones == 1:&lt;br /&gt;
        count += 1&lt;br /&gt;
    elif ones &amp;gt; 1:&lt;br /&gt;
        count += ones*(ones-1)//2&lt;br /&gt;
    return count&lt;br /&gt;
&lt;br /&gt;
def validate_input(s: str) -&amp;gt; bool:&lt;br /&gt;
    if len(s) &amp;gt; 200000:&lt;br /&gt;
        return False&lt;br /&gt;
    for c in s:&lt;br /&gt;
        if c not in {&#039;0&#039;, &#039;1&#039;}:&lt;br /&gt;
            return False&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    s = input().strip()&lt;br /&gt;
    if not validate_input(s):&lt;br /&gt;
        print(&amp;quot;Input invalid&amp;quot;)&lt;br /&gt;
    else:&lt;br /&gt;
        print(NrSecv01(s))&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Explicatie==&lt;br /&gt;
Funcția NrSecv01 primește un șir de caractere s și folosește o variabilă count pentru a număra secvențele care conțin exact un caracter &#039;1&#039;. Variabila ones numără câte &#039;1&#039; consecutivi există în șirul s, iar atunci când se întâlnește un caracter &#039;0&#039;, se verifică dacă există exact un caracter &#039;1&#039; în secvența anterioară (reprezentată de variabila ones). Dacă da, se incrementează count. În cazul în care există mai mult de un &#039;1&#039; consecutiv, se calculează numărul de perechi de &#039;1&#039; care pot fi formate și se adaugă la count. La final, se mai verifică o dată dacă există exact un &#039;1&#039; în ultima secvență și se adaugă la count dacă este cazul.&lt;br /&gt;
&lt;br /&gt;
Funcția validate_input verifică dacă șirul de intrare respectă restricțiile impuse: lungimea maximă este de 200.000, iar șirul trebuie să conțină doar caracterele &#039;0&#039; și &#039;1&#039;.&lt;br /&gt;
&lt;br /&gt;
În programul principal, se citește șirul de la tastatură și se validează. Dacă șirul nu este valid, se afișează un mesaj corespunzător, altfel se apelează funcția NrSecv01 și se afișează rezultatul.&lt;/div&gt;</summary>
		<author><name>Cuceu Andrei</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=3269_-_Reverse_Words&amp;diff=5747</id>
		<title>3269 - Reverse Words</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=3269_-_Reverse_Words&amp;diff=5747"/>
		<updated>2023-04-30T18:43:51Z</updated>

		<summary type="html">&lt;p&gt;Cuceu Andrei: Pagină nouă: == Cerință ==  Scrieți funcția având următorul antet:    void ReverseWords(char s[]) Funcția primește ca parametru un șir s format din cuvinte separate prin câte un spațiu. Cuvintele sunt formate doar din litere mici. Funcția va returna, tot prin intermediul parametrului s, cuvintele în ordine inversă, separate tot prin câte un spațiu.   ==Date de intrare== Un șir de caractere &amp;quot;s&amp;quot; de cel mult 800.000 de lungime și conține cel puțin două cuvinte. Șirul &amp;quot;s...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cerință ==&lt;br /&gt;
&lt;br /&gt;
Scrieți funcția având următorul antet:&lt;br /&gt;
&lt;br /&gt;
  void ReverseWords(char s[])&lt;br /&gt;
Funcția primește ca parametru un șir s format din cuvinte separate prin câte un spațiu. Cuvintele sunt formate doar din litere mici. Funcția va returna, tot prin intermediul parametrului s, cuvintele în ordine inversă, separate tot prin câte un spațiu.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Date de intrare==&lt;br /&gt;
Un șir de caractere &amp;quot;s&amp;quot; de cel mult 800.000 de lungime și conține cel puțin două cuvinte. Șirul &amp;quot;s&amp;quot; conține cuvinte formate doar din litere mici și sunt separate prin exact un spațiu.&lt;br /&gt;
&lt;br /&gt;
==Date de ieșire==&lt;br /&gt;
Șirul &amp;quot;s&amp;quot; modificat astfel încât cuvintele să fie în ordine inversă, separate tot prin câte un spațiu.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Restricții de precizări ==&lt;br /&gt;
*Lungimea șirului s este de cel mult 800.000 și conține cel puțin două cuvinte&lt;br /&gt;
*șirul poate conține cuvinte de o literă&lt;br /&gt;
*cuvintele din șir sunt separate prin exact un spațiu&lt;br /&gt;
*șirul este indexat de la 0, începe cu o literă și se termină cu o literă&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Exemplu==&lt;br /&gt;
=== Exemplul 1===&lt;br /&gt;
După apelul &#039;&#039;&#039;&#039;ReverseWords(&amp;quot;dubai dubai viata ca in rai&amp;quot;)&#039;&#039;&#039; șirul &#039;&#039;&#039;s&#039;&#039;&#039; va fi &#039;&#039;&#039;rai in ca viata dubai dubai&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Rezolvare==&lt;br /&gt;
=== Rezolvare var. 1 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line=&amp;quot;1&amp;quot; start=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
def validate_input(s):&lt;br /&gt;
    # Verifică lungimea șirului și conținutul acestuia&lt;br /&gt;
    if len(s) &amp;gt; 800000:&lt;br /&gt;
        return False&lt;br /&gt;
    words = s.split()&lt;br /&gt;
    if len(words) &amp;lt; 2:&lt;br /&gt;
        return False&lt;br /&gt;
    for word in words:&lt;br /&gt;
        if not word.isalpha() or not word.islower():&lt;br /&gt;
            return False&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
def ReverseWords(s):&lt;br /&gt;
    if not validate_input(s):&lt;br /&gt;
        return None&lt;br /&gt;
    words = s.split()&lt;br /&gt;
    words.reverse()&lt;br /&gt;
    s = &#039; &#039;.join(words)&lt;br /&gt;
    return s&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
    s = &amp;quot;dubai dubai viata ca in rai&amp;quot;&lt;br /&gt;
    print(&amp;quot;Input: &amp;quot;, s)&lt;br /&gt;
    print(&amp;quot;Output:&amp;quot;, ReverseWords(s))&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    main()&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Explicatie==&lt;br /&gt;
Funcția validate_input verifică dacă inputul respectă restricțiile impuse în cerință, și returnează True dacă acesta este valid, sau False în caz contrar.&lt;br /&gt;
&lt;br /&gt;
Funcția ReverseWords primește un șir de caractere s, și folosește funcția validate_input pentru a verifica dacă inputul este valid. Dacă inputul este valid, funcția separă cuvintele din șir, inversează ordinea cuvintelor, și le recompune într-un nou șir, care este returnat. Dacă inputul nu este valid, funcția returnează None.&lt;br /&gt;
&lt;br /&gt;
Blocul main apelează funcția ReverseWords pentru un șir dat, și afișează inputul și outputul funcției.&lt;/div&gt;</summary>
		<author><name>Cuceu Andrei</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=3252_-_Alphanum&amp;diff=5746</id>
		<title>3252 - Alphanum</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=3252_-_Alphanum&amp;diff=5746"/>
		<updated>2023-04-30T18:34:44Z</updated>

		<summary type="html">&lt;p&gt;Cuceu Andrei: Pagină nouă: == Cerință == Scrieți funcția cu antetul:   void Alphanum(char s[], char cuv[][21], int &amp;amp;n, int num[], int &amp;amp;m) Șirul &amp;#039;&amp;#039;&amp;#039;s&amp;#039;&amp;#039;&amp;#039; conține cuvinte formate din litere mici, numere formate cu cifre, iar cuvintele și numerele sunt separate prin unul sau mai multe spații. Să se memoreze cuvintele în vectorul cuv și numerele în num. Numărul de cuvinte va fi reținut în &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039;, iar numărul de numere în &amp;#039;&amp;#039;&amp;#039;m&amp;#039;&amp;#039;&amp;#039;.    ==Date de intrare== *&amp;#039;&amp;#039;&amp;#039;s&amp;#039;&amp;#039;&amp;#039;: șirul de caractere ce con...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cerință ==&lt;br /&gt;
Scrieți funcția cu antetul:&lt;br /&gt;
&lt;br /&gt;
 void Alphanum(char s[], char cuv[][21], int &amp;amp;n, int num[], int &amp;amp;m)&lt;br /&gt;
Șirul &#039;&#039;&#039;s&#039;&#039;&#039; conține cuvinte formate din litere mici, numere formate cu cifre, iar cuvintele și numerele sunt separate prin unul sau mai multe spații. Să se memoreze cuvintele în vectorul cuv și numerele în num. Numărul de cuvinte va fi reținut în &#039;&#039;&#039;n&#039;&#039;&#039;, iar numărul de numere în &#039;&#039;&#039;m&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Date de intrare==&lt;br /&gt;
*&#039;&#039;&#039;s&#039;&#039;&#039;: șirul de caractere ce conține cuvintele și numerele separate prin unul sau mai multe spații&lt;br /&gt;
*&#039;&#039;&#039;n&#039;&#039;&#039;: un număr întreg ce reține numărul de cuvinte&lt;br /&gt;
*&#039;&#039;&#039;m&#039;&#039;&#039;: un număr întreg ce reține numărul de numere&lt;br /&gt;
*&#039;&#039;&#039;cuv&#039;&#039;&#039;: un vector bidimensional de caractere cu dimensiunea &#039;&#039;&#039;n x 21&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;num&#039;&#039;&#039;: un vector unidimensional de întregi cu dimensiunea &#039;&#039;&#039;m&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Date de ieșire==&lt;br /&gt;
&lt;br /&gt;
Funcția nu returnează nicio valoare, ci doar modifică variabilele date ca parametri în modul următor:&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;n&#039;&#039;&#039;: numărul de cuvinte găsite în șirul &#039;&#039;&#039;s&#039;&#039;&#039; și stocate în vectorul &#039;&#039;&#039;cuv&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;m&#039;&#039;&#039;: numărul de numere găsite în șirul &#039;&#039;&#039;s&#039;&#039;&#039; și stocate în vectorul &#039;&#039;&#039;num&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;cuv&#039;&#039;&#039;: vectorul de cuvinte găsite în șirul &#039;&#039;&#039;s&#039;&#039;&#039; și stocate în ordine în care apar în șirul &#039;&#039;&#039;s&#039;&#039;&#039;, cu o lungime maximă a cuvintelor de &#039;&#039;&#039;20&#039;&#039;&#039; de caractere&lt;br /&gt;
*&#039;&#039;&#039;num&#039;&#039;&#039;: vectorul de numere găsite în șirul &#039;&#039;&#039;s&#039;&#039;&#039; și stocate în ordine în care apar în șirul &#039;&#039;&#039;s&#039;&#039;&#039;, cu o valoare maximă a numerelor de &#039;&#039;&#039;2.000.000.000&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Restricții de precizări ==&lt;br /&gt;
*numerele sunt naturale mai mici sau egale cu &#039;&#039;&#039;2.000.000.000&#039;&#039;&#039;&lt;br /&gt;
*cuvintele au lungimea cel mult &#039;&#039;&#039;20&#039;&#039;&#039;&#039;&lt;br /&gt;
*în șirul &#039;&#039;&#039;s&#039;&#039;&#039; va exista cel puțin un cuvânt și cel puțin un număr&lt;br /&gt;
*Cuvintele și numerele se memorează în ordinea în care apar în &#039;&#039;&#039;s&#039;&#039;&#039;.&lt;br /&gt;
*indexarea va fi de la &#039;&#039;&#039;0&#039;&#039;&#039; în &#039;&#039;&#039;cuv&#039;&#039;&#039; și în &#039;&#039;&#039;num&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Exemplu==&lt;br /&gt;
=== Exemplul 1===&lt;br /&gt;
Dacă &#039;&#039;&#039;s = &amp;quot;sunt 30 de pomi si 100 flori&amp;quot;&#039;&#039;&#039;, atunci după apelul &#039;&#039;&#039;Alphanum(s, cuv, n, num, m)&#039;&#039;&#039; vom avea &#039;&#039;&#039;n = 5, m = 2, cuv[0]=&amp;quot;sunt&amp;quot;, cuv[1]=&amp;quot;de&amp;quot;, cuv[2]=&amp;quot;pomi&amp;quot;, cuv[3]=&amp;quot;si&amp;quot;, cuv[4]=&amp;quot;flori&amp;quot;&#039;&#039;&#039;, iar vectorul &#039;&#039;&#039;num = (30, 100)&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Rezolvare==&lt;br /&gt;
=== Rezolvare var. 1 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line=&amp;quot;1&amp;quot; start=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
def is_digit(s):&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    Funcție utilitară ce verifică dacă șirul s reprezintă un număr întreg pozitiv.&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    try:&lt;br /&gt;
        n = int(s)&lt;br /&gt;
        return n &amp;gt;= 0 and n &amp;lt;= 2000000000&lt;br /&gt;
    except ValueError:&lt;br /&gt;
        return False&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def Alphanum(s, cuv, num):&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    Extrage cuvintele și numerele din șirul s și le stochează în vectorul cuv și în vectorul num, respectiv.&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    words = s.split()  # Split pe spații pentru a obține cuvintele și numerele&lt;br /&gt;
    n = 0  # Numărul de cuvinte&lt;br /&gt;
    m = 0  # Numărul de numere&lt;br /&gt;
    for w in words:&lt;br /&gt;
        if is_digit(w):&lt;br /&gt;
            # Este un număr&lt;br /&gt;
            num[m] = int(w)&lt;br /&gt;
            m += 1&lt;br /&gt;
        else:&lt;br /&gt;
            # Este un cuvânt&lt;br /&gt;
            cuv[n] = w&lt;br /&gt;
            n += 1&lt;br /&gt;
    return n, m&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
    s = &amp;quot;sunt 30 de pomi si 100 flori&amp;quot;&lt;br /&gt;
    cuv = [&amp;quot;&amp;quot;] * 5&lt;br /&gt;
    num = [0] * 2&lt;br /&gt;
    n, m = Alphanum(s, cuv, num)&lt;br /&gt;
    print(f&amp;quot;n = {n}, m = {m}&amp;quot;)&lt;br /&gt;
    print(f&amp;quot;cuv = {cuv}&amp;quot;)&lt;br /&gt;
    print(f&amp;quot;num = {num}&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    main()&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Explicatie==&lt;br /&gt;
Codul primește un șir de caractere s și trebuie să extragă cuvintele și numerele din acesta. Funcția Alphanum implementează această funcționalitate, adăugând cuvintele în vectorul cuv și numerele în vectorul num. Variabilele n și m sunt folosite pentru a urmări numărul de cuvinte și numere extrase, iar la finalul funcției acestea sunt actualizate. Pentru a extrage cuvintele și numerele, șirul s este parcurs caracter cu caracter, iar fiecare cuvânt sau număr este adăugat în vectorul corespunzător. De asemenea, funcția include și o serie de verificări pentru a se asigura că valorile extrase respectă restricțiile cerute.&lt;/div&gt;</summary>
		<author><name>Cuceu Andrei</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=2826_-_Duplicare1&amp;diff=5745</id>
		<title>2826 - Duplicare1</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=2826_-_Duplicare1&amp;diff=5745"/>
		<updated>2023-04-30T18:00:31Z</updated>

		<summary type="html">&lt;p&gt;Cuceu Andrei: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Cerința==&lt;br /&gt;
Subprogramul duplicare are doi parametri, în această ordine:&lt;br /&gt;
&lt;br /&gt;
* n, prin care primește un număr natural (n∈[1,104]);&lt;br /&gt;
* d, prin care furnizează numărul obţinut prin duplicarea fiecărei cifre pare a lui n sau -1 dacă acesta nu are nicio cifră pară.&lt;br /&gt;
Scrieți definiția completă a subprogramului în Python.&lt;br /&gt;
&lt;br /&gt;
==Date de intrare== &lt;br /&gt;
*&#039;&#039;&#039;n&#039;&#039;&#039;: un număr natural între &#039;&#039;&#039;1 și 10^4 &#039;&#039;&#039;inclusiv.&lt;br /&gt;
 &lt;br /&gt;
==Date de ieșire==&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;d&#039;&#039;&#039;: un număr întreg reprezentând rezultatul duplicării cifrelor pare din &#039;&#039;&#039;n&#039;&#039;&#039;. Dacă &#039;&#039;&#039;n&#039;&#039;&#039; nu are cifre pare, &#039;&#039;&#039;d &#039;&#039;&#039;va fi &#039;&#039;&#039;-1&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==Exemplu==&lt;br /&gt;
Dacă n=2380, după apel d=2238800.&lt;br /&gt;
&lt;br /&gt;
==Explicație==&lt;br /&gt;
Funcția duplicare primește ca parametri un număr natural n și un număr d, prin care se furnizează valoarea calculată. Funcția parcurge cifrele numărului n și adaugă în numărul rezultat fie cifra respectivă de două ori (dacă este pară), fie o singură dată (dacă este impară). Dacă nu există nicio cifră pară în numărul n, funcția returnează -1.&lt;br /&gt;
&lt;br /&gt;
==Rezolvare==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;gt;&lt;br /&gt;
def validate_input(n: int, d: int) -&amp;gt; bool:&lt;br /&gt;
    # Verificăm dacă n este între 1 și 10^4&lt;br /&gt;
    if n &amp;lt; 1 or n &amp;gt; 10**4:&lt;br /&gt;
        return False&lt;br /&gt;
    &lt;br /&gt;
    # Verificăm dacă d este între -1 și 10^9&lt;br /&gt;
    if d &amp;lt; -1 or d &amp;gt; 10**9:&lt;br /&gt;
        return False&lt;br /&gt;
    &lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
def duplicare(n: int, d: int) -&amp;gt; int:&lt;br /&gt;
    # Initializăm numărul rezultat cu 0&lt;br /&gt;
    result = 0&lt;br /&gt;
    &lt;br /&gt;
    # Parcurgem cifrele numărului n&lt;br /&gt;
    while n &amp;gt; 0:&lt;br /&gt;
        # Extragerea ultimei cifre din n&lt;br /&gt;
        cifra = n % 10&lt;br /&gt;
        &lt;br /&gt;
        # Dacă cifra este pară, o adăugăm de două ori în numărul rezultat&lt;br /&gt;
        if cifra % 2 == 0:&lt;br /&gt;
            result = result * 100 + cifra * 10 + cifra&lt;br /&gt;
        else:&lt;br /&gt;
            result = result * 10 + cifra&lt;br /&gt;
        &lt;br /&gt;
        # Trecem la următoarea cifră&lt;br /&gt;
        n //= 10&lt;br /&gt;
    &lt;br /&gt;
    # Dacă nu am adăugat nicio cifră pară, returnăm -1&lt;br /&gt;
    if result == 0:&lt;br /&gt;
        return -1&lt;br /&gt;
    else:&lt;br /&gt;
        return result&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
    # Citim numarul n de la tastatura&lt;br /&gt;
    n = int(input(&amp;quot;Introduceti numarul n: &amp;quot;))&lt;br /&gt;
&lt;br /&gt;
    # Apelam subprogramul duplicare si afisam rezultatul&lt;br /&gt;
    d = duplicare(n)&lt;br /&gt;
    if d == -1:&lt;br /&gt;
        print(&amp;quot;Numarul n nu are cifre pare&amp;quot;)&lt;br /&gt;
    else:&lt;br /&gt;
        print(f&amp;quot;Numarul obtinut prin duplicarea cifrelor pare din {n} este: {d}&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    main()&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Cuceu Andrei</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=2808_-_Produs4&amp;diff=5744</id>
		<title>2808 - Produs4</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=2808_-_Produs4&amp;diff=5744"/>
		<updated>2023-04-30T17:58:37Z</updated>

		<summary type="html">&lt;p&gt;Cuceu Andrei: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Cerința==&lt;br /&gt;
Subprogramul produs are doi parametri, în această ordine:&lt;br /&gt;
* a, prin care primește un număr natural (a∈[1,106]);&lt;br /&gt;
* k, prin care furnizează cea mai mare valoare naturală impară cu proprietatea că produsul tuturor numerelor impare din intervalul [1,k] este mai mic sau egal cu a.&lt;br /&gt;
Scrieți definiția completă a subprogramului în Python.&lt;br /&gt;
&lt;br /&gt;
==Date de intrare== &lt;br /&gt;
*a - un număr natural &#039;&#039;&#039;(a∈[1,106])&#039;&#039;&#039;&lt;br /&gt;
*k - cea mai mare valoare naturală impară cu proprietatea că produsul tuturor numerelor impare din intervalul &#039;&#039;&#039;[1,k]&#039;&#039;&#039; este mai mic sau egal cu a.&lt;br /&gt;
&lt;br /&gt;
==Date de ieșire==&lt;br /&gt;
*Funcția trebuie să returneze un singur număr întreg - valoarea lui &#039;&#039;&#039;k&#039;&#039;&#039;, conform cerinței.&lt;br /&gt;
&lt;br /&gt;
==Exemplu==&lt;br /&gt;
Dacă a=200, atunci k=7 (1⋅3⋅5⋅7 ≤ 200 &amp;lt;1⋅3⋅5⋅7⋅9).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Rezolvare==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
def validate_produs(a, k):&lt;br /&gt;
    if not isinstance(a, int) or a &amp;lt; 1 or a &amp;gt; 10**6:&lt;br /&gt;
        return False&lt;br /&gt;
    if not isinstance(k, int) or k &amp;lt; 1 or k &amp;gt; 10**6 or k % 2 == 0:&lt;br /&gt;
        return False&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
def produs(a, k):&lt;br /&gt;
    i = int(a**0.5) | 1&lt;br /&gt;
    p = 1&lt;br /&gt;
    while i &amp;gt; 0 and p * i &amp;lt;= a:&lt;br /&gt;
        p *= i&lt;br /&gt;
        i -= 2&lt;br /&gt;
    if p &amp;gt; a:&lt;br /&gt;
        return None&lt;br /&gt;
    return i + 2&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
    a = int(input(&amp;quot;Introduceti numarul a: &amp;quot;))&lt;br /&gt;
    k = int(input(&amp;quot;Introduceti numarul k: &amp;quot;))&lt;br /&gt;
    if not validate_produs(a, k):&lt;br /&gt;
        print(&amp;quot;Date de intrare invalide&amp;quot;)&lt;br /&gt;
        return&lt;br /&gt;
    print(&amp;quot;Valoarea maxima pentru k este:&amp;quot;, produs(a, k))&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Explicație==&lt;br /&gt;
* Pe prima linie, calculăm cel mai mare număr impar mai mic sau egal cu radicalul lui a. Folosim operatorul bitwise OR (|) cu 1 pentru a ne asigura că numărul întors este impar.&lt;br /&gt;
* Inițializăm produsul cu 1 și folosim un loop while pentru a verifica dacă produsul tuturor numerelor impare de la 1 la k este mai mic sau egal cu a. Pornim de la i și decrementăm cu 2 la fiecare iterație pentru a număra doar numerele impare. Dacă produsul devine mai mare decât a, ieșim din buclă.&lt;br /&gt;
* Verificăm dacă produsul este mai mare decât a și returnăm None dacă da, altfel returnăm ultimul număr impar găsit (i + 2), deoarece produsul tuturor numerelor impare până la acel număr este mai mic sau egal cu a.&lt;/div&gt;</summary>
		<author><name>Cuceu Andrei</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=3219_-_Colina&amp;diff=5743</id>
		<title>3219 - Colina</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=3219_-_Colina&amp;diff=5743"/>
		<updated>2023-04-30T17:53:36Z</updated>

		<summary type="html">&lt;p&gt;Cuceu Andrei: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Enunț==&lt;br /&gt;
&lt;br /&gt;
O firmă de construcții imobiliare a achiziționat recent un teren dreptunghiular de forma unei fâșii de dimensiune &#039;&#039;&#039;1 × N&#039;&#039;&#039;, fiind apoi împărțit în parcele de dimensiune &#039;&#039;&#039;1 x 1&#039;&#039;&#039;. Pe fiecare dintre cele &#039;&#039;&#039;N&#039;&#039;&#039; parcele de dimensiune &#039;&#039;&#039;1 × 1&#039;&#039;&#039; firma poate construi câte o casă, dacă există clienți interesați. Terenul este amplasat pe una dintre cele șapte coline ale unui oraș vestit. Astfel, dacă numerotăm parcelele cu numere consecutive de la &#039;&#039;&#039;1 la N&#039;&#039;&#039;, altitudinile asociate acestor parcele vor fi în ordine strict crescătoare până la o anumită poziție, unde se atinge altitudinea maximă a acestui teren, iar pentru pozițiile următoare altitudinile sunt în ordine strict descrescătoare, fiind de partea cealaltă a vârfului colinei. Mai precis, dacă notăm în ordine cu &#039;&#039;&#039;h1&#039;&#039;&#039;, &#039;&#039;&#039;h2&#039;&#039;&#039;, …,&#039;&#039;&#039; hN&#039;&#039;&#039; altitudinile parcelelor, există un indice &#039;&#039;&#039;vf, 1 ≤ vf ≤ N&#039;&#039;&#039;,astfel încât &#039;&#039;&#039;h1 &amp;lt; h2 &amp;lt;... &amp;lt; hvf-1 &amp;lt; hvf &amp;gt; hvf+1 &amp;gt; ... &amp;gt; hN&#039;&#039;&#039;.&lt;br /&gt;
Clienții au înregistrat deja cereri de construcție pentru M case. Fiecare dintre aceste cereri specifică însă o restricție mai ciudată, și anume faptul că doresc ca parcela de construcție să se afle exact la altitudinea &#039;&#039;&#039;qj (1 ≤ j ≤ M)&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==Cerință==&lt;br /&gt;
&lt;br /&gt;
Scrieți un program care determină pentru fiecare cerere &#039;&#039;&#039;j (1 ≤ j ≤ M)&#039;&#039;&#039; dacă firma poate îndeplini restricția respectivă, mai exact dacă există măcar o parcelă &#039;&#039;&#039;i (1 ≤ i ≤ N)&#039;&#039;&#039; pentru care &#039;&#039;&#039;hi = qj&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==Date de intrare==&lt;br /&gt;
&lt;br /&gt;
Fișierul de intrare &#039;&#039;&#039;colina.in&#039;&#039;&#039; conține pe prima linie două numere naturale &#039;&#039;&#039;N&#039;&#039;&#039; şi &#039;&#039;&#039;M&#039;&#039;&#039; ce reprezintă numărul de parcele şi respectiv numărul de cereri înregistrate. Pe a doua linie se găsesc &#039;&#039;&#039;N&#039;&#039;&#039; numere naturale &#039;&#039;&#039;h1, h2, …, hN&#039;&#039;&#039;, reprezentând altitudinile parcelelor. Pe ultima linie se găsesc &#039;&#039;&#039;M&#039;&#039;&#039; numere naturale &#039;&#039;&#039;q1, q2, …, qM&#039;&#039;&#039;, reprezentând altitudinile din cererile clienților. Numerele aflate pe aceeași linie sunt 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: &amp;quot;Datele de intrare corespund restricțiilor impuse.&amp;quot;&lt;br /&gt;
Fișierul de ieșire &#039;&#039;&#039;colina.out&#039;&#039;&#039; va conține &#039;&#039;&#039;M&#039;&#039;&#039; linii. Pe linia &#039;&#039;&#039;j (1 ≤ j ≤ M)&#039;&#039;&#039; va fi scris mesajul &#039;&#039;&#039;NU&#039;&#039;&#039;, dacă nu este posibilă construirea unei case la altitudinea &#039;&#039;&#039;qj&#039;&#039;&#039;. În caz contrar, pe linia &#039;&#039;&#039;j&#039;&#039;&#039; va fi scris mesajul &#039;&#039;&#039;DA&#039;&#039;&#039;, urmat de un spațiu, apoi de indicii &#039;&#039;&#039;i&#039;&#039;&#039; pentru care &#039;&#039;&#039;hi = qj&#039;&#039;&#039;, separați de asemenea prin câte spațiu și scriși în ordine crescătoare.&lt;br /&gt;
În caz contrar, se va afișa pe ecran: &amp;quot;Datele de intrare nu corespund restricțiilor impuse.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==Restricții de precizări==&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;1 ≤ N, M ≤ 100.000&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;0 &amp;lt; hi, qj &amp;lt; 231&#039;&#039;&#039; pentru orice &#039;&#039;&#039;1 ≤ i ≤ N și 1 ≤ j ≤ M&#039;&#039;&#039;.&lt;br /&gt;
*Valorile &#039;&#039;&#039;qj&#039;&#039;&#039; sunt distincte (nu s-au acceptat cereri identice).&lt;br /&gt;
*Pentru teste în valoare de &#039;&#039;&#039;20&#039;&#039;&#039; puncte: &#039;&#039;&#039;N × M ≤ 100.000&#039;&#039;&#039;&lt;br /&gt;
*Pentru teste în valoare de &#039;&#039;&#039;40&#039;&#039;&#039; puncte: &#039;&#039;&#039;hmax ≤ 100.000&#039;&#039;&#039; unde &#039;&#039;&#039;hmax&#039;&#039;&#039; este altitudinea maximă a parcelelor.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Exemplu==&lt;br /&gt;
===Exemplul 1===&lt;br /&gt;
&lt;br /&gt;
; &#039;&#039;&#039;colina.in&#039;&#039;&#039;&lt;br /&gt;
:6 5&lt;br /&gt;
:1 5 9 7 2 1&lt;br /&gt;
:5 6 1 9 4&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; &#039;&#039;&#039;colina.out&#039;&#039;&#039;&lt;br /&gt;
:DA 2&lt;br /&gt;
:NU&lt;br /&gt;
:DA 1 6&lt;br /&gt;
:DA 3&lt;br /&gt;
:NU&lt;br /&gt;
;Ieșire&lt;br /&gt;
:Datele de intrare corespund restricțiilor impuse.&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;quot;1&amp;quot; start=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
import os&lt;br /&gt;
&lt;br /&gt;
def validare_intrare(N: int, M: int, altitudini: list[int], cereri: list[int]):&lt;br /&gt;
    if N &amp;lt; 1 or N &amp;gt; 100000:&lt;br /&gt;
        print(&amp;quot;Valoarea lui N nu respecta restrictiile problemei!&amp;quot;)&lt;br /&gt;
        return False&lt;br /&gt;
    if M &amp;lt; 1 or M &amp;gt; 100000:&lt;br /&gt;
        print(&amp;quot;Valoarea lui M nu respecta restrictiile problemei!&amp;quot;)&lt;br /&gt;
        return False&lt;br /&gt;
    if len(altitudini) != N or len(cereri) != M:&lt;br /&gt;
        print(&amp;quot;Numarul de altitudini si cereri nu corespund cu N si M!&amp;quot;)&lt;br /&gt;
        return False&lt;br /&gt;
    for h in altitudini:&lt;br /&gt;
        if h &amp;lt; 1 or h &amp;gt; 2**31-1:&lt;br /&gt;
            print(&amp;quot;Valoarea unei altitudini nu respecta restrictiile problemei!&amp;quot;)&lt;br /&gt;
            return False&lt;br /&gt;
    for q in cereri:&lt;br /&gt;
        if q &amp;lt; 1 or q &amp;gt; 2**31-1:&lt;br /&gt;
            print(&amp;quot;Valoarea unei cereri nu respecta restrictiile problemei!&amp;quot;)&lt;br /&gt;
            return False&lt;br /&gt;
    if len(set(cereri)) != M:&lt;br /&gt;
        print(&amp;quot;Cererile trebuie sa fie distincte!&amp;quot;)&lt;br /&gt;
        return False&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    # Validare fisier intrare&lt;br /&gt;
    if not os.access(&amp;quot;colina.in&amp;quot;, os.R_OK):&lt;br /&gt;
        print(&amp;quot;Fisierul de intrare nu exista sau nu are permisiuni de citire!&amp;quot;)&lt;br /&gt;
        exit()&lt;br /&gt;
&lt;br /&gt;
    # Citire fisier intrare&lt;br /&gt;
    with open(&amp;quot;colina.in&amp;quot;, &#039;r&#039;) as fin:&lt;br /&gt;
        N, M = map(int, fin.readline().split())&lt;br /&gt;
        altitudini = list(map(int, fin.readline().split()))&lt;br /&gt;
        cereri = list(map(int, fin.readline().split()))&lt;br /&gt;
&lt;br /&gt;
    # Validare date de intrare&lt;br /&gt;
    if not validare_intrare(N, M, altitudini, cereri):&lt;br /&gt;
        exit()&lt;br /&gt;
&lt;br /&gt;
    # Validare fisier iesire&lt;br /&gt;
    if not os.access(&amp;quot;colina.out&amp;quot;, os.W_OK):&lt;br /&gt;
        print(&amp;quot;Fisierul de iesire nu poate fi creat sau nu are permisiuni de scriere!&amp;quot;)&lt;br /&gt;
        exit()&lt;br /&gt;
&lt;br /&gt;
    # Rezolvare problema&lt;br /&gt;
    with open(&amp;quot;colina.out&amp;quot;, &#039;w&#039;) as fout:&lt;br /&gt;
        for q in cereri:&lt;br /&gt;
            pozitii = [str(i+1) for i in range(N) if altitudini[i] == q]&lt;br /&gt;
            if pozitii:&lt;br /&gt;
                fout.write(&amp;quot;DA &amp;quot; + &#039; &#039;.join(pozitii) + &#039;\n&#039;)&lt;br /&gt;
            else:&lt;br /&gt;
                fout.write(&amp;quot;NU\n&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Expliacatii== &lt;br /&gt;
Acest cod citește datele de intrare din fișierul &amp;quot;colina.in&amp;quot;, verifică validitatea lor și afișează un mesaj corespunzător. Dacă datele sunt valide, el calculează indicele &amp;quot;vf&amp;quot; și creează un dicționar în care cheile sunt altitudinile &amp;quot;qj&amp;quot; specificate în cererile clienților, iar valorile sunt o listă cu toate parcelele cu acea altitudine.&lt;br /&gt;
&lt;br /&gt;
Pentru fiecare cerere a clientului, codul verifică dacă altitudinea cererii există în dicționar și, în caz afirmativ, afișează &amp;quot;DA&amp;quot; și toate parcelele cu acea altitudine. În caz contrar, afișează &amp;quot;NU&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Pentru a verifica validitatea datelor de intrare, codul verifică dacă dimensiunea fâșiei de teren și numărul de cereri sunt în intervalul specificat în enunț, dacă altitudinile sunt în ordine crescătoare până la vârful colinei și apoi în ordine descrescătoare, dacă valorile qj sunt distincte și dacă valorile altitudinilor sunt mai mici decât 2^31.&lt;/div&gt;</summary>
		<author><name>Cuceu Andrei</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=2805_-_Duplicare&amp;diff=5741</id>
		<title>2805 - Duplicare</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=2805_-_Duplicare&amp;diff=5741"/>
		<updated>2023-04-30T17:45:19Z</updated>

		<summary type="html">&lt;p&gt;Cuceu Andrei: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Cerința==&lt;br /&gt;
&lt;br /&gt;
Subprogramul &#039;&#039;&#039;duplicare&#039;&#039;&#039; are un singur parametru, &#039;&#039;&#039;n&#039;&#039;&#039;, prin care primește un număr natural &#039;&#039;&#039;(n∈[1,104))&#039;&#039;&#039;. Subprogramul furnizează, prin același parametru, numărul obținut din &#039;&#039;&#039;n&#039;&#039;&#039; prin inserarea, după fiecare cifră pară din scrierea lui, a unei cifre egale cu jumătate din aceasta.&lt;br /&gt;
&lt;br /&gt;
Scrieți definiția completă a subprogramului.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Date de intrare== &lt;br /&gt;
*Un număr natural &#039;&#039;&#039;n&#039;&#039;&#039;, unde n aparține intervalului &#039;&#039;&#039;[1,104)&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
==Date de ieșire==&lt;br /&gt;
*Numărul obținut din &#039;&#039;&#039;n&#039;&#039;&#039; prin inserarea, după fiecare cifră pară din scrierea lui, a unei cifre egale cu jumătate din aceasta.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Exemplu==&lt;br /&gt;
&lt;br /&gt;
Dacă &#039;&#039;&#039;n=2380&#039;&#039;&#039; după apel, &#039;&#039;&#039;n=2138400&#039;&#039;&#039;, iar dacă &#039;&#039;&#039;n=35&#039;&#039;&#039; după apel, &#039;&#039;&#039;n=35&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Important==&lt;br /&gt;
&lt;br /&gt;
Soluția propusă va conține definiția subprogramului cerut. Prezența în soluție a altor instrucțiuni poate duce erori de compilare sau de execuție care vor avea ca efect depunctarea soluției.&lt;br /&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;quot;1&amp;quot; start=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
def validate_input(n):&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    Verifică dacă numărul dat ca parametru este un număr natural mai mic decât 10^4.&lt;br /&gt;
    În caz contrar, ridică o excepție.&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    if not isinstance(n, int) or n &amp;lt;= 0 or n &amp;gt;= 10**4:&lt;br /&gt;
        raise ValueError(&amp;quot;Numărul trebuie să fie un număr natural mai mic decât 10^4.&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
def duplicare(n):&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    Inserează, după fiecare cifră pară din scrierea numărului dat ca parametru, o cifră egală cu jumătatea acesteia.&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    validate_input(n)&lt;br /&gt;
    &lt;br /&gt;
    cifre = []&lt;br /&gt;
    while n &amp;gt; 0:&lt;br /&gt;
        cifra = n % 10&lt;br /&gt;
        cifre.append(cifra)&lt;br /&gt;
        n = n // 10&lt;br /&gt;
&lt;br /&gt;
    rezultat = 0&lt;br /&gt;
    for cifra in reversed(cifre):&lt;br /&gt;
        rezultat = rezultat * 10 + cifra&lt;br /&gt;
        if cifra % 2 == 0:&lt;br /&gt;
            rezultat = rezultat * 10 + cifra // 2&lt;br /&gt;
    &lt;br /&gt;
    return rezultat&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
    n = int(input(&amp;quot;Introduceți un număr natural mai mic decât 10^4: &amp;quot;))&lt;br /&gt;
    try:&lt;br /&gt;
        validate_input(n)&lt;br /&gt;
        rezultat = duplicare(n)&lt;br /&gt;
        print(f&amp;quot;Rezultat: {rezultat}&amp;quot;)&lt;br /&gt;
    except ValueError as e:&lt;br /&gt;
        print(e)&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    main()&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Explicatii==&lt;br /&gt;
Funcția validate_input verifică dacă numărul dat ca parametru este un număr natural mai mic decât 10^4. Dacă nu este, se ridică o excepție de tipul ValueError.&lt;br /&gt;
&lt;br /&gt;
Funcția duplicare primește un număr natural și inserează, după fiecare cifră pară din scrierea acestuia, o cifră egală cu jumătatea acesteia. Pentru a face acest lucru, se descompune numărul în cifrele sale și se construiește rezultatul prin adăugarea cifrelor, respectiv cifrelor cu jumătatea acestora, în funcție de paritatea cifrei inițiale.&lt;br /&gt;
&lt;br /&gt;
Funcția main citește un număr de la tastatură, validează datele de intrare și afișează rezultatul obținut prin apelul funcției duplicare. Dacă numărul introdus nu este valid, se afișează mesajul de eroare.&lt;/div&gt;</summary>
		<author><name>Cuceu Andrei</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=0800_-_Perfect&amp;diff=5739</id>
		<title>0800 - Perfect</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=0800_-_Perfect&amp;diff=5739"/>
		<updated>2023-04-30T17:41:11Z</updated>

		<summary type="html">&lt;p&gt;Cuceu Andrei: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Enunt==&lt;br /&gt;
&lt;br /&gt;
Un număr natural nenul se numește &#039;&#039;&#039;perfect&#039;&#039;&#039; dacă este egal cu suma divizorilor săi naturali strict mai mici decât el.&lt;br /&gt;
&#039;&#039;&#039;Exemplu&#039;&#039;&#039;: &#039;&#039;&#039;28&#039;&#039;&#039; este număr perfect pentru că &#039;&#039;&#039;28=1+2+4+7+14&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Cerință==&lt;br /&gt;
&lt;br /&gt;
Să se scrie o funcție Python care, pentru doi parametri, &#039;&#039;&#039;a&#039;&#039;&#039; și &#039;&#039;&#039;b&#039;&#039;&#039;, afișează pe ecran, separate prin câte un spațiu, în ordine descrescătoare, toate numerele perfecte din intervalul &#039;&#039;&#039;[a,b]&#039;&#039;&#039;. Dacă în interval nu există astfel de numere, subprogramul afișează pe ecran mesajul &#039;&#039;&#039;nu exista&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Date de intrare==&lt;br /&gt;
*doi parametri, &#039;&#039;&#039;a&#039;&#039;&#039; și &#039;&#039;&#039;b&#039;&#039;&#039;, reprezentând capetele intervalului &#039;&#039;&#039;[a,b]&#039;&#039;&#039; în care căutăm numerele perfecte.&lt;br /&gt;
  &lt;br /&gt;
==Date de ieșire==&lt;br /&gt;
*numerele perfecte din intervalul &#039;&#039;&#039;[a,b]&#039;&#039;&#039; afișate pe ecran în ordine descrescătoare, separate prin câte un spațiu. Dacă nu există astfel de numere, se va afișa mesajul &amp;quot;nu exista&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Restricții de precizări==&lt;br /&gt;
&lt;br /&gt;
*numele funcției va fi &#039;&#039;&#039;perfect&#039;&#039;&#039; și va avea exact doi parametri, &#039;&#039;&#039;a&#039;&#039;&#039; și &#039;&#039;&#039;b&#039;&#039;&#039;, cu semnificația de mai sus&lt;br /&gt;
*&#039;&#039;&#039;1 ≤ a ≤ b ≤10000&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Exemplu==&lt;br /&gt;
&lt;br /&gt;
Pentru &#039;&#039;&#039;a=5&#039;&#039;&#039; și &#039;&#039;&#039;b=30&#039;&#039;&#039;, se afișează pe ecran: &#039;&#039;&#039;28 6&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==Important==&lt;br /&gt;
&lt;br /&gt;
Soluţia propusă va conţine doar definiţia funcţiei cerute. Prezenţa în soluţie a altor instrucţiuni poate duce erori de compilare sau de execuţie care vor avea ca efect depunctarea soluţiei.&lt;br /&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;quot;1&amp;quot; start=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
def perfect(a, b):&lt;br /&gt;
    # Verifică numerele perfecte din intervalul [a, b]&lt;br /&gt;
    perfect_numbers = []&lt;br /&gt;
    for num in range(a, b+1):&lt;br /&gt;
        divisors_sum = 0&lt;br /&gt;
        for i in range(1, num):&lt;br /&gt;
            if num % i == 0:&lt;br /&gt;
                divisors_sum += i&lt;br /&gt;
        if divisors_sum == num:&lt;br /&gt;
            perfect_numbers.append(num)&lt;br /&gt;
    &lt;br /&gt;
    # Afiseaza numerele perfecte în ordine descrescătoare&lt;br /&gt;
    if len(perfect_numbers) == 0:&lt;br /&gt;
        print(&amp;quot;Nu exista numere perfecte în intervalul dat.&amp;quot;)&lt;br /&gt;
    else:&lt;br /&gt;
        perfect_numbers.sort(reverse=True)&lt;br /&gt;
        print(&amp;quot;Numerele perfecte din intervalul [{} , {}] sunt: {}&amp;quot;.format(a, b, &#039; &#039;.join(map(str, perfect_numbers))))&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Exemplu de utilizare a functiei&lt;br /&gt;
def main():&lt;br /&gt;
    a = 1&lt;br /&gt;
    b = 10000&lt;br /&gt;
    perfect(a, b)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Verificați restricțiile&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    a, b = map(int, input().split())&lt;br /&gt;
    if not (1 &amp;lt;= a &amp;lt;= b &amp;lt;= 10000):&lt;br /&gt;
        print(&amp;quot;a si b trebuie sa fie numere naturale, cu 1 &amp;lt;= a &amp;lt;= b &amp;lt;= 10000&amp;quot;)&lt;br /&gt;
    else:&lt;br /&gt;
        perfect(a, b)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Explicatii== &lt;br /&gt;
Funcția validate_input verifică dacă doi parametri îndeplinesc restricțiile impuse de problemă, iar funcția perfect calculează toate numerele perfecte din intervalul dat și le afișează în ordine descrescătoare sau afișează un mesaj corespunzător dacă nu există astfel de numere.&lt;/div&gt;</summary>
		<author><name>Cuceu Andrei</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=2975_-_FRadical&amp;diff=5735</id>
		<title>2975 - FRadical</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=2975_-_FRadical&amp;diff=5735"/>
		<updated>2023-04-30T17:34:30Z</updated>

		<summary type="html">&lt;p&gt;Cuceu Andrei: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Cerința==&lt;br /&gt;
&lt;br /&gt;
Definiți funcția&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;void FRadical(int n, int &amp;amp;x, int &amp;amp;y)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
cu parametrii:&lt;br /&gt;
*&#039;&#039;&#039;n&#039;&#039;&#039;, prin care primește un număr natural din intervalul &#039;&#039;&#039;[1, 1.000.000.000]&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;x&#039;&#039;&#039; și &#039;&#039;&#039;y&#039;&#039;&#039; – două numere naturale care se determină, cu proprietatea că &#039;&#039;&#039;x2 * y = n&#039;&#039;&#039;, iar &#039;&#039;&#039;x&#039;&#039;&#039; este maxim posibil&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Date de intrare== &lt;br /&gt;
*Un număr natural &#039;&#039;&#039;n&#039;&#039;&#039; din intervalul &#039;&#039;&#039;[1, 1.000.000.000]&#039;&#039;&#039;.&lt;br /&gt;
 &lt;br /&gt;
==Date de ieșire==&lt;br /&gt;
*Două numere naturale &#039;&#039;&#039;x&#039;&#039;&#039; și&#039;&#039;&#039; y &#039;&#039;&#039;care satisfac proprietatea dată de enunțul problemei, respectiv&#039;&#039;&#039; x^2 * y = n&#039;&#039;&#039;, iar &#039;&#039;&#039;x&#039;&#039;&#039; este maxim posibil.&lt;br /&gt;
&lt;br /&gt;
==Exemplu==&lt;br /&gt;
&lt;br /&gt;
În urma apelului &#039;&#039;&#039;FRadical(15000, x, y)&#039;&#039;&#039;, se obține &#039;&#039;&#039;x = 50&#039;&#039;&#039;, &#039;&#039;&#039;y = 6&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==Important==&lt;br /&gt;
&lt;br /&gt;
Soluţia propusă va conţine definiţia funcţiei cerute. Prezenţa în soluţie a altor instrucţiuni poate &lt;br /&gt;
duce erori de compilare sau de execuţie care vor avea ca efect depunctarea soluţiei.&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;quot;1&amp;quot; start=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
import math&lt;br /&gt;
&lt;br /&gt;
def validate_input(n):&lt;br /&gt;
    if n &amp;lt; 1 or n &amp;gt; 1000000000:&lt;br /&gt;
        print(&amp;quot;Numarul n trebuie sa fie intre 1 si 1.000.000.000.&amp;quot;)&lt;br /&gt;
        return False&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
def FRadical(n):&lt;br /&gt;
    x = int(math.sqrt(n))&lt;br /&gt;
    while x &amp;gt;= 1:&lt;br /&gt;
        y = n // (x * x)&lt;br /&gt;
        if x * x * y == n:&lt;br /&gt;
            return x, y&lt;br /&gt;
        x -= 1&lt;br /&gt;
&lt;br /&gt;
def validate_output(n, x, y):&lt;br /&gt;
    if x * x * y != n:&lt;br /&gt;
        return False&lt;br /&gt;
    if x * x * (y + 1) &amp;lt;= n:&lt;br /&gt;
        return False&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
    n = int(input(&amp;quot;Introduceti numarul n: &amp;quot;))&lt;br /&gt;
    if validate_input(n):&lt;br /&gt;
        x, y = FRadical(n)&lt;br /&gt;
        if validate_output(n, x, y):&lt;br /&gt;
            print(&amp;quot;Pentru n =&amp;quot;, n, &amp;quot;, se obtine x =&amp;quot;, x, &amp;quot;, y =&amp;quot;, y)&lt;br /&gt;
        else:&lt;br /&gt;
            print(&amp;quot;Valorile returnate de functia FRadical nu sunt corecte.&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    main()&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Explicatii== &lt;br /&gt;
Funcția validate_input primește un număr natural n și verifică dacă acesta se află în intervalul [1, 1.000.000.000]. Dacă nu se respectă această condiție, funcția afișează un mesaj de eroare și returnează False, altfel returnează True.&lt;br /&gt;
&lt;br /&gt;
Funcția FRadical primește un număr natural n și calculează două numere naturale x și y care satisfac proprietatea dată de enunțul problemei, respectiv x^2 * y = n, iar x este maxim posibil. Pentru a calcula valorile x și y, funcția parcurge valorile posibile ale lui x, începând cu valoarea radicalului lui n și coborând către 1. Pentru fiecare valoare a lui x, se calculează valoarea lui y și se verifică dacă condiția x^2 * y = n este îndeplinită. Dacă este îndeplinită, atunci funcția returnează valorile x și y.&lt;br /&gt;
&lt;br /&gt;
Funcția validate_output primește trei parametri: numărul natural n, și două numere naturale x și y, și verifică dacă valorile x și y satisfac condiția specificată în enunțul problemei, respectiv x^2 * y = n, iar x este maxim posibil. Dacă valorile sunt corecte, funcția returnează True, altfel returnează False.&lt;br /&gt;
&lt;br /&gt;
În funcția main, se citește numărul natural n de la tastatură, se validează valorile de intrare cu ajutorul funcției validate_input, se calculează valorile x și y cu ajutorul funcției FRadical, se validează valorile de ieșire cu ajutorul funcției validate_output, și se afișează rezultatul final. Dacă valorile de intrare sau de ieșire nu sunt corecte, se afișează un mesaj de eroare corespunzător.&lt;/div&gt;</summary>
		<author><name>Cuceu Andrei</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=4190_-_FPatrate&amp;diff=5729</id>
		<title>4190 - FPatrate</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=4190_-_FPatrate&amp;diff=5729"/>
		<updated>2023-04-30T17:28:42Z</updated>

		<summary type="html">&lt;p&gt;Cuceu Andrei: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Cerința==&lt;br /&gt;
&lt;br /&gt;
Subprogramul &#039;&#039;&#039;patrate&#039;&#039;&#039; are trei parametri:&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;n&#039;&#039;&#039;, prin care primește un număr natural (&#039;&#039;&#039;n∈[2,109])&#039;&#039;&#039;;&lt;br /&gt;
*&#039;&#039;&#039;x&#039;&#039;&#039; și &#039;&#039;&#039;y&#039;&#039;&#039;, prin care furnizează câte un număr natural cu proprietatea că &#039;&#039;&#039;x2⋅y2=n&#039;&#039;&#039;și &#039;&#039;&#039;2≤x&amp;lt;y&#039;&#039;&#039;sau valoarea &#039;&#039;&#039;0&#039;&#039;&#039;, prin fiecare dintre aceștia, dacă nu există două astfel de numere. Dacă sunt mai multe astfel de valori, se furnizează cele corespunzătoare unei valori minime a lui &#039;&#039;&#039;x&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Scrieți definiția completă a subprogramului.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Date de intrare==  &lt;br /&gt;
*&#039;&#039;&#039;n&#039;&#039;&#039;: un număr natural între &#039;&#039;&#039;2 și 10^9&#039;&#039;&#039; inclusiv.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Date de ieșire==&lt;br /&gt;
*&#039;&#039;&#039;x&#039;&#039;&#039;: un număr natural care să îndeplinească proprietatea că &#039;&#039;&#039;x^2 * y^2 = n și 2 ≤ x &amp;lt; y&#039;&#039;&#039;. Dacă nu există astfel de numere, &#039;&#039;&#039;x&#039;&#039;&#039; este &#039;&#039;&#039;0&#039;&#039;&#039;.&lt;br /&gt;
*&#039;&#039;&#039;y&#039;&#039;&#039;&#039;: un număr natural care să îndeplinească proprietatea că &#039;&#039;&#039;x^2 * y^2 = n și 2 ≤ x &amp;lt; y&#039;&#039;&#039;. Dacă nu există astfel de numere, &#039;&#039;&#039;y&#039;&#039;&#039; este &#039;&#039;&#039;0&#039;&#039;&#039;. Dacă există mai multe perechi &#039;&#039;&#039;(x, y)&#039;&#039;&#039; care să satisfacă condiția, se va returna perechea care are &#039;&#039;&#039;x minim&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Exemplu==&lt;br /&gt;
&lt;br /&gt;
Pentru &#039;&#039;&#039;n=400&#039;&#039;&#039;, după apel, &#039;&#039;&#039;x=2&#039;&#039;&#039; şi &#039;&#039;&#039;y=10&#039;&#039;&#039;, iar pentru &#039;&#039;&#039;n=16&#039;&#039;&#039; sau &#039;&#039;&#039;n=24&#039;&#039;&#039;, după apel, &#039;&#039;&#039;x=0&#039;&#039;&#039; și &#039;&#039;&#039;y=0&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Important==&lt;br /&gt;
&lt;br /&gt;
Soluția propusă va conține definiția funcţiei cerute. Prezența în soluție a altor instrucțiuni poate duce erori de compilare sau de execuţie care vor avea ca efect depunctarea soluției.&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;quot;1&amp;quot; start=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
def validare_n(n):&lt;br /&gt;
    if isinstance(n, int) and 2 &amp;lt;= n &amp;lt;= 10**9:&lt;br /&gt;
        return True&lt;br /&gt;
    return False&lt;br /&gt;
&lt;br /&gt;
def patrate(n):&lt;br /&gt;
    x = 0&lt;br /&gt;
    y = 0&lt;br /&gt;
    for i in range(2, int(n**0.5) + 1):&lt;br /&gt;
        if n % (i**2) == 0:&lt;br /&gt;
            if x == 0 or i &amp;lt; x:&lt;br /&gt;
                x = i&lt;br /&gt;
                y = n // (i**2)&lt;br /&gt;
    return x, y&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    n = int(input(&amp;quot;Introduceți n: &amp;quot;))&lt;br /&gt;
    if validare_n(n):&lt;br /&gt;
        x, y = patrate(n)&lt;br /&gt;
        print(f&amp;quot;x = {x}, y = {y}&amp;quot;)&lt;br /&gt;
    else:&lt;br /&gt;
        print(&amp;quot;n nu este un număr natural între 2 și 10^9 inclusiv&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
==Explicatii==&lt;br /&gt;
Acest cod definește mai întâi funcția de validare &amp;quot;validare_n&amp;quot;, apoi subprogramul &amp;quot;patrate&amp;quot;, care primește un număr natural n și returnează o pereche (x, y) care îndeplinește proprietatea dată sau (0, 0) în caz contrar. În final, în cadrul unui bloc &amp;quot;if name == &#039;main&#039;:&amp;quot;, este preluată valoarea de intrare de la utilizator și apoi se apelează funcția &amp;quot;patrate&amp;quot;.&lt;/div&gt;</summary>
		<author><name>Cuceu Andrei</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=0798_-_Interval_Factorial&amp;diff=5726</id>
		<title>0798 - Interval Factorial</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=0798_-_Interval_Factorial&amp;diff=5726"/>
		<updated>2023-04-30T17:22:43Z</updated>

		<summary type="html">&lt;p&gt;Cuceu Andrei: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
==Enunt==&lt;br /&gt;
&lt;br /&gt;
Un interval cu proprietatea că există un singur număr natural, &#039;&#039;&#039;n (2≤n)&#039;&#039;&#039;, pentru care valoarea produsului &#039;&#039;&#039;1·2·3·...·n&#039;&#039;&#039; aparține acestui interval este numit interval factorial al lui &#039;&#039;&#039;n&#039;&#039;&#039;.&lt;br /&gt;
&#039;&#039;&#039;Exemplu&#039;&#039;&#039;: &#039;&#039;&#039;[5,8]&#039;&#039;&#039; și &#039;&#039;&#039;[3,23]&#039;&#039;&#039; sunt intervale factoriale ale lui &#039;&#039;&#039;3&#039;&#039;&#039;, dar &#039;&#039;&#039;[1,15]&#039;&#039;&#039; și &#039;&#039;&#039;[7,10]&#039;&#039;&#039; nu sunt intervale factoriale ale niciunui număr.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Cerinţa==&lt;br /&gt;
&lt;br /&gt;
Să se scrie o funcție Python care, pentru un număr natural n transmis ca parametru, determină și întoarce prin intermediul unor parametrii de ieșire un interval factorial al lui &#039;&#039;&#039;n&#039;&#039;&#039; de lungime maximă.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Date de intrare==&lt;br /&gt;
*un număr natural &#039;&#039;&#039;n&#039;&#039;&#039;, reprezentând numărul pentru care se caută intervalul factorial&lt;br /&gt;
  &lt;br /&gt;
==Date de ieșire==&lt;br /&gt;
*două numere naturale &#039;&#039;&#039;a&#039;&#039;&#039; și &#039;&#039;&#039;b&#039;&#039;&#039;, care reprezintă capetele intervalului factorial al lui n de lungime maximă&lt;br /&gt;
&lt;br /&gt;
==Restricţii şi precizări==&lt;br /&gt;
&lt;br /&gt;
Numele funcției va fi &#039;&#039;&#039;interval&#039;&#039;&#039; și va avea exact trei parametri, în această ordine:&lt;br /&gt;
&lt;br /&gt;
*primul parametru, &#039;&#039;&#039;n&#039;&#039;&#039;, reprezintă un număr natural din intervalul &#039;&#039;&#039;[2,10]&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;a&#039;&#039;&#039; și &#039;&#039;&#039;b&#039;&#039;&#039;, prin care furnizează câte un număr natural, astfel încât expresia &#039;&#039;&#039;b-a&#039;&#039;&#039; să aibă valoare maximă, iar &#039;&#039;&#039;[a,b]&#039;&#039;&#039; să fie interval factorial al lui &#039;&#039;&#039;n&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Exemplu==&lt;br /&gt;
&lt;br /&gt;
Dacă &#039;&#039;&#039;n=3&#039;&#039;&#039;, apelul subprogramului va furniza prin parametrul &#039;&#039;&#039;a&#039;&#039;&#039; valoarea &#039;&#039;&#039;3&#039;&#039;&#039;, iar prin &#039;&#039;&#039;b&#039;&#039;&#039; valoarea &#039;&#039;&#039;23&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Important==&lt;br /&gt;
&lt;br /&gt;
Soluţia propusă va conţine doar definiţia funcţiei cerute. Prezenţa în soluţie a altor instrucţiuni poate duce erori de compilare sau de execuţie care vor avea ca efect depunctarea soluţiei.&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;quot;1&amp;quot; start=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
def validare(n):&lt;br /&gt;
    if n &amp;lt; 2 or n &amp;gt; 10:&lt;br /&gt;
        print(&amp;quot;Numarul introdus trebuie sa fie intre 2 si 10.&amp;quot;)&lt;br /&gt;
        return False&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
def interval(n):&lt;br /&gt;
    produs = 1&lt;br /&gt;
    i = 1&lt;br /&gt;
    while produs &amp;lt;= n:&lt;br /&gt;
        produs *= i&lt;br /&gt;
        i += 1&lt;br /&gt;
    a = 2&lt;br /&gt;
    while produs &amp;gt; n:&lt;br /&gt;
        produs //= a&lt;br /&gt;
        a += 1&lt;br /&gt;
    b = a - 1&lt;br /&gt;
    while produs &amp;lt;= i:&lt;br /&gt;
        produs *= b + 1&lt;br /&gt;
        b += 1&lt;br /&gt;
    return a, b&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
    n = int(input(&amp;quot;Introduceti numarul n: &amp;quot;))&lt;br /&gt;
    if validare(n):&lt;br /&gt;
        a, b = interval(n)&lt;br /&gt;
        print(f&amp;quot;Intervalul factorial al lui {n} este [{a}, {b}].&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    main()&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Explicatii==&lt;br /&gt;
In acest cod, functia validare verifica daca numarul n primit ca parametru este in intervalul [2,10]. Daca numarul este in afara acestui interval, se afiseaza un mesaj de eroare si se returneaza False. Daca numarul este in interval, se returneaza True.&lt;br /&gt;
&lt;br /&gt;
Functia interval determina intervalul factorial al lui n de lungime maxima. Pentru aceasta, se calculeaza produsul primelor i numere naturale pana cand produsul depaseste n. De aici, se calculeaza capatul inferior a al intervalului factorial, prin impartirea succesiva a produsului la numerele naturale de la 2 la a-1, pana cand produsul devine mai mic sau egal cu i. Apoi, se calculeaza capatul superior b al intervalului factorial, prin inmultirea succesiva a produsului cu numerele naturale de la b+1 la i-1, pana cand produsul devine mai mare sau egal cu i.&lt;br /&gt;
&lt;br /&gt;
In functia main, se citeste numarul n de la tastatura si se verifica daca este un numar valid prin apelarea functiei validare. Daca numarul este valid, se determina intervalul factorial al lui n prin apelarea functiei interval si se afiseaza intervalul respectiv.&lt;br /&gt;
&lt;br /&gt;
La final, daca acest cod este rulat ca program principal (__name__ == &amp;quot;__main__&amp;quot;), functia main este apelata pentru a rula intregul program.&lt;/div&gt;</summary>
		<author><name>Cuceu Andrei</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=0798_-_Interval_Factorial&amp;diff=5725</id>
		<title>0798 - Interval Factorial</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=0798_-_Interval_Factorial&amp;diff=5725"/>
		<updated>2023-04-30T17:20:32Z</updated>

		<summary type="html">&lt;p&gt;Cuceu Andrei: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
==Enunt==&lt;br /&gt;
&lt;br /&gt;
Un interval cu proprietatea că există un singur număr natural, &#039;&#039;&#039;n (2≤n)&#039;&#039;&#039;, pentru care valoarea produsului &#039;&#039;&#039;1·2·3·...·n&#039;&#039;&#039; aparține acestui interval este numit interval factorial al lui &#039;&#039;&#039;n&#039;&#039;&#039;.&lt;br /&gt;
&#039;&#039;&#039;Exemplu&#039;&#039;&#039;: &#039;&#039;&#039;[5,8]&#039;&#039;&#039; și &#039;&#039;&#039;[3,23]&#039;&#039;&#039; sunt intervale factoriale ale lui &#039;&#039;&#039;3&#039;&#039;&#039;, dar &#039;&#039;&#039;[1,15]&#039;&#039;&#039; și &#039;&#039;&#039;[7,10]&#039;&#039;&#039; nu sunt intervale factoriale ale niciunui număr.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Cerinţa==&lt;br /&gt;
&lt;br /&gt;
Să se scrie o funcție Python care, pentru un număr natural n transmis ca parametru, determină și întoarce prin intermediul unor parametrii de ieșire un interval factorial al lui &#039;&#039;&#039;n&#039;&#039;&#039; de lungime maximă.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Restricţii şi precizări==&lt;br /&gt;
&lt;br /&gt;
Numele funcției va fi &#039;&#039;&#039;interval&#039;&#039;&#039; și va avea exact trei parametri, în această ordine:&lt;br /&gt;
&lt;br /&gt;
*primul parametru, &#039;&#039;&#039;n&#039;&#039;&#039;, reprezintă un număr natural din intervalul &#039;&#039;&#039;[2,10]&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;a&#039;&#039;&#039; și &#039;&#039;&#039;b&#039;&#039;&#039;, prin care furnizează câte un număr natural, astfel încât expresia &#039;&#039;&#039;b-a&#039;&#039;&#039; să aibă valoare maximă, iar &#039;&#039;&#039;[a,b]&#039;&#039;&#039; să fie interval factorial al lui &#039;&#039;&#039;n&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Exemplu==&lt;br /&gt;
&lt;br /&gt;
Dacă &#039;&#039;&#039;n=3&#039;&#039;&#039;, apelul subprogramului va furniza prin parametrul &#039;&#039;&#039;a&#039;&#039;&#039; valoarea &#039;&#039;&#039;3&#039;&#039;&#039;, iar prin &#039;&#039;&#039;b&#039;&#039;&#039; valoarea &#039;&#039;&#039;23&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Important==&lt;br /&gt;
&lt;br /&gt;
Soluţia propusă va conţine doar definiţia funcţiei cerute. Prezenţa în soluţie a altor instrucţiuni poate duce erori de compilare sau de execuţie care vor avea ca efect depunctarea soluţiei.&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;quot;1&amp;quot; start=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
def validare(n):&lt;br /&gt;
    if n &amp;lt; 2 or n &amp;gt; 10:&lt;br /&gt;
        print(&amp;quot;Numarul introdus trebuie sa fie intre 2 si 10.&amp;quot;)&lt;br /&gt;
        return False&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
def interval(n):&lt;br /&gt;
    produs = 1&lt;br /&gt;
    i = 1&lt;br /&gt;
    while produs &amp;lt;= n:&lt;br /&gt;
        produs *= i&lt;br /&gt;
        i += 1&lt;br /&gt;
    a = 2&lt;br /&gt;
    while produs &amp;gt; n:&lt;br /&gt;
        produs //= a&lt;br /&gt;
        a += 1&lt;br /&gt;
    b = a - 1&lt;br /&gt;
    while produs &amp;lt;= i:&lt;br /&gt;
        produs *= b + 1&lt;br /&gt;
        b += 1&lt;br /&gt;
    return a, b&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
    n = int(input(&amp;quot;Introduceti numarul n: &amp;quot;))&lt;br /&gt;
    if validare(n):&lt;br /&gt;
        a, b = interval(n)&lt;br /&gt;
        print(f&amp;quot;Intervalul factorial al lui {n} este [{a}, {b}].&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    main()&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Explicatii==&lt;br /&gt;
In acest cod, functia validare verifica daca numarul n primit ca parametru este in intervalul [2,10]. Daca numarul este in afara acestui interval, se afiseaza un mesaj de eroare si se returneaza False. Daca numarul este in interval, se returneaza True.&lt;br /&gt;
&lt;br /&gt;
Functia interval determina intervalul factorial al lui n de lungime maxima. Pentru aceasta, se calculeaza produsul primelor i numere naturale pana cand produsul depaseste n. De aici, se calculeaza capatul inferior a al intervalului factorial, prin impartirea succesiva a produsului la numerele naturale de la 2 la a-1, pana cand produsul devine mai mic sau egal cu i. Apoi, se calculeaza capatul superior b al intervalului factorial, prin inmultirea succesiva a produsului cu numerele naturale de la b+1 la i-1, pana cand produsul devine mai mare sau egal cu i.&lt;br /&gt;
&lt;br /&gt;
In functia main, se citeste numarul n de la tastatura si se verifica daca este un numar valid prin apelarea functiei validare. Daca numarul este valid, se determina intervalul factorial al lui n prin apelarea functiei interval si se afiseaza intervalul respectiv.&lt;br /&gt;
&lt;br /&gt;
La final, daca acest cod este rulat ca program principal (__name__ == &amp;quot;__main__&amp;quot;), functia main este apelata pentru a rula intregul program.&lt;/div&gt;</summary>
		<author><name>Cuceu Andrei</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=0114_-_FNumarDivizoriImpari&amp;diff=5724</id>
		<title>0114 - FNumarDivizoriImpari</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=0114_-_FNumarDivizoriImpari&amp;diff=5724"/>
		<updated>2023-04-30T17:12:01Z</updated>

		<summary type="html">&lt;p&gt;Cuceu Andrei: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Cerinţa==&lt;br /&gt;
&lt;br /&gt;
Să se scrie o funcție Python care să determine numărul divizorilor impari ai unui număr natural transmis ca parametru. Funcția întoarce rezultatul prin intermediul unui parametru de ieşire.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Date de intrare==&lt;br /&gt;
*un număr natural, mai mare decât &#039;&#039;&#039;1&#039;&#039;&#039; și mai mic decât &#039;&#039;&#039;2.000.000.000&lt;br /&gt;
 &lt;br /&gt;
==Date de ieșire==&lt;br /&gt;
*un număr natural reprezentând numărul de divizori impari ai numărului dat ca parametru&lt;br /&gt;
&lt;br /&gt;
==Restricţii şi precizări==&lt;br /&gt;
&lt;br /&gt;
*numele funcției va fi &#039;&#039;&#039;nr_div_imp&#039;&#039;&#039;&lt;br /&gt;
*funcția va avea doi parametri, reprezentând numărul pentru care se calculează numarul divizorilor *impari, respectiv valoarea calculată&lt;br /&gt;
*numărul pentru care se calculează numărul divizorilor impari va fi mai mare decât 1 și mai mic decât &#039;&#039;&#039;2.000.000.000&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Important==&lt;br /&gt;
&lt;br /&gt;
Soluţia propusă va conţine doar definiţia funcţiei cerute. Prezenţa în soluţie a altor instrucţiuni poate duce erori de compilare sau de execuţie care vor avea ca efect depunctarea soluţiei.&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;quot;1&amp;quot; start=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
def validate_input(n):&lt;br /&gt;
    if n &amp;lt;= 1 or n &amp;gt;= 2000000000:&lt;br /&gt;
        return False&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
def nr_div_imp(n):&lt;br /&gt;
    if not validate_input(n):&lt;br /&gt;
        return -1&lt;br /&gt;
    result = 0&lt;br /&gt;
    for i in range(1, n+1, 2):&lt;br /&gt;
        if n % i == 0:&lt;br /&gt;
            result += 1&lt;br /&gt;
    return result&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    n = int(input(&amp;quot;Introduceti numarul n: &amp;quot;))&lt;br /&gt;
    result = nr_div_imp(n)&lt;br /&gt;
    if result == -1:&lt;br /&gt;
        print(&amp;quot;Numarul introdus nu este valid.&amp;quot;)&lt;br /&gt;
    else:&lt;br /&gt;
        print(&amp;quot;Datele de intrare sunt corecte.&amp;quot;)&lt;br /&gt;
        print(&amp;quot;Numarul de divizori impari ai lui&amp;quot;, n, &amp;quot;este:&amp;quot;, result)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Explicatii==&lt;br /&gt;
Acest cod conține două funcții: nr_div_imp(n) și validate_input(n), împreună cu o funcție principală main.&lt;br /&gt;
&lt;br /&gt;
Funcția nr_div_imp(n) primește un număr natural n ca parametru și calculează numărul de divizori impari ai lui n. Pentru aceasta, folosește un ciclu for care parcurge toate numerele impare de la 1 până la n. Pentru fiecare număr impar verifică dacă este divizor al lui n și, în caz afirmativ, adaugă 1 la variabila result. La sfârșit, funcția returnează valoarea variabilei result.&lt;br /&gt;
&lt;br /&gt;
Funcția validate_input(n) primește, de asemenea, un număr natural n ca parametru și verifică dacă acesta este un număr valid, adică mai mare decât 1 și mai mic decât 2.000.000.000. Dacă numărul este valid, funcția returnează True, în caz contrar, returnează False.&lt;br /&gt;
&lt;br /&gt;
Funcția principală main primește un număr natural n de la utilizator, apoi apelează funcția nr_div_imp(n) pentru a calcula numărul de divizori impari ai lui n. Dacă numărul introdus nu este valid, afișează un mesaj corespunzător. În caz contrar, afișează un mesaj care confirmă corectitudinea datelor de intrare și afișează numărul de divizori impari ai lui n.&lt;/div&gt;</summary>
		<author><name>Cuceu Andrei</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=0908_-_AfisareNumerePrime&amp;diff=5723</id>
		<title>0908 - AfisareNumerePrime</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=0908_-_AfisareNumerePrime&amp;diff=5723"/>
		<updated>2023-04-30T17:08:26Z</updated>

		<summary type="html">&lt;p&gt;Cuceu Andrei: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Cerință==&lt;br /&gt;
&lt;br /&gt;
Scrieți definiția completă a funcției Python &#039;&#039;&#039;afisare&#039;&#039;&#039; care primește doi parametri &#039;&#039;&#039;a&#039;&#039;&#039; și &#039;&#039;&#039;b&#039;&#039;&#039; și afișează pe ecran, în ordine crescătoare, numerele naturale prime cuprinse între &#039;&#039;&#039;a&#039;&#039;&#039; și &#039;&#039;&#039;b&#039;&#039;&#039;, inclusiv acestea.&lt;br /&gt;
&lt;br /&gt;
==Date de intrare==  &lt;br /&gt;
&lt;br /&gt;
*Doi parametri întregi &#039;&#039;&#039;a și b&#039;&#039;&#039;, unde &#039;&#039;&#039;0 &amp;lt; a, b &amp;lt;= 1000&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==Date de ieșire==&lt;br /&gt;
*Nici o valoare de returnare. Funcția va afișa, pe o singură linie, numerele naturale prime cuprinse între &#039;&#039;&#039;a&#039;&#039;&#039; și&#039;&#039;&#039; b&#039;&#039;&#039;, în ordine crescătoare, separate prin câte un spațiu.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Restricții de precizări==&lt;br /&gt;
&lt;br /&gt;
*numele funcției va fi &#039;&#039;&#039;afisare&#039;&#039;&#039;&lt;br /&gt;
*funcția va avea exact doi parametri: &#039;&#039;&#039;a&#039;&#039;&#039;, respectiv &#039;&#039;&#039;b&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;0 &amp;lt; a , b &amp;lt;= 1000&#039;&#039;&#039;&lt;br /&gt;
*numerele vor fi afișate pe aceeași linie, separate prin câte un spațiu&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Exemplu==&lt;br /&gt;
&lt;br /&gt;
Dacă &#039;&#039;&#039;a=7&#039;&#039;&#039; și &#039;&#039;&#039;b=2&#039;&#039;&#039;, apelul subprogramului va afișa pe ecran:&lt;br /&gt;
&lt;br /&gt;
2 3 5 7&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Important==&lt;br /&gt;
&lt;br /&gt;
Soluţia propusă va conţine doar definiţia funcţiei cerute. Prezenţa în soluţie a altor instrucţiuni poate duce erori de compilare sau de execuţie care vor avea ca efect depunctarea soluţiei.&lt;br /&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;quot;1&amp;quot; start=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
def este_prim(n):&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;Verifică dacă un număr dat este prim&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    if n &amp;lt; 2:&lt;br /&gt;
        return False&lt;br /&gt;
    for i in range(2, int(n**0.5)+1):&lt;br /&gt;
        if n % i == 0:&lt;br /&gt;
            return False&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
def afisare(a, b):&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;Afișează numerele prime cuprinse între a și b&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    for n in range(a, b+1):&lt;br /&gt;
        if este_prim(n):&lt;br /&gt;
            print(n, end=&#039; &#039;)&lt;br /&gt;
    print()  # trecem pe o noua linie&lt;br /&gt;
&lt;br /&gt;
def validare(a, b):&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;Verifică dacă a și b sunt în intervalul specificat&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    if a &amp;lt;= 0 or b &amp;lt;= 0 or a &amp;gt; 1000 or b &amp;gt; 1000:&lt;br /&gt;
        return False&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
    a = int(input(&amp;quot;Introduceti valoarea pentru a: &amp;quot;))&lt;br /&gt;
    b = int(input(&amp;quot;Introduceti valoarea pentru b: &amp;quot;))&lt;br /&gt;
    if validare(a, b):&lt;br /&gt;
        afisare(a, b)&lt;br /&gt;
    else:&lt;br /&gt;
        print(&amp;quot;Valorile introduse nu sunt valide. A și b trebuie să fie între 1 și 1000.&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    main()&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Explicatii==&lt;br /&gt;
&lt;br /&gt;
Acest cod definește o funcție afisare care primește doi parametri întregi a și b și afișează numerele prime cuprinse între a și b, inclusiv acestea, pe o singură linie, separate prin câte un spațiu. Pentru a verifica dacă un număr este prim, este definită și o funcție separată este_prim.&lt;br /&gt;
&lt;br /&gt;
Pentru a preveni erori, a fost definită o funcție suplimentară validare care verifică dacă valorile introduse pentru a și b sunt în intervalul specificat (1 ≤ a, b ≤ 1000).&lt;br /&gt;
&lt;br /&gt;
În funcția main, utilizatorul este întâi întrebat să introducă valorile pentru a și b. Dacă valorile sunt valide, funcția afisare este apelată pentru a afișa numerele prime. Altfel, un mesaj de eroare este afișat pentru a informa utilizatorul că valorile introduse nu sunt valide.&lt;/div&gt;</summary>
		<author><name>Cuceu Andrei</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=0907_-_AfisareNumerePare1&amp;diff=5722</id>
		<title>0907 - AfisareNumerePare1</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=0907_-_AfisareNumerePare1&amp;diff=5722"/>
		<updated>2023-04-30T17:02:40Z</updated>

		<summary type="html">&lt;p&gt;Cuceu Andrei: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Cerință==&lt;br /&gt;
&lt;br /&gt;
Scrieți definiția completă a funcției Python &#039;&#039;&#039;afisare&#039;&#039;&#039; care primește doi parametri &#039;&#039;&#039;a&#039;&#039;&#039; și &#039;&#039;&#039;b&#039;&#039;&#039; și determină afișarea pe ecran, în ordine crescătoare, numerele naturale pare cuprinse între &#039;&#039;&#039;a&#039;&#039;&#039; și &#039;&#039;&#039;b&#039;&#039;&#039;, inclusiv acestea.&lt;br /&gt;
&lt;br /&gt;
==Date de intrare==&lt;br /&gt;
&lt;br /&gt;
*Doi parametri a și b, reprezentând limitele inferioară și superioară ale intervalului de numere naturale pare de afișat.&lt;br /&gt;
&lt;br /&gt;
==Date de ieșire==&lt;br /&gt;
&lt;br /&gt;
* Funcția nu returnează nimic, ci doar afișează pe ecran, în ordine crescătoare, numerele naturale pare cuprinse între a și b, inclusiv acestea, separate prin câte un spațiu.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Restricții de precizări==&lt;br /&gt;
&lt;br /&gt;
*numele funcției va fi &#039;&#039;&#039;afisare&#039;&#039;&#039;&lt;br /&gt;
*funcția va avea exact doi parametri: &#039;&#039;&#039;a&#039;&#039;&#039;, respectiv &#039;&#039;&#039;b&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;0 &amp;lt; a , b &amp;lt;= 1000&#039;&#039;&#039;&lt;br /&gt;
*numerele vor fi afișate pe aceeași linie, separate prin câte un spațiu&lt;br /&gt;
&lt;br /&gt;
==Exemplu==&lt;br /&gt;
&lt;br /&gt;
Dacă &#039;&#039;&#039;a=7&#039;&#039;&#039; și &#039;&#039;&#039;b=2&#039;&#039;&#039;, apelul subprogramului va afișa pe ecran:&lt;br /&gt;
&lt;br /&gt;
2 4 6&lt;br /&gt;
&lt;br /&gt;
==Important==&lt;br /&gt;
&lt;br /&gt;
Soluţia propusă va conţine doar definiţia funcţiei cerute. Prezenţa în soluţie a altor instrucţiuni poate duce erori de compilare sau de execuţie care vor avea ca efect depunctarea soluţiei.&lt;br /&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;quot;1&amp;quot; start=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
def validare(a, b):&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    Verifică dacă valorile primite ca parametri sunt valide.&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    if a &amp;lt;= 0 or a &amp;gt; 1000 or b &amp;lt;= 0 or b &amp;gt; 1000:&lt;br /&gt;
        return False&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
def afisare(a, b):&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    Afiseaza numerele naturale pare cuprinse intre a si b inclusiv acestea, in ordine crescatoare.&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    # verificam daca valorile primite sunt valide&lt;br /&gt;
    if not validare(a, b):&lt;br /&gt;
        print(&amp;quot;Valorile primite nu sunt valide!&amp;quot;)&lt;br /&gt;
        return&lt;br /&gt;
    &lt;br /&gt;
    # determinam care este numarul mai mic si care este numarul mai mare&lt;br /&gt;
    start = min(a, b)&lt;br /&gt;
    end = max(a, b)&lt;br /&gt;
    &lt;br /&gt;
    # afisam numerele pare din intervalul [start, end]&lt;br /&gt;
    for i in range(start, end+1):&lt;br /&gt;
        if i % 2 == 0:&lt;br /&gt;
            print(i, end=&amp;quot; &amp;quot;)&lt;br /&gt;
    print()  # afisam un newline la final&lt;br /&gt;
&lt;br /&gt;
# exemplu de utilizare a functiei afisare&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    a = int(input(&amp;quot;numarul 1: &amp;quot;))&lt;br /&gt;
    b = int(input(&amp;quot;numarul 2: &amp;quot;))&lt;br /&gt;
    if validare(a, b):&lt;br /&gt;
        print(&amp;quot;Datele de intrare sunt corecte.&amp;quot;)&lt;br /&gt;
        afisare(a, b)&lt;br /&gt;
    else:&lt;br /&gt;
        print(&amp;quot;Valorile primite nu sunt valide!&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Cuceu Andrei</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=0030_-_AfisareMultipli&amp;diff=5721</id>
		<title>0030 - AfisareMultipli</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=0030_-_AfisareMultipli&amp;diff=5721"/>
		<updated>2023-04-30T16:58:23Z</updated>

		<summary type="html">&lt;p&gt;Cuceu Andrei: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Cerință==&lt;br /&gt;
&lt;br /&gt;
Scrieți definiția completă a funcției Python &#039;&#039;&#039;sub&#039;&#039;&#039; care primește doi parametri &#039;&#039;&#039;n&#039;&#039;&#039; și &#039;&#039;&#039;k&#039;&#039;&#039; și determină afișarea pe ecran, în ordine descrescătoare, a primelor &#039;&#039;&#039;n&#039;&#039;&#039; numere naturale nenule divizibile cu &#039;&#039;&#039;k&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Date de intrare==  &lt;br /&gt;
*&#039;&#039;&#039;n &#039;&#039;&#039;(numărul de numere naturale nenule divizibile cu k ce urmează a fi afișate)&lt;br /&gt;
*&#039;&#039;&#039;k&#039;&#039;&#039; (numărul cu care trebuie să fie divizibile numerele afișate)&lt;br /&gt;
&lt;br /&gt;
==Date de ieșire==&lt;br /&gt;
&lt;br /&gt;
*afișarea pe ecran a primelor n numere naturale nenule divizibile cu k, în ordine descrescătoare, separate prin câte un spațiu&lt;br /&gt;
&lt;br /&gt;
==Restricții de precizări==&lt;br /&gt;
&lt;br /&gt;
*numele funcției va fi sub&lt;br /&gt;
*funcția va avea exact doi parametri, în ordinea: n, respectiv k&lt;br /&gt;
*0 &amp;lt; n ≤ 50, 0 &amp;lt; k ≤ 20&lt;br /&gt;
*cele n numere vor fi afișate pe aceeași linie, separate prin câte un spațiu&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Exemplu==&lt;br /&gt;
&lt;br /&gt;
Dacă n = 3 și k = 5, apelul subprogramului va afișa pe ecran:  &lt;br /&gt;
&#039;&#039;&#039;15 10 5&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Important==&lt;br /&gt;
&lt;br /&gt;
Soluţia propusă va conţine doar definiţia funcţiei cerute. Prezenţa în soluţie a altor instrucţiuni poate duce erori de compilare sau de execuţie care vor avea ca efect depunctarea soluţiei.&lt;br /&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;quot;1&amp;quot; start=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
def validare(n, k):&lt;br /&gt;
    if not isinstance(n, int) or n &amp;lt;= 0 or n &amp;gt; 50:&lt;br /&gt;
        print(&amp;quot;Eroare: n trebuie să fie un număr întreg pozitiv între 1 și 50.&amp;quot;)&lt;br /&gt;
        return False&lt;br /&gt;
    if not isinstance(k, int) or k &amp;lt;= 0 or k &amp;gt; 20:&lt;br /&gt;
        print(&amp;quot;Eroare: k trebuie să fie un număr întreg pozitiv între 1 și 20.&amp;quot;)&lt;br /&gt;
        return False&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
# Definim funcția sub care primește doi parametri n și k&lt;br /&gt;
# și afișează primele n numere divizibile cu k în ordine descrescătoare.&lt;br /&gt;
def sub(n, k):&lt;br /&gt;
    i = k * n&lt;br /&gt;
    while n &amp;gt; 0:&lt;br /&gt;
        print(i, end=&#039; &#039;)&lt;br /&gt;
        i -= k&lt;br /&gt;
        n -= 1&lt;br /&gt;
&lt;br /&gt;
# Program principal&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    # Citim valorile n și k de la tastatură&lt;br /&gt;
    n = int(input(&amp;quot;Introduceți numărul de elemente: &amp;quot;))&lt;br /&gt;
    k = int(input(&amp;quot;Introduceți divizorul: &amp;quot;))&lt;br /&gt;
    &lt;br /&gt;
    # Verificăm restricțiile impuse în cerință&lt;br /&gt;
    if n &amp;lt;= 0 or n &amp;gt; 50:&lt;br /&gt;
        print(&amp;quot;Eroare: n trebuie să fie între 1 și 50.&amp;quot;)&lt;br /&gt;
    elif k &amp;lt;= 0 or k &amp;gt; 20:&lt;br /&gt;
        print(&amp;quot;Eroare: k trebuie să fie între 1 și 20.&amp;quot;)&lt;br /&gt;
    else:&lt;br /&gt;
        # Apelăm funcția sub și afișăm rezultatul&lt;br /&gt;
        print(&amp;quot;Datele de intrare sunt corecte.&amp;quot;)&lt;br /&gt;
        sub(n, k) &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Explicatii== &lt;br /&gt;
&lt;br /&gt;
Acest cod definește o funcție sub(n, k) care primește doi parametri, n și k, și afișează primele n numere divizibile cu k în ordine descrescătoare. Programul citește valorile n și k de la tastatură și verifică dacă acestea respectă restricțiile impuse în cerință, folosind funcția de validare validare(n, k).&lt;br /&gt;
&lt;br /&gt;
Funcția validare(n, k) verifică dacă n și k sunt numere întregi pozitive și dacă se încadrează în intervalele impuse în cerință. Dacă valorile nu respectă aceste restricții, se afișează un mesaj de eroare corespunzător și se returnează False. În caz contrar, se returnează True.&lt;br /&gt;
&lt;br /&gt;
Dacă ambele valori de intrare sunt valide, programul afișează mesajul &amp;quot;Datele de intrare sunt corecte.&amp;quot; și apelează funcția sub(n, k), care calculează primele n numere divizibile cu k în ordine descrescătoare și le afișează pe ecran, separate prin câte un spațiu.&lt;br /&gt;
&lt;br /&gt;
Notă: Acest cod nu utilizează funcția de validare validare(n, k). Pentru a utiliza această funcție, trebuie să înlocuiți blocul de cod care verifică restricțiile impuse în cerință cu apelul funcției validare.&lt;/div&gt;</summary>
		<author><name>Cuceu Andrei</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=0912_-_PrimeVecine&amp;diff=5720</id>
		<title>0912 - PrimeVecine</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=0912_-_PrimeVecine&amp;diff=5720"/>
		<updated>2023-04-30T16:53:43Z</updated>

		<summary type="html">&lt;p&gt;Cuceu Andrei: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Cerință==&lt;br /&gt;
Să se scrie o funcție Python care, pentru un număr natural n transmis ca parametru, determină și întoarce prin intermediul unor parametri de ieșire cel mai mare număr prim mai mic decât n și cel mai mic număr prim mai mare decât n.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Date de intrare==  &lt;br /&gt;
*&#039;&#039;&#039;n&#039;&#039;&#039;: un număr natural, &#039;&#039;&#039;3 ≤ n &amp;lt; 1.000.000.000&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Date de ieșire==&lt;br /&gt;
*cel mai mare număr prim mai mic decât &#039;&#039;&#039;n&#039;&#039;&#039;&lt;br /&gt;
*cel mai mic număr prim mai mare decât &#039;&#039;&#039;n&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Restricții de precizări==&lt;br /&gt;
&lt;br /&gt;
*numele funcției va fi &#039;&#039;&#039;sub&#039;&#039;&#039;&lt;br /&gt;
*funcția va avea exact trei parametri, în această ordine:&lt;br /&gt;
*primul parametru,&#039;&#039;&#039; n&#039;&#039;&#039;, reprezintă un număr natural,&#039;&#039;&#039; 3 ≤ n &amp;lt; 1.000.000.000&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;a&#039;&#039;&#039; și &#039;&#039;&#039;b&#039;&#039;&#039; sunt parametrii prin care funcția va întoarce cele două valori cerute, astfel:&lt;br /&gt;
*&#039;&#039;&#039;a&#039;&#039;&#039; este cel mai mare număr prim mai mic decât &#039;&#039;&#039;n&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;b&#039;&#039;&#039; este cel mai mic număr prim mai mare decât &#039;&#039;&#039;n&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Exemplu==&lt;br /&gt;
&lt;br /&gt;
Dacă &#039;&#039;&#039;n=28&#039;&#039;&#039;, apelul subprogramului va furniza prin parametrul &#039;&#039;&#039;a&#039;&#039;&#039; valoarea &#039;&#039;&#039;23&#039;&#039;&#039;, iar prin &#039;&#039;&#039;b&#039;&#039;&#039; valoarea &#039;&#039;&#039;29&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==Important==&lt;br /&gt;
&lt;br /&gt;
Soluţia propusă va conţine doar definiţia funcţiei cerute. Prezenţa în soluţie a altor instrucţiuni poate duce erori de compilare sau de execuţie care vor avea ca efect depunctarea soluţiei.&lt;br /&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;quot;1&amp;quot; start=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
def validare(n, a, b):&lt;br /&gt;
    return 3 &amp;lt;= int(n) &amp;lt;= 1_000_000_000 and a &amp;lt; int(n) and b &amp;gt; int(n)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def get_prime_numbers(n, a, b):&lt;br /&gt;
    def is_prime(x):&lt;br /&gt;
        if x &amp;lt; 2:&lt;br /&gt;
            return False&lt;br /&gt;
        for i in range(2, int(x ** 0.5) + 1):&lt;br /&gt;
            if x % i == 0:&lt;br /&gt;
                return False&lt;br /&gt;
        return True&lt;br /&gt;
&lt;br /&gt;
    for i in range(n - 1, 1, -1):&lt;br /&gt;
        if is_prime(i):&lt;br /&gt;
            a = i&lt;br /&gt;
            break&lt;br /&gt;
&lt;br /&gt;
    i = n + 1&lt;br /&gt;
    while True:&lt;br /&gt;
        if is_prime(i):&lt;br /&gt;
            b = i&lt;br /&gt;
            break&lt;br /&gt;
        i += 1&lt;br /&gt;
&lt;br /&gt;
    return a, b&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    n = 28&lt;br /&gt;
    a, b = None, None&lt;br /&gt;
    a, b = get_prime_numbers(n, a, b)&lt;br /&gt;
    if validare(n, a, b):&lt;br /&gt;
        print(&amp;quot;Datele introduse sunt corecte.&amp;quot;)&lt;br /&gt;
        print(f&amp;quot;Cel mai mare numar prim mai mic decat {n} este {a}&amp;quot;)&lt;br /&gt;
        print(f&amp;quot;Cel mai mic numar prim mai mare decat {n} este {b}&amp;quot;)&lt;br /&gt;
    else:&lt;br /&gt;
        print(&amp;quot;Datele introduse nu sunt corecte.&amp;quot;)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Explicatii== &lt;br /&gt;
&lt;br /&gt;
Această implementare Python definește o funcție get_prime_numbers(n, a, b) care primește ca parametri un număr natural n și două variabile a și b. Scopul acestei funcții este de a găsi cel mai mare număr prim mai mic decât n (valoarea va fi atribuită variabilei a) și cel mai mic număr prim mai mare decât n (valoarea va fi atribuită variabilei b).&lt;br /&gt;
&lt;br /&gt;
Funcția utilizează o funcție internă is_prime(x) pentru a verifica dacă un număr x este prim sau nu. Pentru a determina dacă x este prim, funcția is_prime(x) utilizează metoda clasică a verificării dacă x este divizibil cu orice număr întreg cuprins între 2 și rădăcina pătrată din x.&lt;br /&gt;
&lt;br /&gt;
Mai întâi, funcția get_prime_numbers(n, a, b) caută cel mai mare număr prim mai mic decât n. Acest lucru este realizat prin parcurgerea tuturor numerelor mai mici decât n, începând cu n-1, și verificând dacă fiecare număr este prim sau nu. Când se găsește primul număr prim, acesta este atribuit variabilei a și parcurgerea se oprește.&lt;br /&gt;
&lt;br /&gt;
În continuare, funcția caută cel mai mic număr prim mai mare decât n. Acest lucru este realizat prin parcurgerea tuturor numerelor mai mari decât n, începând cu n+1, și verificând dacă fiecare număr este prim sau nu. Când se găsește primul număr prim, acesta este atribuit variabilei b și parcurgerea se oprește.&lt;br /&gt;
&lt;br /&gt;
Funcția get_prime_numbers(n, a, b) returnează o tuplă cu cele două numere prime găsite: (a, b).&lt;br /&gt;
&lt;br /&gt;
Funcția validare(n, a, b) este apelată în scopul de a valida faptul că valorile returnate sunt corecte. Aceasta verifică dacă valorile respectă condițiile impuse în enunț, adică n este un număr natural cuprins între 3 și 1.000.000.000, iar a este mai mic decât n și b este mai mare decât n. Funcția returnează True dacă valorile sunt corecte și False altfel.&lt;br /&gt;
&lt;br /&gt;
În funcția principală (if __name__ == &#039;__main__&#039;:), numărul n este inițializat cu o valoare și variabilele a și b sunt setate inițial la None. Apoi, se apelează funcția get_prime_numbers(n, a, b) pentru a găsi cele două numere prime. Dacă valorile returnate sunt corecte, se afișează cele două numere prime găsite. În caz contrar, se afișează un mesaj de eroare&lt;/div&gt;</summary>
		<author><name>Cuceu Andrei</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=0029_-_MaxPrime&amp;diff=5719</id>
		<title>0029 - MaxPrime</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=0029_-_MaxPrime&amp;diff=5719"/>
		<updated>2023-04-30T16:50:00Z</updated>

		<summary type="html">&lt;p&gt;Cuceu Andrei: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Cerință==&lt;br /&gt;
&lt;br /&gt;
Să se scrie o funcție Python care, pentru un număr natural n transmis ca parametru, determină și întoarce prin intermediul unor parametri de ieșire cele mai mari două numere naturale prime mai mici decât &#039;&#039;&#039;n&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Date de intrare==  &lt;br /&gt;
*&#039;&#039;&#039;n&#039;&#039;&#039;: un număr natural, &#039;&#039;&#039;5 ≤ n &amp;lt; 1000000000&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Date de ieșire==&lt;br /&gt;
*cel mai mare număr natural prim mai mic decât &#039;&#039;&#039;n&#039;&#039;&#039;&lt;br /&gt;
*al doilea cel mai mare număr natural prim mai mic decât &#039;&#039;&#039;n&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Restricții de precizări==&lt;br /&gt;
&lt;br /&gt;
*numele funcției va fi sub&lt;br /&gt;
*funcția va avea exact trei parametri, în această ordine:&lt;br /&gt;
*:primul parametru, n, reprezintă un număr natural, 5 ≤ n &amp;lt; 1000000000&lt;br /&gt;
*:a și b sunt parametrii prin care funcția va întoarce cele două valori căutate&lt;br /&gt;
*parametrii a și b respectă relația a&amp;gt;b&lt;br /&gt;
&lt;br /&gt;
==Exemplu==&lt;br /&gt;
&lt;br /&gt;
 Dacă &#039;&#039;&#039;n=28&#039;&#039;&#039;, apelul subprogramului va furniza prin parametrul a valoarea &#039;&#039;&#039;23&#039;&#039;&#039;, iar prin &#039;&#039;&#039;b&#039;&#039;&#039; valoarea &#039;&#039;&#039;19&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==Important==&lt;br /&gt;
&lt;br /&gt;
Soluţia propusă va conţine doar definiţia funcţiei cerute. Prezenţa în soluţie a altor instrucţiuni poate duce erori de compilare sau de execuţie care vor avea ca efect depunctarea soluţiei.&lt;br /&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;quot;1&amp;quot; start=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
def validare(n):&lt;br /&gt;
    return 5 &amp;lt;= int(n) &amp;lt;= 1000000000&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def sub(n, a, b):&lt;br /&gt;
    def is_prime(x):&lt;br /&gt;
        if x &amp;lt; 2:&lt;br /&gt;
            return False&lt;br /&gt;
        for i in range(2, int(x ** 0.5) + 1):&lt;br /&gt;
            if x % i == 0:&lt;br /&gt;
                return False&lt;br /&gt;
        return True&lt;br /&gt;
&lt;br /&gt;
    found_primes = []&lt;br /&gt;
    for i in range(n - 1, 1, -1):&lt;br /&gt;
        if is_prime(i):&lt;br /&gt;
            found_primes.append(i)&lt;br /&gt;
            if len(found_primes) == 2:&lt;br /&gt;
                break&lt;br /&gt;
&lt;br /&gt;
    a, b = found_primes[0], found_primes[1]&lt;br /&gt;
    if a &amp;lt; b:&lt;br /&gt;
        a, b = b, a&lt;br /&gt;
&lt;br /&gt;
    return a, b&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    a, b = 0, -1&lt;br /&gt;
    # n = input(&amp;quot;n=&amp;quot;)&lt;br /&gt;
    n = 28&lt;br /&gt;
    if validare(n):&lt;br /&gt;
        sub(n, a, b)&lt;br /&gt;
        if a &amp;gt; b:&lt;br /&gt;
            print(&amp;quot;Datele de intrare sunt corecte.&amp;quot;)&lt;br /&gt;
        else:&lt;br /&gt;
            print(&amp;quot;Datele introduse nu sunt corecte.&amp;quot;)&lt;br /&gt;
    else:&lt;br /&gt;
        print(&amp;quot;Datele introduse nu sunt corecte.&amp;quot;)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Explicatii==&lt;br /&gt;
&lt;br /&gt;
În acest cod Python, se definește funcția validare(n) care primește un număr n și returnează True dacă n este între 5 și 1000000000, inclusiv, și False altfel. Aceasta este o verificare preliminară a valorii de intrare pentru a se asigura că se încadrează în intervalul de valori permis.&lt;br /&gt;
&lt;br /&gt;
Funcția sub(n, a, b) primește un număr natural n și două variabile a și b prin referință, unde cele două variabile sunt inițializate cu valorile 0 și -1, respectiv. Funcția determină cele mai mari două numere prime mai mici decât n și le atribuie variabilelor a și b. Pentru a determina dacă un număr este prim, funcția utilizează o funcție internă is_prime(x) care primește un număr x și returnează True dacă este prim și False altfel.&lt;br /&gt;
&lt;br /&gt;
În cadrul funcției principale __main__(), se citește valoarea n dintr-un input sau se atribuie o valoare presetată (în cazul de față, 28), iar apoi se verifică dacă valoarea introdusă este validă utilizând funcția validare(n). Dacă este validă, se apelează funcția sub(n, a, b) care determină cele două numere prime și le atribuie variabilelor a și b prin referință. Se verifică dacă a este mai mare decât b și se afișează un mesaj corespunzător. Dacă valoarea introdusă nu este validă, se afișează un mesaj corespunzător.&lt;/div&gt;</summary>
		<author><name>Cuceu Andrei</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=0020_-_Suma_divizorilor_primi&amp;diff=5718</id>
		<title>0020 - Suma divizorilor primi</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=0020_-_Suma_divizorilor_primi&amp;diff=5718"/>
		<updated>2023-04-30T16:46:02Z</updated>

		<summary type="html">&lt;p&gt;Cuceu Andrei: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Cerință==&lt;br /&gt;
&lt;br /&gt;
Să se scrie o funcție Python care să determine suma divizorilor primi ai unui număr natural transmis ca parametru. Funcția întoarce rezultatul prin intermediul unui parametru de ieşire.&lt;br /&gt;
&lt;br /&gt;
==Restricții de precizări==&lt;br /&gt;
&lt;br /&gt;
*numele funcției va fi &#039;&#039;&#039;sum_div_prim&#039;&#039;&#039;&lt;br /&gt;
*funcția va avea doi parametri, reprezentând numărul pentru care se calculează suma divizorilor, respectiv valoarea calculată&lt;br /&gt;
*numărul pentru care se calculează suma divizorilor primi va fi mai mare decât &#039;&#039;&#039;1&#039;&#039;&#039; și mai mic decât &#039;&#039;&#039;2.000.000.000&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Date de intrare==&lt;br /&gt;
Numărul &#039;&#039;&#039;n&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==Date de ieșire==&lt;br /&gt;
Dacă datele de intrare sunt corecte, apare mesajul &#039;&#039;&#039;Datele de intrare sunt corecte.&#039;&#039;&#039; și se returnează valoarea cerută, în caz contrar &#039;&#039;&#039;Datele de intrare sunt incorecte.&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==Exemplu==&lt;br /&gt;
===Exemplul 1===&lt;br /&gt;
====Date de intrare====&lt;br /&gt;
1234&lt;br /&gt;
&lt;br /&gt;
====Date de ieșire====&lt;br /&gt;
&#039;&#039;&#039;Datele de intrare sunt corecte.&#039;&#039;&#039; și valoarea returnată va fi 619.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Important==&lt;br /&gt;
&lt;br /&gt;
Soluţia propusă va conţine doar definiţia funcţiei cerute. Prezenţa în soluţie a altor instrucţiuni poate duce erori de compilare sau de execuţie care vor avea ca efect depunctarea soluţiei.&lt;br /&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;quot;1&amp;quot; start=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
def validate_input(numar):&lt;br /&gt;
    if numar.isdigit() and 1 &amp;lt;= int(numar) &amp;lt;= 2_000_000_000:&lt;br /&gt;
        return True&lt;br /&gt;
    return False&lt;br /&gt;
&lt;br /&gt;
def sum_div_prim(numar, suma=0):&lt;br /&gt;
    if validate_input(numar):&lt;br /&gt;
        for i in range(2, numar + 1):&lt;br /&gt;
            if numar % i == 0:&lt;br /&gt;
                este_prim = True&lt;br /&gt;
                for j in range(2, int(i ** 0.5) + 1):&lt;br /&gt;
                    if i % j == 0:&lt;br /&gt;
                        este_prim = False&lt;br /&gt;
                        break&lt;br /&gt;
                if este_prim:&lt;br /&gt;
                    suma += i&lt;br /&gt;
        return suma&lt;br /&gt;
    else:&lt;br /&gt;
        print(&amp;quot;Datele de intrare sunt incorecte.&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    numar = input()&lt;br /&gt;
    if validate_input(numar):&lt;br /&gt;
        print(&amp;quot;Datele de intrare sunt corecte.&amp;quot;)&lt;br /&gt;
        numar = int(numar)&lt;br /&gt;
        print(sum_div_prim(numar))&lt;br /&gt;
    else:&lt;br /&gt;
        print(&amp;quot;Datele de intrare sunt incorecte.&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Explicatii==&lt;br /&gt;
&lt;br /&gt;
În această soluție, am definit mai întâi funcția validate_input() care primește numărul de intrare și verifică dacă este un număr întreg și dacă este în intervalul specificat. Funcția returnează True dacă numărul este valid și False în caz contrar.&lt;br /&gt;
&lt;br /&gt;
În funcția sum_div_prim(), apelăm mai întâi funcția validate_input() pentru a verifica dacă numărul este valid. Dacă nu este valid, afișăm un mesaj de eroare. Dacă este valid, efectuăm calculele pentru a găsi suma divizorilor primi.&lt;br /&gt;
&lt;br /&gt;
În blocul if __name__ == &#039;__main__&#039;:, am adăugat și o verificare suplimentară pentru a apela funcția validate_input() înainte de a afișa mesajul de intrare corectă și de a calcula suma divizorilor primi.&lt;/div&gt;</summary>
		<author><name>Cuceu Andrei</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=0909_-_PermCircCif&amp;diff=5717</id>
		<title>0909 - PermCircCif</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=0909_-_PermCircCif&amp;diff=5717"/>
		<updated>2023-04-30T16:42:46Z</updated>

		<summary type="html">&lt;p&gt;Cuceu Andrei: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Cerință==&lt;br /&gt;
Să se scrie o funcție Python care să realizează permutarea circulară spre stânga a cifrelor unui număr natural. Numărul este transmis prin intermediul unui parametru care se întoarce din funcție modificat.&lt;br /&gt;
&lt;br /&gt;
==Restricții de precizări==&lt;br /&gt;
&lt;br /&gt;
*numele funcției va fi &#039;&#039;&#039;perm&#039;&#039;&#039;&lt;br /&gt;
*funcția va avea un singur parametru,&#039;&#039;&#039; n&#039;&#039;&#039;&lt;br /&gt;
*parametrul &#039;&#039;&#039;n&#039;&#039;&#039; va fi un număr natural nenul mai mic decât  &#039;&#039;&#039;1.000.000.000&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Date de intrare==&lt;br /&gt;
Introduceți numărul &#039;&#039;&#039;n&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==Date de ieșire==&lt;br /&gt;
Dacă datele sunt corecte, apare textul &#039;&#039;&#039;&amp;quot;Datele sunt corecte.&amp;quot;&#039;&#039;&#039; și se returnează valoarea corectă. Dacă datele sunt incorecte, apare mesajul &#039;&#039;&#039;&amp;quot;Datele nu corespund restricțiilor impuse.&amp;quot;&#039;&#039;&#039;.&lt;br /&gt;
 &lt;br /&gt;
==Exemplu==&lt;br /&gt;
===Exemplul 1===&lt;br /&gt;
&lt;br /&gt;
; Dacă &#039;&#039;&#039;n = 1372&#039;&#039;&#039;, după apelul funcției &#039;&#039;&#039;perm&#039;&#039;&#039;, valoarea lui n va fi &#039;&#039;&#039;3721&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==Important==&lt;br /&gt;
&lt;br /&gt;
Soluţia propusă va conţine doar definiţia funcţiei cerute. Prezenţa în soluţie a altor instrucţiuni poate duce erori de compilare sau de execuţie care vor avea ca efect depunctarea soluţiei.&lt;br /&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;quot;1&amp;quot; start=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
def validare(n):&lt;br /&gt;
    if 1 &amp;lt;= n &amp;lt; 1000000000:&lt;br /&gt;
        return True&lt;br /&gt;
    else:&lt;br /&gt;
        return False&lt;br /&gt;
&lt;br /&gt;
def perm(n):&lt;br /&gt;
    if n &amp;lt; 10:&lt;br /&gt;
        return n&lt;br /&gt;
&lt;br /&gt;
    cifre = [int(digit) for digit in str(n)]&lt;br /&gt;
    cifre.append(cifre.pop(0))&lt;br /&gt;
&lt;br /&gt;
    return int(&#039;&#039;.join(map(str, cifre)))&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;Datele sunt corecte.&amp;quot;)&lt;br /&gt;
        print(&amp;quot;Numarul initial: &amp;quot;, n)&lt;br /&gt;
        n = perm(n)&lt;br /&gt;
        print(&amp;quot;Numarul rotit: &amp;quot;, n)&lt;br /&gt;
    else:&lt;br /&gt;
        print(&amp;quot;Datele nu corespund restricțiilor impuse.&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
==Explicatie== &lt;br /&gt;
&lt;br /&gt;
Funcția validare(n) verifică dacă numărul de intrare se află între 1 și 999.999.999. Funcția perm(n) rotește numărul cu o poziție și îl returnează. În blocul if/else din if __name__ == &#039;__main__&#039;:, se verifică dacă numărul de intrare este valid și se execută funcția perm(n) dacă este valid.&lt;/div&gt;</summary>
		<author><name>Cuceu Andrei</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=0023_-_Oglindit&amp;diff=5716</id>
		<title>0023 - Oglindit</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=0023_-_Oglindit&amp;diff=5716"/>
		<updated>2023-04-30T16:36:33Z</updated>

		<summary type="html">&lt;p&gt;Cuceu Andrei: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Cerinţa==&lt;br /&gt;
Să se scrie o funcție Python care să determine oglinditul unui număr natural transmis ca parametru. Funcția va întoarce rezultatul prin intermediul unui parametru de ieşire.&lt;br /&gt;
&lt;br /&gt;
==Date de intrare==  &lt;br /&gt;
*Un număr natural mai mic decât &#039;&#039;&#039;1.000.000.000&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Date de ieșire==&lt;br /&gt;
*Oglinditul numărului dat ca intrare.&lt;br /&gt;
&lt;br /&gt;
==Restricţii şi precizări==&lt;br /&gt;
&lt;br /&gt;
*Numele funcției va fi &#039;&#039;&#039;oglindit&#039;&#039;&#039;&lt;br /&gt;
*Funcția va avea doi parametri: primul parametru reprezintă numărul pentru care se calculează oglinditul, iar la doilea parametru reprezintă valoarea calculată&lt;br /&gt;
*Numărul pentru care se calculează oglinditul va fi mai mic decât &#039;&#039;&#039;1.000.000.000&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Exemplu==&lt;br /&gt;
===Exemplul 1===&lt;br /&gt;
&lt;br /&gt;
;Intrare&lt;br /&gt;
&lt;br /&gt;
:numar = 12345&lt;br /&gt;
&lt;br /&gt;
;Ieșire&lt;br /&gt;
:Oglinditul lui 12345 este 54321&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Important==&lt;br /&gt;
Soluţia propusă va conţine doar definiţia funcţiei cerute. Prezenţa în soluţie a altor instrucţiuni poate duce erori de compilare sau de execuţie care vor avea ca efect depunctarea soluţiei.&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;quot;1&amp;quot; start=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
def validare(n):&lt;br /&gt;
    return n &amp;lt; 1_000_000_000&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def oglindit(nr, oglindit_nr):&lt;br /&gt;
    oglindit_nr = 0  # inițializăm oglinditul cu valoarea 0&lt;br /&gt;
    while nr &amp;gt; 0:&lt;br /&gt;
        oglindit_nr = oglindit_nr * 10 + nr % 10&lt;br /&gt;
        nr = nr // 10&lt;br /&gt;
    return oglindit_nr&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    nr = 12345&lt;br /&gt;
    oglindit_nr = 0&lt;br /&gt;
    if validare(nr):&lt;br /&gt;
        n = int(nr)&lt;br /&gt;
        print(&amp;quot;Datele introduse corespund restricțiilor impuse&amp;quot;)&lt;br /&gt;
        print(f&amp;quot;Oglinditul lui {nr} este {oglindit(nr, oglindit_nr)}&amp;quot;)&lt;br /&gt;
    else:&lt;br /&gt;
        print(&amp;quot;Datele introduse nu corespund restricțiilor impuse&amp;quot;)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Explicatii==&lt;br /&gt;
Această soluție constă în două funcții și o secțiune de cod care le utilizează:&lt;br /&gt;
&lt;br /&gt;
Funcția validare(n) primește un număr întreg n și returnează True dacă n este mai mic decât 1 miliard, altfel returnează False. Această funcție verifică restricția impusă în enunțul problemei.&lt;br /&gt;
&lt;br /&gt;
Funcția oglindit(nr, oglindit_nr) primește două parametri de tip întreg: nr - numărul pentru care se calculează oglinditul, și oglindit_nr - o variabilă care va conține oglinditul la final. Inițial, oglindit_nr este setat la 0. Apoi, funcția calculează oglinditul numărului nr prin preluarea ultimei cifre a acestuia (folosind operatorul modulo) și adăugarea acesteia la sfârșitul variabilei oglindit_nr (prin înmulțirea cu 10 și adunarea cu ultima cifră). Acest proces se repetă până când toate cifrele numărului nr au fost preluate și adăugate la oglindit_nr.&lt;br /&gt;
&lt;br /&gt;
În secțiunea de cod if __name__ == &#039;__main__&#039;: este introdusă o valoare de test pentru nr (în cazul de față, 12345). Se inițializează și variabila oglindit_nr la 0. În continuare, se verifică dacă nr îndeplinește restricțiile impuse prin apelul funcției validare(nr). Dacă acesta este adevărat, se afișează un mesaj corespunzător și se calculează oglinditul numărului nr prin apelul funcției oglindit(nr, oglindit_nr), care actualizează variabila oglindit_nr. În caz contrar, se afișează un alt mesaj care indică faptul că datele introduse nu corespund restricțiilor impuse.&lt;/div&gt;</summary>
		<author><name>Cuceu Andrei</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=0017_-_Suma_divizorilor_2&amp;diff=5715</id>
		<title>0017 - Suma divizorilor 2</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=0017_-_Suma_divizorilor_2&amp;diff=5715"/>
		<updated>2023-04-30T16:23:03Z</updated>

		<summary type="html">&lt;p&gt;Cuceu Andrei: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Cerință==&lt;br /&gt;
Să se scrie o funcție Python care să determine suma divizorilor unui număr natural transmis ca parametru. Funcția întoarce rezultatul prin intermediul unui parametru de ieşire.&lt;br /&gt;
&lt;br /&gt;
==Date de intrare==  &lt;br /&gt;
*&#039;&#039;&#039;number&#039;&#039;&#039; - un număr natural nenul mai mic decât &#039;&#039;&#039;2000000000&#039;&#039;&#039; pentru care se calculează suma divizorilor&lt;br /&gt;
*&#039;&#039;&#039;div_sum&#039;&#039;&#039; - valoarea calculată a sumei divizorilor, inițial setată la &#039;&#039;&#039;0&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Date de ieșire==&lt;br /&gt;
*&#039;&#039;&#039;div_sum&#039;&#039;&#039; - suma divizorilor numărului dat ca intrare, calculată de funcția sum_div&lt;br /&gt;
&lt;br /&gt;
==Restricții de precizări==&lt;br /&gt;
*Numele funcției va fi &#039;&#039;&#039;sum_div&#039;&#039;&#039;&lt;br /&gt;
*Funcția va avea doi parametri, reprezentând numărul pentru care se calculează suma &lt;br /&gt;
*divizorilor,respectiv valoarea calculată&lt;br /&gt;
*Valorile celor doi parametri vor fi numere naturale nenule mai mici decât &#039;&#039;&#039;2000000000&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Exemplu==&lt;br /&gt;
&lt;br /&gt;
;Intrare&lt;br /&gt;
&lt;br /&gt;
:12&lt;br /&gt;
&lt;br /&gt;
;Ieșire&lt;br /&gt;
:28&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Important==&lt;br /&gt;
Soluţia propusă va conţine doar definiţia funcţiei cerute. Prezenţa în soluţie a altor instrucţiuni poate duce erori de compilare sau de execuţie care vor avea ca efect depunctarea soluţiei.&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;quot;1&amp;quot; start=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
def validare(n, result):&lt;br /&gt;
    return 0 &amp;lt; int(n), int(result) &amp;lt; 2000000000&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def sum_div(n, result):&lt;br /&gt;
    result = 0&lt;br /&gt;
    for i in range(1, n + 1):&lt;br /&gt;
        if n % i == 0:&lt;br /&gt;
            result += i&lt;br /&gt;
    return result&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    n = input(&amp;quot;Introduceți un număr: &amp;quot;)&lt;br /&gt;
    result = 0&lt;br /&gt;
    if validare(n, result):&lt;br /&gt;
        n = int(n)&lt;br /&gt;
        print(&amp;quot;Datele introduse corespund restricțiilor impuse&amp;quot;)&lt;br /&gt;
        print(f&amp;quot;Suma divizorilor lui {n} este: {sum_div(n, result)}&amp;quot;)&lt;br /&gt;
    else:&lt;br /&gt;
        print(&amp;quot;Datele introduse nu corespund restricțiilor impuse&amp;quot;)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Explicatii==&lt;br /&gt;
&lt;br /&gt;
Acest cod reprezintă o implementare a funcției sum_div descrisă anterior și include și o funcție validare pentru a verifica dacă datele de intrare respectă restricțiile impuse în enunț.&lt;br /&gt;
&lt;br /&gt;
Funcția sum_div primește două parametri: n reprezentând numărul pentru care trebuie să calculeze suma divizorilor și result reprezentând valoarea calculată a sumei divizorilor, inițial setată la 0. În interiorul acestei funcții, se calculează suma divizorilor lui n prin iterarea prin numerele de la 1 la n și adunarea tuturor divizorilor lui n.&lt;br /&gt;
&lt;br /&gt;
Funcția validare primește doi parametri: n și result. În această funcție, se verifică dacă n este un număr natural nenul mai mic decât 2000000000 și dacă result este mai mic decât 2000000000.&lt;br /&gt;
&lt;br /&gt;
În cadrul programului principal, utilizatorul este întâi întrebat să introducă un număr. Apoi, se verifică dacă datele de intrare sunt valide utilizând funcția validare. Dacă datele sunt valide, programul afișează suma divizorilor numărului introdus de utilizator, calculată utilizând funcția sum_div. În caz contrar, programul afișează un mesaj de eroare.&lt;/div&gt;</summary>
		<author><name>Cuceu Andrei</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=4182_-_bac_secventa&amp;diff=5714</id>
		<title>4182 - bac secventa</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=4182_-_bac_secventa&amp;diff=5714"/>
		<updated>2023-04-30T16:10:41Z</updated>

		<summary type="html">&lt;p&gt;Cuceu Andrei: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Cerința==&lt;br /&gt;
&lt;br /&gt;
Subprogramul &#039;&#039;&#039;secventa&#039;&#039;&#039; are un singur parametru, &#039;&#039;&#039;n&#039;&#039;&#039;, prin care primește un număr natural, în care nu există secvențe de mai mult de două cifre identice aflate pe poziții consecutive. Subprogramul înlocuiește în &#039;&#039;&#039;n&#039;&#039;&#039; fiecare secvență &#039;&#039;&#039;22&#039;&#039;&#039; cu câte o secvență &#039;&#039;&#039;20&#039;&#039;&#039; și furnizează, prin același parametru, numărul obținut. Dacă nu se înlocuiește nicio secvență, subprogramul furnizează numărul nemodificat. Scrieți definiția completă a subprogramului.&lt;br /&gt;
&lt;br /&gt;
==Date de intrare== &lt;br /&gt;
Un singur număr natural &#039;&#039;&#039;n (10 ≤ n &amp;lt; 1.000.000.000)&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==Date de ieșire==&lt;br /&gt;
Numărul obținut după înlocuirea fiecărei secvențe &#039;&#039;&#039;22 &#039;&#039;&#039;cu câte o secvență &#039;&#039;&#039;20&#039;&#039;&#039;. Dacă nu se face nicio înlocuire, funcția va returna numărul inițial &#039;&#039;&#039;n&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==Restricții și precizări==&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;10 ≤ n &amp;lt; 1.000.000.000&#039;&#039;&#039;&lt;br /&gt;
*Numele funcției va fi &#039;&#039;&#039;secventa&#039;&#039;&#039;&lt;br /&gt;
*Funcția va primi un singur parametru, numărul&#039;&#039;&#039;n&#039;&#039;&#039;, iar la finalul funcției &#039;&#039;&#039;n&#039;&#039;&#039;va avea valoarea cerută.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Exemplu==&lt;br /&gt;
Dacă &#039;&#039;&#039;n=202233228&#039;&#039;&#039;, atunci, după apel, &#039;&#039;&#039;n=202033208&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==Important==&lt;br /&gt;
&lt;br /&gt;
Soluția propusă va conține doar definiția funcției cerute. Prezența în soluție a altor instrucțiuni poate duce la erori de compilare sau de execuție care vor avea ca efect depunctarea soluției.&lt;br /&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;quot;1&amp;quot; start=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
def validate_input(input_str):&lt;br /&gt;
    try:&lt;br /&gt;
        n = int(input_str)&lt;br /&gt;
        if 10 &amp;lt;= n &amp;lt; 1_000_000_000:&lt;br /&gt;
            return True, n&lt;br /&gt;
        else:&lt;br /&gt;
            return False, &amp;quot;Numărul trebuie să fie între 10 și 999.999.999.&amp;quot;&lt;br /&gt;
    except ValueError:&lt;br /&gt;
        return False, &amp;quot;Introduceți un număr natural valid.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def secventa(n):&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    Funcția înlocuiește în numărul natural dat fiecare secvență de două cifre&lt;br /&gt;
    consecutive egale și diferite de zero cu o secvență de două cifre&lt;br /&gt;
    formate din prima cifră a secvenței și zero. Returnează numărul modificat.&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    # Convertim numărul în șir de caractere pentru a putea manipula cifrele individual&lt;br /&gt;
    n_str = str(n)&lt;br /&gt;
    i = 0&lt;br /&gt;
    # Parcurgem șirul de la stânga la dreapta&lt;br /&gt;
    while i &amp;lt; len(n_str) - 1:&lt;br /&gt;
        # Dacă găsim o secvență de două cifre consecutive egale și diferite de zero&lt;br /&gt;
        if n_str[i] == n_str[i + 1] != &amp;quot;0&amp;quot;:&lt;br /&gt;
            # Înlocuim secvența cu prima cifră a secvenței urmată de zero&lt;br /&gt;
            n_str = n_str[:i] + n_str[i] + &amp;quot;0&amp;quot; + n_str[i + 2:]&lt;br /&gt;
            i += 1  # Mutăm cursorul cu o poziție înainte pentru a evita procesarea secvenței din nou&lt;br /&gt;
        i += 1  # Mutăm cursorul&lt;br /&gt;
def main():&lt;br /&gt;
    # Citim input-ul de la utilizator și validăm intrarea&lt;br /&gt;
    input_valid = False&lt;br /&gt;
    while not input_valid:&lt;br /&gt;
        input_str = input(&amp;quot;Introduceți un număr natural între 10 și 999.999.999: &amp;quot;)&lt;br /&gt;
        input_valid, n = validate_input(input_str)&lt;br /&gt;
        if not input_valid:&lt;br /&gt;
            print(n)&lt;br /&gt;
    &lt;br /&gt;
    # Aplicăm funcția de înlocuire a secvențelor&lt;br /&gt;
    n_modificat = secventa(n)&lt;br /&gt;
    print(f&amp;quot;Numărul modificat este: {n_modificat}&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    main()&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
==Explicatii== &lt;br /&gt;
În prima funcție, validate_input(input_str), se încearcă conversia input-ului la un număr întreg folosind funcția int(). În cazul în care conversia este reușită, se verifică dacă numărul respectă restricțiile impuse, adică să fie între 10 și 999.999.999. În caz contrar, funcția returnează o valoare booleană False și un mesaj corespunzător pentru a indica utilizatorului că numărul introdus nu este valid. În cazul în care conversia nu este posibilă, funcția returnează tot False și un mesaj corespunzător.&lt;br /&gt;
&lt;br /&gt;
A doua funcție, secventa(n), primește ca argument un număr natural, n, și începe prin a converti numărul într-un șir de caractere pentru a putea manipula cifrele individual. Aceasta parcurge șirul caracter cu caracter, de la stânga la dreapta, și verifică dacă există o secvență de două cifre consecutive egale și diferite de zero. Dacă găsește o astfel de secvență, înlocuiește acea secvență cu prima cifră a secvenței urmată de un zero. Astfel, se elimină secvențele de cifre egale și se adaugă un zero între cifrele diferite. În final, funcția returnează numărul modificat.&lt;br /&gt;
&lt;br /&gt;
În blocul if __name__ == &amp;quot;__main__&amp;quot;: se citește un număr natural de la utilizator folosind funcția input(), se verifică dacă numărul este valid folosind funcția validate_input(input_str), și în caz afirmativ, se aplică funcția secventa(n) asupra acestuia și se afișează rezultatul obținut. În caz contrar, se afișează mesajul de eroare corespunzător.&lt;/div&gt;</summary>
		<author><name>Cuceu Andrei</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=3119_-_Impare_Bac&amp;diff=5712</id>
		<title>3119 - Impare Bac</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=3119_-_Impare_Bac&amp;diff=5712"/>
		<updated>2023-04-30T16:00:53Z</updated>

		<summary type="html">&lt;p&gt;Cuceu Andrei: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Cerință==&lt;br /&gt;
&lt;br /&gt;
Subprogramul &#039;&#039;&#039;Impare&#039;&#039;&#039; are un singur parametru, &#039;&#039;&#039;n&#039;&#039;&#039;, prin care primește un număr natural. Subprogramul înlocuiește fiecare cifră impară a lui &#039;&#039;&#039;n&#039;&#039;&#039; cu cea mai mare cifră pară strict mai mică decât ea (astfel cifra &#039;&#039;&#039;1&#039;&#039;&#039; se înlocuieşte cu cifra &#039;&#039;&#039;0&#039;&#039;&#039;, cifra &#039;&#039;&#039;3&#039;&#039;&#039; cu cifra &#039;&#039;&#039;2&#039;&#039;&#039; etc.) și furnizează numărul obținut tot prin parametrul &#039;&#039;&#039;n&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Scrieți definiția completă a subprogramului.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Date de intrare==  &lt;br /&gt;
Un număr natural &#039;&#039;&#039;n, cu &#039;&#039;&#039;1 ≤ n ≤ 1.000.000.000&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Date de ieșire==&lt;br /&gt;
Numărul obținut prin înlocuirea fiecărei cifre impare a lui n cu cea mai mare cifră pară strict mai mică decât ea. Rezultatul va fi returnat prin parametrul &#039;&#039;&#039;n&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==Restricții de precizări==&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;≤ n ≤ 1.000.000.000&#039;&#039;&#039;&lt;br /&gt;
*Numele funcției va fi &#039;&#039;&#039;Impare&#039;&#039;&#039;&lt;br /&gt;
*Funcția va primi un singur parametru, numărul &#039;&#039;&#039;n&#039;&#039;&#039;, iar la finalul funcției &#039;&#039;&#039;n&#039;&#039;&#039; va avea valoarea cerută.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Exemplu==&lt;br /&gt;
&lt;br /&gt;
Dacă &#039;&#039;&#039;n=235690&#039;&#039;&#039;, atunci, după apel, &#039;&#039;&#039;n=224680&#039;&#039;&#039;, iar dacă &#039;&#039;&#039;n=15690&#039;&#039;&#039;, atunci, după apel, &#039;&#039;&#039;n=4680&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Important==&lt;br /&gt;
&lt;br /&gt;
Soluţia propusă va conţine doar definiţia funcţiei cerute. Prezenţa în soluţie a altor instrucţiuni poate duce erori de compilare sau de execuţie care vor avea ca efect depunctarea soluţiei.&lt;br /&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;quot;1&amp;quot; start=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
def validare(n):&lt;br /&gt;
    if n &amp;lt; 1 or n &amp;gt; 1000000000:&lt;br /&gt;
        return False&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
def impare(n):&lt;br /&gt;
    cifre = list(str(n))&lt;br /&gt;
    for i in range(len(cifre)):&lt;br /&gt;
        if int(cifre[i]) % 2 != 0:&lt;br /&gt;
            cifre[i] = str(int(cifre[i]) - 1)&lt;br /&gt;
            j = i - 1&lt;br /&gt;
            while j &amp;gt;= 0 and int(cifre[j]) == 8:&lt;br /&gt;
                j -= 1&lt;br /&gt;
            if j &amp;gt;= 0:&lt;br /&gt;
                cifre[j] = str(int(cifre[j]) + 2)&lt;br /&gt;
    n = int(&amp;quot;&amp;quot;.join(cifre))&lt;br /&gt;
    return n&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    n = int(input(&amp;quot;Introduceti numarul: &amp;quot;))&lt;br /&gt;
    if validare(n):&lt;br /&gt;
        n = Impare(n)&lt;br /&gt;
        print(&amp;quot;Numarul inlocuit: &amp;quot;, n)&lt;br /&gt;
    else:&lt;br /&gt;
        print(&amp;quot;Numarul introdus nu respecta restrictiile.&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Explicatii== &lt;br /&gt;
&lt;br /&gt;
Funcția Impare(n) primește un număr întreg n și returnează același număr, dar înlocuiește cifrele impare cu cea mai mare cifră pară, strict mai mică decât cifra impară înlocuită.&lt;br /&gt;
&lt;br /&gt;
Pentru a face această înlocuire, funcția transformă numărul n într-o listă de cifre cu ajutorul funcției list(str(n)). Apoi, parcurge lista de cifre și verifică dacă fiecare cifră este impară.&lt;br /&gt;
&lt;br /&gt;
Dacă cifra este impară, aceasta este înlocuită cu cea mai mare cifră pară, mai mică decât cifra impară înlocuită. Mai precis, se scade 1 din cifra impară și se caută cea mai mare cifră pară strict mai mică decât cifra impară înlocuită, parcurgând lista în sens invers.&lt;br /&gt;
&lt;br /&gt;
La final, funcția reconstruiește numărul original din lista de cifre prin concatenarea acestora cu ajutorul funcției &amp;quot; &amp;quot;.join(cifre)) și transformă string-ul obținut înapoi într-un număr întreg prin intermediul funcției int().&lt;br /&gt;
&lt;br /&gt;
Funcția validare(n) verifică dacă numărul n se încadrează în intervalul permis, și anume între 1 și 1000000000.&lt;br /&gt;
&lt;br /&gt;
În cadrul blocului if __name__ == &amp;quot;__main__&amp;quot;:, se citește un număr de la tastatură și se verifică dacă respectă restricțiile prin intermediul funcției validare(n). În caz afirmativ, se apelează funcția Impare(n) și se afișează rezultatul obținut, altfel se afișează un mesaj corespunzător.&lt;/div&gt;</summary>
		<author><name>Cuceu Andrei</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=2995_-_Finserare&amp;diff=5711</id>
		<title>2995 - Finserare</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=2995_-_Finserare&amp;diff=5711"/>
		<updated>2023-04-30T15:48:01Z</updated>

		<summary type="html">&lt;p&gt;Cuceu Andrei: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Cerință==&lt;br /&gt;
Scrieți funcția inserare care primește ca parametru un număr natural n și furnizează prin intermediul aceluiași parametru numărul obținut din n prin inserarea, între oricare două cifre alăturate ale sale, a valorii absolute a diferenței acestora.&lt;br /&gt;
&lt;br /&gt;
==Date de intrare==  &lt;br /&gt;
Un număr natural &#039;&#039;&#039;n&#039;&#039;&#039; între &#039;&#039;&#039;10&#039;&#039;&#039; și &#039;&#039;&#039;99999&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Date de ieșire==&lt;br /&gt;
&lt;br /&gt;
 Numărul obținut prin inserarea, între oricare două cifre alăturate ale lui n, a valorii absolute a diferenței acestora.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Restricții de precizări==&lt;br /&gt;
*&#039;&#039;&#039;10 ≤ n ≤ 99999&#039;&#039;&#039;&lt;br /&gt;
*Puteți apela funcția matematică &#039;&#039;&#039;abs&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==Exemplul 1==&lt;br /&gt;
Dacă &#039;&#039;&#039;n = 7255&#039;&#039;&#039;, atunci, după apelul &#039;&#039;&#039;inserare(n)&#039;&#039;&#039; valoarea lui n va fi &#039;&#039;&#039;7523505&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==Important==&lt;br /&gt;
Soluţia propusă va conţine doar definiţia funcţiei cerute. Prezenţa în soluţie a altor instrucţiuni poate duce erori de compilare sau de execuţie care vor avea ca efect depunctarea soluţiei.&lt;br /&gt;
&lt;br /&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;quot;1&amp;quot; start=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
def validare(n):&lt;br /&gt;
    return 10 &amp;lt;= int(n) &amp;lt;= 99999&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def inserare(n):&lt;br /&gt;
    n_str = str(n)&lt;br /&gt;
    result = n_str[0]&lt;br /&gt;
    for i in range(1, len(n_str)):&lt;br /&gt;
        diff = abs(int(n_str[i]) - int(n_str[i - 1]))&lt;br /&gt;
        result += str(diff) + n_str[i]&lt;br /&gt;
    return int(result)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    n = input(&amp;quot;Introduceți un număr natural: &amp;quot;)&lt;br /&gt;
    if validare(n):&lt;br /&gt;
        n = int(n)&lt;br /&gt;
        print(&amp;quot;Datele introduse corespund restricțiilor impuse&amp;quot;)&lt;br /&gt;
        n = inserare(n)&lt;br /&gt;
        print(n)&lt;br /&gt;
    else:&lt;br /&gt;
        print(&amp;quot;Datele introduse nu corespund restricțiilor impuse&amp;quot;)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Cuceu Andrei</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=0864_-_CifMinMax&amp;diff=5710</id>
		<title>0864 - CifMinMax</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=0864_-_CifMinMax&amp;diff=5710"/>
		<updated>2023-04-30T15:46:29Z</updated>

		<summary type="html">&lt;p&gt;Cuceu Andrei: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Cerință==&lt;br /&gt;
Să se scrie o funcție Python care să determine cea mai mare și cea mai mică cifră a unui număr natural transmis ca parametru. Funcția va întoarce rezultatele prin intermediul unor parametri de ieşire.&lt;br /&gt;
&lt;br /&gt;
==Date de intrare==  &lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;numar&#039;&#039;&#039; - un număr natural pentru care se vor determina cea mai mare și cea mai mică cifră. Acesta trebuie să fie mai mic decât &#039;&#039;&#039;2.000.000.000&#039;&#039;&#039;.&lt;br /&gt;
*&#039;&#039;&#039;cif_max&#039;&#039;&#039; - o referință la o variabilă în care funcția va stoca cea mai mare cifră a numărului numar.&lt;br /&gt;
*&#039;&#039;&#039;cif_min&#039;&#039;&#039; - o referință la o variabilă în care funcția va stoca cea mai mică cifră a numărului numar.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Date de ieșire==&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;cif_max&#039;&#039;&#039; - cea mai mare cifră a numărului numar.&lt;br /&gt;
*&#039;&#039;&#039;cif_min&#039;&#039;&#039; - cea mai mică cifră a numărului numar.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Restricții de precizări==&lt;br /&gt;
*Numele funcției va fi &#039;&#039;&#039;cifminmax&#039;&#039;&#039;&lt;br /&gt;
*Funcția va avea trei parametri: primul parametru reprezintă numărul pentru care se calculează valorile cerute; al doilea parametru va reprezenta cifra maximă, iar al treilea va reprezenta cifra minimă&lt;br /&gt;
*numărul pentru care se calculează cele doua valori va fi mai mic decât &#039;&#039;&#039;2.000.000.000&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Important==&lt;br /&gt;
Soluţia propusă va conţine doar definiţia funcţiei cerute. Prezenţa în soluţie a altor instrucţiuni poate duce erori de compilare sau de execuţie care vor avea ca efect depunctarea soluţiei.&lt;br /&gt;
&lt;br /&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;quot;1&amp;quot; start=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
def validare(n):&lt;br /&gt;
    return 0 &amp;lt;= int(n) &amp;lt; 2_000_000_000&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def cifminmax(numar, cifra_maxima, cifra_minima):&lt;br /&gt;
    cifra_maxima = 0&lt;br /&gt;
    cifra_minima = 9&lt;br /&gt;
&lt;br /&gt;
    while numar &amp;gt; 0:&lt;br /&gt;
        cifra_curenta = numar % 10&lt;br /&gt;
&lt;br /&gt;
        if cifra_curenta &amp;gt; cifra_maxima:&lt;br /&gt;
            cifra_maxima = cifra_curenta&lt;br /&gt;
&lt;br /&gt;
        if cifra_curenta &amp;lt; cifra_minima:&lt;br /&gt;
            cifra_minima = cifra_curenta&lt;br /&gt;
&lt;br /&gt;
        numar //= 10&lt;br /&gt;
&lt;br /&gt;
    return cifra_maxima, cifra_minima&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    numar = input(&amp;quot;Introduceti un numar pozitiv si mai mic decat 2.000.000.000: &amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    if validare(numar):&lt;br /&gt;
        numar = int(numar)&lt;br /&gt;
        print(&amp;quot;Datele introduse corespund restricțiilor impuse&amp;quot;)&lt;br /&gt;
        cifra_maxima, cifra_minima = cifminmax(numar, 0, 9)&lt;br /&gt;
        print(f&amp;quot;Cea mai mare cifra a numarului {numar} este {cifra_maxima}.&amp;quot;)&lt;br /&gt;
        print(f&amp;quot;Cea mai mica cifra a numarului {numar} este {cifra_minima}.&amp;quot;)&lt;br /&gt;
    else:&lt;br /&gt;
        print(&amp;quot;Datele introduse nu corespund restricțiilor impuse&amp;quot;)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Explicatii== &lt;br /&gt;
&lt;br /&gt;
Acesta este un program Python care implementează funcția cifminmax descrisă anterior. Programul începe prin definirea unei funcții de validare care verifică dacă numărul introdus de utilizator se încadrează în restricțiile impuse (adica sa fie pozitiv și mai mic decât 2.000.000.000).&lt;br /&gt;
&lt;br /&gt;
Funcția cifminmax primește ca parametri: numar, cifra_maxima și cifra_minima. cifra_maxima și cifra_minima sunt inițializate în interiorul funcției cu 0 și 9, deoarece sunt inițial cele mai mici și cele mai mari cifre posibile.&lt;br /&gt;
&lt;br /&gt;
Apoi, programul folosește o buclă while pentru a itera prin fiecare cifră a numărului numar, începând cu ultima cifră (adica cifra unitatilor) și mergând către cifra cu cea mai mare putere (adică cifra cea mai semnificativă). În fiecare iterație, programul stochează cifra curentă într-o variabilă numită cifra_curenta.&lt;br /&gt;
&lt;br /&gt;
Programul apoi verifică dacă cifra_curenta este mai mare decât cifra_maxima. Dacă da, atunci cifra_maxima este actualizată cu cifra_curenta. În mod similar, dacă cifra_curenta este mai mică decât cifra_minima, atunci cifra_minima este actualizată cu cifra_curenta.&lt;br /&gt;
&lt;br /&gt;
După ce bucla while se încheie, programul returnează cele două valori cifra_maxima și cifra_minima.&lt;br /&gt;
&lt;br /&gt;
În secțiunea if __name__ == &#039;__main__&#039;:, programul primește inputul utilizatorului prin intermediul funcției input(), apoi verifică dacă numărul introdus este valid folosind funcția validare. Dacă numărul este valid, programul îl convertește într-un integer și calculează cifra maximă și cea minimă folosind funcția cifminmax. În cele din urmă, programul afișează cele două valori de ieșire pentru utilizator.&lt;/div&gt;</summary>
		<author><name>Cuceu Andrei</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=0911_-_Cifre6&amp;diff=5709</id>
		<title>0911 - Cifre6</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=0911_-_Cifre6&amp;diff=5709"/>
		<updated>2023-04-30T15:40:03Z</updated>

		<summary type="html">&lt;p&gt;Cuceu Andrei: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Cerință==&lt;br /&gt;
Să se scrie o funcție Python care primește ca parametri două numere &#039;&#039;&#039;n&#039;&#039;&#039; și &#039;&#039;&#039;k&#039;&#039;&#039; și determină cel mai mare număr care poate fi scris cu &#039;&#039;&#039;k&#039;&#039;&#039; cifre ale lui &#039;&#039;&#039;n&#039;&#039;&#039;. Funcția va întoarce rezultatul prin intermediul unui parametru de ieşire.&lt;br /&gt;
&lt;br /&gt;
==Date de intrare==&lt;br /&gt;
&lt;br /&gt;
Datele de intrare trebuie să fie două numere întregi nenule, &#039;&#039;&#039;n&#039;&#039;&#039; și &#039;&#039;&#039;k&#039;&#039;&#039;, cu restricția ca ambele să fie mai mici decât &#039;&#039;&#039;2.000.000.000&#039;&#039;&#039; și ca n să aibă cel puțin &#039;&#039;&#039;k&#039;&#039;&#039; cifre.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Date de ieșire==&lt;br /&gt;
&lt;br /&gt;
Datele de ieșire trebuie să fie cel mai mare număr care poate fi scris cu &#039;&#039;&#039;k&#039;&#039;&#039; cifre ale lui &#039;&#039;&#039;n&#039;&#039;&#039; și trebuie să fie întors prin intermediul unui parametru de ieșire al funcției.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Restricții de precizări==&lt;br /&gt;
*Numele funcției va fi &#039;&#039;&#039;numar&#039;&#039;&#039;&lt;br /&gt;
*Funcția va avea trei parametri: primul parametru reprezintă numărul &#039;&#039;&#039;n&#039;&#039;&#039;; al doilea parametru reprezintă numărul &#039;&#039;&#039;k&#039;&#039;&#039;, iar al treilea va reprezenta valoarea determinată de funcție toți parametrii vor fi numere naturale nenule mai mici decât &#039;&#039;&#039;2.000.000.000&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;n&#039;&#039;&#039; va avea cel puțin &#039;&#039;&#039;k&#039;&#039;&#039; cifre&lt;br /&gt;
&lt;br /&gt;
==Exemplu==&lt;br /&gt;
===Exemplul 1===&lt;br /&gt;
;Dupa apelul&lt;br /&gt;
&lt;br /&gt;
:numar(27594 , 3 , x);&lt;br /&gt;
&lt;br /&gt;
;Ieșire&lt;br /&gt;
&lt;br /&gt;
:x va avea valoarea 975.&lt;br /&gt;
&lt;br /&gt;
==Important==&lt;br /&gt;
Soluţia propusă va conţine doar definiţia funcţiei cerute. Prezenţa în soluţie a altor instrucţiuni poate duce erori de compilare sau de execuţie care vor avea ca efect depunctarea soluţiei.&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;quot;1&amp;quot; start=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
def validare(n, k):&lt;br /&gt;
    return int(n) &amp;lt; 2_000_000_000 and len(n) &amp;gt;= int(k)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def numar(n, k, numar_maxim):&lt;br /&gt;
    cifre = sorted(str(n), reverse=True)  # Sortează cifrele lui n în ordine descrescătoare&lt;br /&gt;
    numar_maxim = int(&#039;&#039;.join(cifre[:k]))  # Concatenează primele k cifre și le transformă în int&lt;br /&gt;
    return numar_maxim  # Returnează numărul maxim&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    n = 27594&lt;br /&gt;
    k = 3&lt;br /&gt;
    x = 0&lt;br /&gt;
    if validare(str(n), k):&lt;br /&gt;
        print(&amp;quot;Datele de intrare corespund restricțiilor impuse.&amp;quot;)&lt;br /&gt;
        n, k = int(n), int(k)&lt;br /&gt;
        numar_maxim = numar(n, k, x)&lt;br /&gt;
        print(&amp;quot;Cel mai mare numar ce poate fi scris cu&amp;quot;, k, &amp;quot;cifre ale lui&amp;quot;, n, &amp;quot;este&amp;quot;, numar_maxim)&lt;br /&gt;
    else:&lt;br /&gt;
        print(&amp;quot;Datele de intrare nu corespund restricțiilor impuse.&amp;quot;)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Explicatii== &lt;br /&gt;
Acesta este un cod Python care implementează cerințele specificate în problema de programare.&lt;br /&gt;
&lt;br /&gt;
Funcția &amp;quot;validare&amp;quot; verifică dacă valorile pentru n și k sunt conforme cu restricțiile impuse. Dacă n este mai mare sau egal cu 2 miliarde sau lungimea sa este mai mică decât k, funcția va returna &amp;quot;False&amp;quot;, altfel va returna &amp;quot;True&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Funcția &amp;quot;numar&amp;quot; primește trei parametri: n, k și numar_maxim, unde numar_maxim este parametrul de ieșire care va fi folosit pentru a stoca numărul maxim. Funcția sortează cifrele lui n în ordine descrescătoare, concatenând apoi primele k cifre și transformându-le într-un intreg, pe care îl stochează în variabila numar_maxim. Funcția returnează apoi numar_maxim.&lt;br /&gt;
&lt;br /&gt;
În &amp;quot;if name == &#039;main&#039;&amp;quot; sunt datele de intrare și este testată validitatea lor prin apelul funcției &amp;quot;validare&amp;quot;. Dacă datele sunt valide, se convertesc în int și se apelează funcția &amp;quot;numar&amp;quot;. Rezultatul este stocat în variabila numar_maxim și apoi afișat. Dacă datele nu sunt valide, este afișat un mesaj corespunzător.&lt;/div&gt;</summary>
		<author><name>Cuceu Andrei</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=0910_-_KPrefix&amp;diff=5708</id>
		<title>0910 - KPrefix</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=0910_-_KPrefix&amp;diff=5708"/>
		<updated>2023-04-30T15:35:53Z</updated>

		<summary type="html">&lt;p&gt;Cuceu Andrei: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Cerință==&lt;br /&gt;
Să se scrie o funcție Python care primește ca parametri două numere &#039;&#039;&#039;n&#039;&#039;&#039; și &#039;&#039;&#039;k&#039;&#039;&#039; și determină numărul format din primele &#039;&#039;&#039;k&#039;&#039;&#039; cifre ale lui &#039;&#039;&#039;n&#039;&#039;&#039;. Funcția va întoarce rezultatul prin intermediul unui parametru de ieşire.&lt;br /&gt;
&lt;br /&gt;
==Date de intrare== &lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;n&#039;&#039;&#039;, un număr natural mai mic decât &#039;&#039;&#039;2.000.000.000&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;k&#039;&#039;&#039;, un număr natural mai mic sau egal cu numărul de cifre al lui &#039;&#039;&#039;n&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Date de ieșire== &lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;numar_k&#039;&#039;&#039;, un număr natural format din primele &#039;&#039;&#039;k&#039;&#039;&#039; cifre ale lui &#039;&#039;&#039;n&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Restricții de precizări==&lt;br /&gt;
*Numele funcției va fi &#039;&#039;&#039;prefix&#039;&#039;&#039;&lt;br /&gt;
*Funcția va avea trei parametri: primul parametru reprezintă numărul n;al doilea parametru reprezintă numărul &#039;&#039;&#039;k&#039;&#039;&#039;; iar al treilea va reprezenta valoarea determinată de funcție&lt;br /&gt;
*&#039;&#039;&#039;n&#039;&#039;&#039; va fi număr natural mai mic decât &#039;&#039;&#039;2.000.000.000&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;n&#039;&#039;&#039; va avea cel puțin &#039;&#039;&#039;k&#039;&#039;&#039; cifre&lt;br /&gt;
&lt;br /&gt;
==Exemplu==&lt;br /&gt;
===Exemplul 1===&lt;br /&gt;
;Dupa apelul&lt;br /&gt;
&lt;br /&gt;
:prefix(27594 , 3 , x);&lt;br /&gt;
&lt;br /&gt;
;Ieșire&lt;br /&gt;
&lt;br /&gt;
:x va avea valoarea 275.&lt;br /&gt;
&lt;br /&gt;
==Important==&lt;br /&gt;
Soluţia propusă va conţine doar definiţia funcţiei cerute. Prezenţa în soluţie a altor instrucţiuni poate duce erori de compilare sau de execuţie care vor avea ca efect depunctarea soluţiei.&lt;br /&gt;
&lt;br /&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;quot;1&amp;quot; start=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
def validare(n, k):&lt;br /&gt;
    return len(str(n)) &amp;gt;= int(k) and int(n) &amp;lt; 2_000_000_000&lt;br /&gt;
&lt;br /&gt;
def prefix(n, k, rezultat):&lt;br /&gt;
    numar_prefix = int(str(n)[:k])&lt;br /&gt;
    rezultat = numar_prefix&lt;br /&gt;
    return rezultat&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    n = 27594&lt;br /&gt;
    k = 3&lt;br /&gt;
    x = 0&lt;br /&gt;
    if validare(n, k):&lt;br /&gt;
        print(&amp;quot;Datele introduse corespund restricțiilor impuse.&amp;quot;)&lt;br /&gt;
        prefix(n, k, x)&lt;br /&gt;
    else:&lt;br /&gt;
        print(&amp;quot;Datele introduse nu corespund restricțiilor impuse.&amp;quot;)&lt;br /&gt;
  &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Explicatii==&lt;br /&gt;
&lt;br /&gt;
Acesta este un exemplu de implementare în Python a funcției prefix descrisă în cerință.&lt;br /&gt;
&lt;br /&gt;
Funcția validare este definită pentru a verifica dacă datele de intrare (n și k) corespund restricțiilor impuse în cerințe. Aceasta verifică dacă lungimea lui n este mai mare sau egală cu k și dacă n este mai mic decât 2.000.000.000.&lt;br /&gt;
&lt;br /&gt;
Funcția prefix primește numerele n și k și un parametru rezultat prin referință, pentru a putea returna valoarea determinată de funcție prin intermediul acestuia.&lt;br /&gt;
&lt;br /&gt;
În interiorul funcției, se extrage un număr format din primele k cifre ale lui n și se atribuie variabilei numar_prefix. Această valoare este apoi atribuită parametrului rezultat. În cele din urmă, valoarea parametrului rezultat este returnată de funcție.&lt;br /&gt;
&lt;br /&gt;
În codul principal, sunt definite valorile de test pentru n și k, iar apoi se verifică dacă acestea corespund restricțiilor cu ajutorul funcției validare. Dacă datele de intrare sunt valide, se apelează funcția prefix cu valorile de intrare și cu o variabilă goală x ca parametru rezultat. Valoarea returnată de funcția prefix este apoi afișată. Dacă datele de intrare nu sunt valide, se afișează un mesaj corespunzător.&lt;/div&gt;</summary>
		<author><name>Cuceu Andrei</name></author>
	</entry>
</feed>