<?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=Gabi</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=Gabi"/>
	<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/wiki/Special:Contributions/Gabi"/>
	<updated>2026-05-01T06:22:52Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.42.1</generator>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=1149_-_Exista_Prime_Div_Imp&amp;diff=7591</id>
		<title>1149 - Exista Prime Div Imp</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=1149_-_Exista_Prime_Div_Imp&amp;diff=7591"/>
		<updated>2023-12-03T16:49:14Z</updated>

		<summary type="html">&lt;p&gt;Gabi: Pagină nouă: = Cerinţa = Se dă un şir cu &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; elemente, numere naturale. Folosind metoda Divide et Impera să se verifice dacă în şir există elemente prime.  = Date de intrare = Programul citește de la tastatură numărul &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;, iar apoi cele &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; elemente ale şirului.  = Date de ieşire = Programul afișează pe ecran mesajul &amp;lt;code&amp;gt;DA&amp;lt;/code&amp;gt;, dacă şirul conţine elemente prime, respectiv &amp;lt;code&amp;gt;NU&amp;lt;/code&amp;gt; în caz contrar.  = Restricţii şi precizăr...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Cerinţa =&lt;br /&gt;
Se dă un şir cu &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; elemente, numere naturale. Folosind metoda Divide et Impera să se verifice dacă în şir există elemente prime.&lt;br /&gt;
&lt;br /&gt;
= Date de intrare =&lt;br /&gt;
Programul citește de la tastatură numărul &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;, iar apoi cele &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; elemente ale şirului.&lt;br /&gt;
&lt;br /&gt;
= Date de ieşire =&lt;br /&gt;
Programul afișează pe ecran mesajul &amp;lt;code&amp;gt;DA&amp;lt;/code&amp;gt;, dacă şirul conţine elemente prime, respectiv &amp;lt;code&amp;gt;NU&amp;lt;/code&amp;gt; în caz contrar.&lt;br /&gt;
&lt;br /&gt;
= Restricţii şi precizări =&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;1 ≤ n ≤ 200&amp;lt;/code&amp;gt;&lt;br /&gt;
* elementele şirului vor fi mai mici decât &amp;lt;code&amp;gt;1.000.000.000&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Exemplul 1 =&lt;br /&gt;
Date de intrare&lt;br /&gt;
 5&lt;br /&gt;
 21 8 6 10 8&lt;br /&gt;
Date de ieșire&lt;br /&gt;
 NU&lt;br /&gt;
&lt;br /&gt;
= Exemplul 2 =&lt;br /&gt;
Date de intrare&lt;br /&gt;
 2000&lt;br /&gt;
Date de ieșire&lt;br /&gt;
 Eroare: Numărul de elemente trebuie să fie între 1 și 200.&lt;br /&gt;
&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python3&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
def is_prime(num):&lt;br /&gt;
    if num &amp;lt; 2:&lt;br /&gt;
        return False&lt;br /&gt;
    for i in range(2, int(num ** 0.5) + 1):&lt;br /&gt;
        if num % i == 0:&lt;br /&gt;
            return False&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
def has_prime_elements(arr, start, end):&lt;br /&gt;
    if start == end:&lt;br /&gt;
        return is_prime(arr[start])&lt;br /&gt;
    &lt;br /&gt;
    mid = (start + end) // 2&lt;br /&gt;
&lt;br /&gt;
    left_has_prime = has_prime_elements(arr, start, mid)&lt;br /&gt;
    right_has_prime = has_prime_elements(arr, mid + 1, end)&lt;br /&gt;
&lt;br /&gt;
    return left_has_prime or right_has_prime&lt;br /&gt;
&lt;br /&gt;
def validate_input(n):&lt;br /&gt;
    if not (1 &amp;lt;= n &amp;lt;= 200):&lt;br /&gt;
        print(&amp;quot;Eroare: Numărul de elemente trebuie să fie între 1 și 200.&amp;quot;)&lt;br /&gt;
        exit()&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
    n = int(input(&amp;quot;Introduceți numărul de elemente: &amp;quot;))&lt;br /&gt;
    &lt;br /&gt;
    validate_input(n)&lt;br /&gt;
&lt;br /&gt;
    arr = []&lt;br /&gt;
&lt;br /&gt;
    for i in range(n):&lt;br /&gt;
        element = int(input(f&amp;quot;Introduceți elementul {i + 1}: &amp;quot;))&lt;br /&gt;
        arr.append(element)&lt;br /&gt;
&lt;br /&gt;
    if has_prime_elements(arr, 0, n - 1):&lt;br /&gt;
        print(&amp;quot;DA&amp;quot;)&lt;br /&gt;
    else:&lt;br /&gt;
        print(&amp;quot;NU&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    main()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Gabi</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=1018_-_Cnt_Impare&amp;diff=7590</id>
		<title>1018 - Cnt Impare</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=1018_-_Cnt_Impare&amp;diff=7590"/>
		<updated>2023-12-03T16:45:34Z</updated>

		<summary type="html">&lt;p&gt;Gabi: Pagină nouă: = Cerința = Se consideră un șir cu &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; elemente, numere naturale. Folosind metoda Divide et Impera, determinați câte elemente impare sunt în acest șir.  = Date de intrare = Programul citește de la tastatură numărul &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;, iar apoi cele &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; elemente ale șirului.  = Date de ieșire = Programul va afișa pe ecran numărul &amp;lt;code&amp;gt;C&amp;lt;/code&amp;gt;, reprezentând valoarea cerută.  = Restricții și precizări =  * &amp;lt;code&amp;gt;1 ≤ n ≤ 1000&amp;lt;/code&amp;gt; * el...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Cerința =&lt;br /&gt;
Se consideră un șir cu &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; elemente, numere naturale. Folosind metoda Divide et Impera, determinați câte elemente impare sunt în acest șir.&lt;br /&gt;
&lt;br /&gt;
= Date de intrare =&lt;br /&gt;
Programul citește de la tastatură numărul &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;, iar apoi cele &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; elemente ale șirului.&lt;br /&gt;
&lt;br /&gt;
= Date de ieșire =&lt;br /&gt;
Programul va afișa pe ecran numărul &amp;lt;code&amp;gt;C&amp;lt;/code&amp;gt;, reprezentând valoarea cerută.&lt;br /&gt;
&lt;br /&gt;
= Restricții și precizări =&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;1 ≤ n ≤ 1000&amp;lt;/code&amp;gt;&lt;br /&gt;
* elementele șirului vor fi mai mici decât &amp;lt;code&amp;gt;1.000.000&amp;lt;/code&amp;gt;&lt;br /&gt;
* se recomandă folosirea metodei Divide et Impera&lt;br /&gt;
&lt;br /&gt;
= Exemplul 1 =&lt;br /&gt;
Intrare&lt;br /&gt;
 6&lt;br /&gt;
 4 1 8 4 3 5 &lt;br /&gt;
Ieșire&lt;br /&gt;
 3&lt;br /&gt;
&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
Intrare&lt;br /&gt;
 1001&lt;br /&gt;
Ieșire&lt;br /&gt;
 Eroare: Numărul de elemente trebuie să fie între 1 și 1000.&lt;br /&gt;
&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python3&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
def verificare_restrictii(n, arr):&lt;br /&gt;
    # Verifică restricția 1: 1 ≤ n ≤ 1000&lt;br /&gt;
    if not (1 &amp;lt;= n &amp;lt;= 1000):&lt;br /&gt;
        print(&amp;quot;Eroare: Numărul de elemente trebuie să fie între 1 și 1000.&amp;quot;)&lt;br /&gt;
        return False&lt;br /&gt;
&lt;br /&gt;
    # Verifică restricția 2: Elementele șirului vor fi mai mici decât 1.000.000&lt;br /&gt;
    if any(x &amp;gt;= 1000000 for x in arr):&lt;br /&gt;
        print(&amp;quot;Eroare: Elementele șirului trebuie să fie mai mici decât 1.000.000.&amp;quot;)&lt;br /&gt;
        return False&lt;br /&gt;
&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
def numar_elemente_impare(arr, stanga, dreapta):&lt;br /&gt;
    if stanga == dreapta:&lt;br /&gt;
        return arr[stanga] % 2&lt;br /&gt;
&lt;br /&gt;
    mijloc = (stanga + dreapta) // 2&lt;br /&gt;
&lt;br /&gt;
    # Numără elementele impare în stânga și dreapta&lt;br /&gt;
    impare_stanga = numar_elemente_impare(arr, stanga, mijloc)&lt;br /&gt;
    impare_dreapta = numar_elemente_impare(arr, mijloc + 1, dreapta)&lt;br /&gt;
&lt;br /&gt;
    # Combină rezultatele&lt;br /&gt;
    return impare_stanga + impare_dreapta&lt;br /&gt;
&lt;br /&gt;
# Exemplu de folosire&lt;br /&gt;
n = int(input(&amp;quot;Introduceti numarul de elemente: &amp;quot;))&lt;br /&gt;
&lt;br /&gt;
# Iesirea dacă restricțiile nu sunt îndeplinite&lt;br /&gt;
if not verificare_restrictii(n, []):&lt;br /&gt;
    exit()&lt;br /&gt;
&lt;br /&gt;
# Citirea elementelor șirului&lt;br /&gt;
arr = list(map(int, input(&amp;quot;Introduceti elementele separate prin spatii: &amp;quot;).split()))&lt;br /&gt;
&lt;br /&gt;
# Iesirea dacă restricțiile nu sunt îndeplinite&lt;br /&gt;
if not verificare_restrictii(n, arr):&lt;br /&gt;
    exit()&lt;br /&gt;
&lt;br /&gt;
# Calculul numărului de elemente impare&lt;br /&gt;
rezultat = numar_elemente_impare(arr, 0, n - 1)&lt;br /&gt;
&lt;br /&gt;
# Afișarea rezultatului&lt;br /&gt;
print(rezultat)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Gabi</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=1150_-_Verif_Pare_Div_Imp&amp;diff=7589</id>
		<title>1150 - Verif Pare Div Imp</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=1150_-_Verif_Pare_Div_Imp&amp;diff=7589"/>
		<updated>2023-12-03T16:39:50Z</updated>

		<summary type="html">&lt;p&gt;Gabi: Pagină nouă: = Cerinţa = Se dă un şir cu &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; elemente, numere naturale. Folosind metoda Divide et Impera să se verifice dacă toate elementele şirului sunt pare.  = Date de intrare = Programul citește de la tastatură numărul &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;, iar apoi cele &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; elemente ale şirului, separate prin spaţii.  = Date de ieşire = Programul afișează pe ecran mesajul &amp;lt;code&amp;gt;DA&amp;lt;/code&amp;gt;, dacă toate elementele şirului sunt pare, respectiv &amp;lt;code&amp;gt;NU&amp;lt;/code&amp;gt; în caz contr...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Cerinţa =&lt;br /&gt;
Se dă un şir cu &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; elemente, numere naturale. Folosind metoda Divide et Impera să se verifice dacă toate elementele şirului sunt pare.&lt;br /&gt;
&lt;br /&gt;
= Date de intrare =&lt;br /&gt;
Programul citește de la tastatură numărul &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;, iar apoi cele &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; elemente ale şirului, separate prin spaţii.&lt;br /&gt;
&lt;br /&gt;
= Date de ieşire =&lt;br /&gt;
Programul afișează pe ecran mesajul &amp;lt;code&amp;gt;DA&amp;lt;/code&amp;gt;, dacă toate elementele şirului sunt pare, respectiv &amp;lt;code&amp;gt;NU&amp;lt;/code&amp;gt; în caz contrar.&lt;br /&gt;
&lt;br /&gt;
= Restricţii şi precizări =&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;1 ≤ n ≤ 100&amp;lt;/code&amp;gt;&lt;br /&gt;
* elementele şirului vor fi mai mici decât &amp;lt;code&amp;gt;10000&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Exemplul 1 =&lt;br /&gt;
Date de intrare&lt;br /&gt;
 5&lt;br /&gt;
 2 8 6 10 8&lt;br /&gt;
Date de ieșire&lt;br /&gt;
 DA&lt;br /&gt;
&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
Date de intrare&lt;br /&gt;
 101&lt;br /&gt;
Date de ieșire&lt;br /&gt;
 Eroare: Numărul de elemente trebuie să fie între 1 și 100.&lt;br /&gt;
&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python3&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
def verificare_restrictii(n, arr):&lt;br /&gt;
    # Verifică restricția 1: 1 ≤ n ≤ 100&lt;br /&gt;
    if not (1 &amp;lt;= n &amp;lt;= 100):&lt;br /&gt;
        print(&amp;quot;Eroare: Numărul de elemente trebuie să fie între 1 și 100.&amp;quot;)&lt;br /&gt;
        return False&lt;br /&gt;
&lt;br /&gt;
    # Verifică restricția 2: Elementele șirului vor fi mai mici decât 10000&lt;br /&gt;
    if any(x &amp;gt;= 10000 for x in arr):&lt;br /&gt;
        print(&amp;quot;Eroare: Elementele șirului trebuie să fie mai mici decât 10000.&amp;quot;)&lt;br /&gt;
        return False&lt;br /&gt;
&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
def toate_elementele_pare(arr, stanga, dreapta):&lt;br /&gt;
    if stanga == dreapta:&lt;br /&gt;
        return arr[stanga] % 2 == 0&lt;br /&gt;
&lt;br /&gt;
    mijloc = (stanga + dreapta) // 2&lt;br /&gt;
&lt;br /&gt;
    # Verifică în stânga și dreapta&lt;br /&gt;
    parte_stanga_pare = toate_elementele_pare(arr, stanga, mijloc)&lt;br /&gt;
    parte_dreapta_pare = toate_elementele_pare(arr, mijloc + 1, dreapta)&lt;br /&gt;
&lt;br /&gt;
    # Combină rezultatele&lt;br /&gt;
    return parte_stanga_pare and parte_dreapta_pare&lt;br /&gt;
&lt;br /&gt;
# Exemplu de folosire&lt;br /&gt;
n = int(input(&amp;quot;Introduceti numarul de elemente: &amp;quot;))&lt;br /&gt;
&lt;br /&gt;
# Iesirea dacă restricțiile nu sunt îndeplinite&lt;br /&gt;
if not (1 &amp;lt;= n &amp;lt;= 100):&lt;br /&gt;
    print(&amp;quot;Eroare: Numărul de elemente trebuie să fie între 1 și 100.&amp;quot;)&lt;br /&gt;
    exit()&lt;br /&gt;
&lt;br /&gt;
arr = list(map(int, input(&amp;quot;Introduceti elementele separate prin spatii: &amp;quot;).split()))&lt;br /&gt;
&lt;br /&gt;
# Iesirea dacă restricțiile nu sunt îndeplinite&lt;br /&gt;
if any(x &amp;gt;= 10000 for x in arr):&lt;br /&gt;
    print(&amp;quot;Eroare: Elementele șirului trebuie să fie mai mici decât 10000.&amp;quot;)&lt;br /&gt;
    exit()&lt;br /&gt;
&lt;br /&gt;
# Continuă cu verificarea dacă toate elementele sunt pare&lt;br /&gt;
rezultat = toate_elementele_pare(arr, 0, n - 1)&lt;br /&gt;
&lt;br /&gt;
# Afișează rezultatul&lt;br /&gt;
if rezultat:&lt;br /&gt;
    print(&amp;quot;DA, toate elementele sunt pare.&amp;quot;)&lt;br /&gt;
else:&lt;br /&gt;
    print(&amp;quot;NU, nu toate elementele sunt pare.&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Gabi</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=1020_-_Mat_Prim&amp;diff=7588</id>
		<title>1020 - Mat Prim</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=1020_-_Mat_Prim&amp;diff=7588"/>
		<updated>2023-12-03T16:32:02Z</updated>

		<summary type="html">&lt;p&gt;Gabi: Pagină nouă: = Cerința = Se consideră un șir cu &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; elemente, numere naturale. Folosind metoda Divide et Impera, determinați cel mai mare element prim din acest șir.  = Date de intrare = Programul citește de la tastatură numărul &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;, iar apoi cele &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; elemente ale șirului.  = Date de ieșire = Programul va afișa pe ecran numărul &amp;lt;code&amp;gt;M&amp;lt;/code&amp;gt;, cel mai mare element prim al șirului.  = Restricții și precizări =  * &amp;lt;code&amp;gt;1 ≤ n ≤ 1000&amp;lt;/code...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Cerința =&lt;br /&gt;
Se consideră un șir cu &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; elemente, numere naturale. Folosind metoda Divide et Impera, determinați cel mai mare element prim din acest șir.&lt;br /&gt;
&lt;br /&gt;
= Date de intrare =&lt;br /&gt;
Programul citește de la tastatură numărul &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;, iar apoi cele &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; elemente ale șirului.&lt;br /&gt;
&lt;br /&gt;
= Date de ieșire =&lt;br /&gt;
Programul va afișa pe ecran numărul &amp;lt;code&amp;gt;M&amp;lt;/code&amp;gt;, cel mai mare element prim al șirului.&lt;br /&gt;
&lt;br /&gt;
= Restricții și precizări =&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;1 ≤ n ≤ 1000&amp;lt;/code&amp;gt;&lt;br /&gt;
* elementele șirului vor fi mai mici decât &amp;lt;code&amp;gt;1.000.000&amp;lt;/code&amp;gt;&lt;br /&gt;
* se garantează că în șir apare cel puțin un element prim&lt;br /&gt;
* se recomandă folosirea metodei Divide et Impera&lt;br /&gt;
&lt;br /&gt;
= Exemplul 1 =&lt;br /&gt;
Intrare&lt;br /&gt;
 6&lt;br /&gt;
 4 1 8 4 3 5 &lt;br /&gt;
Ieșire&lt;br /&gt;
 5&lt;br /&gt;
&lt;br /&gt;
= Exemplul 2 =&lt;br /&gt;
Intrare&lt;br /&gt;
 4&lt;br /&gt;
 4 4 4 4 &lt;br /&gt;
Ieșire&lt;br /&gt;
 Eroare: În șir trebuie să existe cel puțin un element prim.&lt;br /&gt;
&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python3&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
def este_prim(numar):&lt;br /&gt;
    if numar &amp;lt; 2:&lt;br /&gt;
        return False&lt;br /&gt;
    for i in range(2, int(numar**0.5) + 1):&lt;br /&gt;
        if numar % i == 0:&lt;br /&gt;
            return False&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
def gaseste_cel_mai_mare_prim(sir, stanga, dreapta):&lt;br /&gt;
    if stanga == dreapta:&lt;br /&gt;
        return sir[stanga] if este_prim(sir[stanga]) else -1&lt;br /&gt;
&lt;br /&gt;
    mijloc = (stanga + dreapta) // 2&lt;br /&gt;
&lt;br /&gt;
    # Caută în stânga și dreapta&lt;br /&gt;
    cel_mai_mare_prim_stanga = gaseste_cel_mai_mare_prim(sir, stanga, mijloc)&lt;br /&gt;
    cel_mai_mare_prim_dreapta = gaseste_cel_mai_mare_prim(sir, mijloc + 1, dreapta)&lt;br /&gt;
&lt;br /&gt;
    # Combină rezultatele&lt;br /&gt;
    return max(cel_mai_mare_prim_stanga, cel_mai_mare_prim_dreapta)&lt;br /&gt;
&lt;br /&gt;
def verifica_restrictii(n, sir):&lt;br /&gt;
    # Verifică restricția 1: 1 ≤ n ≤ 1000&lt;br /&gt;
    if not (1 &amp;lt;= n &amp;lt;= 1000):&lt;br /&gt;
        print(&amp;quot;Eroare: Numărul de elemente trebuie să fie între 1 și 1000.&amp;quot;)&lt;br /&gt;
        return False&lt;br /&gt;
&lt;br /&gt;
    # Verifică restricția 2: Elementele șirului vor fi mai mici decât 1.000.000&lt;br /&gt;
    if any(x &amp;gt;= 1000000 for x in sir):&lt;br /&gt;
        print(&amp;quot;Eroare: Elementele șirului trebuie să fie mai mici decât 1.000.000.&amp;quot;)&lt;br /&gt;
        return False&lt;br /&gt;
&lt;br /&gt;
    # Verifică restricția 3: Se garantează că în șir apare cel puțin un element prim&lt;br /&gt;
    if all(not este_prim(x) for x in sir):&lt;br /&gt;
        print(&amp;quot;Eroare: În șir trebuie să existe cel puțin un element prim.&amp;quot;)&lt;br /&gt;
        return False&lt;br /&gt;
&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
    # Exemplu de folosire în funcția principală&lt;br /&gt;
    n = int(input(&amp;quot;Introduceti numarul de elemente: &amp;quot;))&lt;br /&gt;
    &lt;br /&gt;
    # Verifică restricțiile înainte de a continua&lt;br /&gt;
    if not verifica_restrictii(n, []):&lt;br /&gt;
        return&lt;br /&gt;
    &lt;br /&gt;
    sir = []&lt;br /&gt;
    for i in range(n):&lt;br /&gt;
        element = int(input(&amp;quot;Introduceti elementul {}: &amp;quot;.format(i + 1)))&lt;br /&gt;
        sir.append(element)&lt;br /&gt;
&lt;br /&gt;
    if verifica_restrictii(n, sir):&lt;br /&gt;
        rezultat = gaseste_cel_mai_mare_prim(sir, 0, n - 1)&lt;br /&gt;
        print(&amp;quot;Cel mai mare element prim din sir:&amp;quot;, rezultat)&lt;br /&gt;
&lt;br /&gt;
# Apelul funcției principale&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    main()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Gabi</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=1151_-_Verif_Egale_Div_Imp&amp;diff=7585</id>
		<title>1151 - Verif Egale Div Imp</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=1151_-_Verif_Egale_Div_Imp&amp;diff=7585"/>
		<updated>2023-12-03T15:30:40Z</updated>

		<summary type="html">&lt;p&gt;Gabi: Pagină nouă:  = Cerinţa = Se dă un vector cu &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; elemente numere naturale. Folosind metoda Divide et Impera să se verifice dacă toate elementele vectorului sunt egale.  = Date de intrare = Programul citește de la tastatură numărul &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;, apoi &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; numere naturale, reprezentând elementele vectorului.  = Date de ieşire = Programul afișează pe ecran mesajul &amp;lt;code&amp;gt;DA&amp;lt;/code&amp;gt;, dacă vectorul are toate elementele egale, sau &amp;lt;code&amp;gt;NU&amp;lt;/code&amp;gt;, în caz contra...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
= Cerinţa =&lt;br /&gt;
Se dă un vector cu &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; elemente numere naturale. Folosind metoda Divide et Impera să se verifice dacă toate elementele vectorului sunt egale.&lt;br /&gt;
&lt;br /&gt;
= Date de intrare =&lt;br /&gt;
Programul citește de la tastatură numărul &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;, apoi &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; numere naturale, reprezentând elementele vectorului.&lt;br /&gt;
&lt;br /&gt;
= Date de ieşire =&lt;br /&gt;
Programul afișează pe ecran mesajul &amp;lt;code&amp;gt;DA&amp;lt;/code&amp;gt;, dacă vectorul are toate elementele egale, sau &amp;lt;code&amp;gt;NU&amp;lt;/code&amp;gt;, în caz contrar.&lt;br /&gt;
&lt;br /&gt;
= Restricţii şi precizări =&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;1 ≤ n ≤ 500&amp;lt;/code&amp;gt;&lt;br /&gt;
* fiecare element al vectorului va avea cel mult patru cifre&lt;br /&gt;
&lt;br /&gt;
= Exemplul 1 =&lt;br /&gt;
Date de intrare&lt;br /&gt;
 7&lt;br /&gt;
 6 6 6 6 4 6 6 &lt;br /&gt;
Date de ieșire&lt;br /&gt;
 NU&lt;br /&gt;
&lt;br /&gt;
= Exemplul 2 =&lt;br /&gt;
Date de intrare&lt;br /&gt;
 501&lt;br /&gt;
Date de ieșire&lt;br /&gt;
 Numărul de elemente trebuie să fie între 1 și 500. Programul se încheie.&lt;br /&gt;
&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python3&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
def verifica_restrictii_n(n):&lt;br /&gt;
    if not 1 &amp;lt;= n &amp;lt;= 500:&lt;br /&gt;
        print(&amp;quot;Numărul de elemente trebuie să fie între 1 și 500. Programul se încheie.&amp;quot;)&lt;br /&gt;
        return False&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
def verifica_restrictii_element(element):&lt;br /&gt;
    if not 0 &amp;lt;= element &amp;lt; 10000:&lt;br /&gt;
        print(&amp;quot;Elementele vectorului trebuie să aibă cel mult patru cifre. Programul se încheie.&amp;quot;)&lt;br /&gt;
        return False&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
def are_toate_elementele_egale(arr, left, right):&lt;br /&gt;
    if left == right:&lt;br /&gt;
        return True  # Un singur element este întotdeauna &amp;quot;egal&amp;quot; cu el însuși&lt;br /&gt;
    &lt;br /&gt;
    mid = (left + right) // 2&lt;br /&gt;
    &lt;br /&gt;
    are_toate_left = are_toate_elementele_egale(arr, left, mid)&lt;br /&gt;
    are_toate_right = are_toate_elementele_egale(arr, mid + 1, right)&lt;br /&gt;
    &lt;br /&gt;
    return are_toate_left and are_toate_right and (arr[left] == arr[right])&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
    # Citim numărul de elemente&lt;br /&gt;
    n = int(input(&amp;quot;Introduceți numărul de elemente (1 ≤ n ≤ 500): &amp;quot;))&lt;br /&gt;
    &lt;br /&gt;
    # Verificăm restricția pentru n folosind funcția dedicată&lt;br /&gt;
    if not verifica_restrictii_n(n):&lt;br /&gt;
        return&lt;br /&gt;
    &lt;br /&gt;
    # Citim elementele vectorului&lt;br /&gt;
    arr = []&lt;br /&gt;
    for i in range(n):&lt;br /&gt;
        element = int(input(f&amp;quot;Introduceți elementul {i + 1} (elemente cu cel mult 4 cifre): &amp;quot;))&lt;br /&gt;
        &lt;br /&gt;
        # Verificăm restricția pentru elementele vectorului folosind funcția dedicată&lt;br /&gt;
        if not verifica_restrictii_element(element):&lt;br /&gt;
            return&lt;br /&gt;
        &lt;br /&gt;
        arr.append(element)&lt;br /&gt;
    &lt;br /&gt;
    # Verificăm și afișăm rezultatul&lt;br /&gt;
    rezultat = are_toate_elementele_egale(arr, 0, n - 1)&lt;br /&gt;
    if rezultat:&lt;br /&gt;
        print(&amp;quot;DA&amp;quot;)&lt;br /&gt;
    else:&lt;br /&gt;
        print(&amp;quot;NU&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    main()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Gabi</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=1019_-_Maxim_6&amp;diff=7584</id>
		<title>1019 - Maxim 6</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=1019_-_Maxim_6&amp;diff=7584"/>
		<updated>2023-12-03T15:23:02Z</updated>

		<summary type="html">&lt;p&gt;Gabi: Pagină nouă: = Cerința = Se consideră un șir cu &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; elemente, numere naturale. Folosind metoda Divide et Impera, determinați cel mai mare element din acest șir.  = Date de intrare = Programul citește de la tastatură numărul &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;, iar apoi cele &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; elemente ale șirului.  = Date de ieșire = Programul va afișa pe ecran numărul &amp;lt;code&amp;gt;M&amp;lt;/code&amp;gt;, cel mai mare element al șirului.  = Restricții și precizări =  * &amp;lt;code&amp;gt;1 ≤ n ≤ 1000&amp;lt;/code&amp;gt; * elemen...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Cerința =&lt;br /&gt;
Se consideră un șir cu &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; elemente, numere naturale. Folosind metoda Divide et Impera, determinați cel mai mare element din acest șir.&lt;br /&gt;
&lt;br /&gt;
= Date de intrare =&lt;br /&gt;
Programul citește de la tastatură numărul &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;, iar apoi cele &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; elemente ale șirului.&lt;br /&gt;
&lt;br /&gt;
= Date de ieșire =&lt;br /&gt;
Programul va afișa pe ecran numărul &amp;lt;code&amp;gt;M&amp;lt;/code&amp;gt;, cel mai mare element al șirului.&lt;br /&gt;
&lt;br /&gt;
= Restricții și precizări =&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;1 ≤ n ≤ 1000&amp;lt;/code&amp;gt;&lt;br /&gt;
* elementele șirului vor fi mai mici decât &amp;lt;code&amp;gt;1.000.000&amp;lt;/code&amp;gt;&lt;br /&gt;
* se recomandă folosirea metodei Divide et Impera&lt;br /&gt;
&lt;br /&gt;
= Exemplu1 =&lt;br /&gt;
Intrare&lt;br /&gt;
 6&lt;br /&gt;
 4 1 8 4 3 5 &lt;br /&gt;
Ieșire&lt;br /&gt;
 8&lt;br /&gt;
&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
Intrare&lt;br /&gt;
 1001&lt;br /&gt;
Ieșire&lt;br /&gt;
 Numărul de elemente trebuie să fie între 1 și 1000. Programul se încheie.&lt;br /&gt;
&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python3&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
def max_element_divide_conquer(arr, left, right):&lt;br /&gt;
    if left == right:&lt;br /&gt;
        return arr[left]&lt;br /&gt;
    &lt;br /&gt;
    mid = (left + right) // 2&lt;br /&gt;
    &lt;br /&gt;
    max_left = max_element_divide_conquer(arr, left, mid)&lt;br /&gt;
    max_right = max_element_divide_conquer(arr, mid + 1, right)&lt;br /&gt;
    &lt;br /&gt;
    return max(max_left, max_right)&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
    # Citim numărul de elemente&lt;br /&gt;
    n = int(input(&amp;quot;Introduceți numărul de elemente (1 &amp;lt;= n &amp;lt;= 1000): &amp;quot;))&lt;br /&gt;
    &lt;br /&gt;
    # Verificăm restricția pentru n&lt;br /&gt;
    if not 1 &amp;lt;= n &amp;lt;= 1000:&lt;br /&gt;
        print(&amp;quot;Numărul de elemente trebuie să fie între 1 și 1000. Programul se încheie.&amp;quot;)&lt;br /&gt;
        return&lt;br /&gt;
    &lt;br /&gt;
    # Citim elementele șirului&lt;br /&gt;
    arr = []&lt;br /&gt;
    for i in range(n):&lt;br /&gt;
        element = int(input(f&amp;quot;Introduceți elementul {i + 1} (elemente &amp;lt; 1.000.000): &amp;quot;))&lt;br /&gt;
        &lt;br /&gt;
        # Verificăm restricția pentru elementele șirului&lt;br /&gt;
        if not 0 &amp;lt;= element &amp;lt; 1000000:&lt;br /&gt;
            print(&amp;quot;Elementele șirului trebuie să fie mai mici decât 1.000.000. Programul se încheie.&amp;quot;)&lt;br /&gt;
            return&lt;br /&gt;
        &lt;br /&gt;
        arr.append(element)&lt;br /&gt;
    &lt;br /&gt;
    # Calculăm și afișăm rezultatul&lt;br /&gt;
    result = max_element_divide_conquer(arr, 0, n - 1)&lt;br /&gt;
    print(f&amp;quot;Cel mai mare element din șir este: {result}&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;/div&gt;</summary>
		<author><name>Gabi</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=2527_-_Hanoi&amp;diff=7583</id>
		<title>2527 - Hanoi</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=2527_-_Hanoi&amp;diff=7583"/>
		<updated>2023-12-03T15:07:46Z</updated>

		<summary type="html">&lt;p&gt;Gabi: Pagină nouă:  == Enunț == Turnurile din Hanoi este un joc matematic sau, dacă vreți, un puzzle. Este format din trei tije &amp;lt;code&amp;gt;A&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;B&amp;lt;/code&amp;gt; și &amp;lt;code&amp;gt;C&amp;lt;/code&amp;gt; și un număr variabil de discuri, de diferite diametre. Inițial discurile sunt așezate în ordine descrescătoare a diametrelor pe tija &amp;lt;code&amp;gt;A&amp;lt;/code&amp;gt;, de la vârf către bază, astfel încât să formeze un turn.  Scopul jocului este acela de a muta toate discurile de pe tija &amp;lt;code&amp;gt;A&amp;lt;/code&amp;gt; pe tija &amp;lt;code&amp;gt;C&amp;lt;/code&amp;gt;...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Enunț ==&lt;br /&gt;
Turnurile din Hanoi este un joc matematic sau, dacă vreți, un puzzle. Este format din trei tije &amp;lt;code&amp;gt;A&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;B&amp;lt;/code&amp;gt; și &amp;lt;code&amp;gt;C&amp;lt;/code&amp;gt; și un număr variabil de discuri, de diferite diametre. Inițial discurile sunt așezate în ordine descrescătoare a diametrelor pe tija &amp;lt;code&amp;gt;A&amp;lt;/code&amp;gt;, de la vârf către bază, astfel încât să formeze un turn.&lt;br /&gt;
&lt;br /&gt;
Scopul jocului este acela de a muta toate discurile de pe tija &amp;lt;code&amp;gt;A&amp;lt;/code&amp;gt; pe tija &amp;lt;code&amp;gt;C&amp;lt;/code&amp;gt; folosind ca tijă intermediară tija &amp;lt;code&amp;gt;B&amp;lt;/code&amp;gt;, respectând următoarele reguli:&lt;br /&gt;
&lt;br /&gt;
* la un moment dat doar un singur disc poate fi mutat&lt;br /&gt;
* fiecare mutare constă în luarea celui mai de sus disc de pe o tija și mutarea acestuia pe o altă tijă&lt;br /&gt;
* un disc cu diametrul mai mare nu poate fi poziționat deasupra unui disc cu diametrul mai mic.&lt;br /&gt;
&lt;br /&gt;
= Cerința =&lt;br /&gt;
Dacă se cunoaște numărul &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; de discuri aflate pe tija &amp;lt;code&amp;gt;A&amp;lt;/code&amp;gt;, să se determine șirul mutărilor necesare pentru ca toate discurile să fie mutate pe tija &amp;lt;code&amp;gt;C&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= Date de intrare =&lt;br /&gt;
Fișierul de intrare &amp;lt;code&amp;gt;hanoiIN.txt&amp;lt;/code&amp;gt; conține pe prima linie numărul natural nenul &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;, ce reprezintă numărul de discuri aflat pe tija &amp;lt;code&amp;gt;A&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= Date de ieșire =&lt;br /&gt;
Fișierul de ieșire &amp;lt;code&amp;gt;hanoiOUT.txt&amp;lt;/code&amp;gt; va conține pe prima linie numărul &amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt;, ce reprezintă numărul minim de mutări ce se efectuează. Pe următoarele &amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt; linii vor fi scrise mutările sub forma: &#039;&#039;tija sursă-&amp;gt;tija destinație&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
= Restricții și precizări =&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;1 ≤ n ≤ 15&amp;lt;/code&amp;gt;&lt;br /&gt;
* mutările vor fi scrise câte una pe linie, fără spații&lt;br /&gt;
&lt;br /&gt;
= Exemplul 1 =&lt;br /&gt;
&amp;lt;code&amp;gt;hanoiIN.txt&amp;lt;/code&amp;gt;&lt;br /&gt;
 2&lt;br /&gt;
&amp;lt;code&amp;gt;hanoiOUt.txt&amp;lt;/code&amp;gt;&lt;br /&gt;
 3&lt;br /&gt;
 A-&amp;gt;B&lt;br /&gt;
 A-&amp;gt;C&lt;br /&gt;
 B-&amp;gt;C&lt;br /&gt;
&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
&amp;lt;code&amp;gt;hanoiIN.txt&amp;lt;/code&amp;gt;&lt;br /&gt;
 16&lt;br /&gt;
&amp;lt;code&amp;gt;hanoiOUt.txt&amp;lt;/code&amp;gt;&lt;br /&gt;
 Restrictii neindeplinite.&lt;br /&gt;
&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python3&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
def verifica_restrictii(n):&lt;br /&gt;
    return 1 &amp;lt;= n &amp;lt;= 15&lt;br /&gt;
&lt;br /&gt;
def hanoi(n, sursa, intermediar, destinatie, mutari):&lt;br /&gt;
    if n == 1:&lt;br /&gt;
        mutari.append(f&amp;quot;{sursa}-&amp;gt;{destinatie}&amp;quot;)&lt;br /&gt;
    else:&lt;br /&gt;
        hanoi(n-1, sursa, destinatie, intermediar, mutari)&lt;br /&gt;
        mutari.append(f&amp;quot;{sursa}-&amp;gt;{destinatie}&amp;quot;)&lt;br /&gt;
        hanoi(n-1, intermediar, sursa, destinatie, mutari)&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
    with open(&amp;quot;hanoiIN.txt&amp;quot;, &amp;quot;r&amp;quot;) as f_input, open(&amp;quot;hanoiOUT.txt&amp;quot;, &amp;quot;w&amp;quot;) as f_output:&lt;br /&gt;
        n = int(f_input.readline().strip())&lt;br /&gt;
&lt;br /&gt;
        if not verifica_restrictii(n):&lt;br /&gt;
            f_output.write(&amp;quot;Restrictii neindeplinite.\n&amp;quot;)&lt;br /&gt;
            return&lt;br /&gt;
&lt;br /&gt;
        mutari = []&lt;br /&gt;
        hanoi(n, &#039;A&#039;, &#039;B&#039;, &#039;C&#039;, mutari)&lt;br /&gt;
&lt;br /&gt;
        f_output.write(str(len(mutari)) + &amp;quot;\n&amp;quot;)&lt;br /&gt;
        for mutare in mutari:&lt;br /&gt;
            f_output.write(mutare + &amp;quot;\n&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    main()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Gabi</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=1023_-_Cmmdc_3&amp;diff=7579</id>
		<title>1023 - Cmmdc 3</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=1023_-_Cmmdc_3&amp;diff=7579"/>
		<updated>2023-12-03T14:41:01Z</updated>

		<summary type="html">&lt;p&gt;Gabi: Pagină nouă: == Cerinţa == Se dă un sir cu &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; elemente, numere naturale nenule. Folosind metoda Divide et Impera, determinaţi cel mai mare divizor comun al elementelor acestui șir.  == Date de intrare == Programul citește de la tastatură numărul &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;, iar cele &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; elemente ale șirului.  == Date de ieşire == Programul afișează pe ecran numărul &amp;lt;code&amp;gt;X&amp;lt;/code&amp;gt;, reprezentând cel mai mare divizor comun al elementelor.  = Restricţii şi precizări...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cerinţa ==&lt;br /&gt;
Se dă un sir cu &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; elemente, numere naturale nenule. Folosind metoda Divide et Impera, determinaţi cel mai mare divizor comun al elementelor acestui șir.&lt;br /&gt;
&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Programul citește de la tastatură numărul &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;, iar cele &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; elemente ale șirului.&lt;br /&gt;
&lt;br /&gt;
== Date de ieşire ==&lt;br /&gt;
Programul afișează pe ecran numărul &amp;lt;code&amp;gt;X&amp;lt;/code&amp;gt;, reprezentând cel mai mare divizor comun al elementelor.&lt;br /&gt;
&lt;br /&gt;
= Restricţii şi precizări =&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;1 ≤ n ≤ 1000&amp;lt;/code&amp;gt;&lt;br /&gt;
* elementele șirului vor avea cel mult &amp;lt;code&amp;gt;9&amp;lt;/code&amp;gt; cifre&lt;br /&gt;
* se recomandă folosirea metodei Divide et Impera&lt;br /&gt;
*&lt;br /&gt;
&lt;br /&gt;
= Exemplul 1 =&lt;br /&gt;
Date de intrare&lt;br /&gt;
 7&lt;br /&gt;
 18 54 24 42 108 60 30&lt;br /&gt;
Date de ieșire&lt;br /&gt;
 6&lt;br /&gt;
&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
Date de intrare&lt;br /&gt;
 1001&lt;br /&gt;
 123&lt;br /&gt;
Numerele introduse nu respectă restricțiile.&amp;lt;syntaxhighlight lang=&amp;quot;python3&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
def verifica_restrictii(n, arr):&lt;br /&gt;
    if 1 &amp;lt;= n &amp;lt;= 1000 and all(1 &amp;lt;= num &amp;lt;= 10**9 for num in arr):&lt;br /&gt;
        return True&lt;br /&gt;
    return False&lt;br /&gt;
&lt;br /&gt;
def cmmd(x, y):&lt;br /&gt;
    while y:&lt;br /&gt;
        x, y = y, x % y&lt;br /&gt;
    return x&lt;br /&gt;
&lt;br /&gt;
def cmmd_divide_et_impera(arr, start, end):&lt;br /&gt;
    if start == end:&lt;br /&gt;
        return arr[start]&lt;br /&gt;
    else:&lt;br /&gt;
        mid = (start + end) // 2&lt;br /&gt;
        left_cmmd = cmmd_divide_et_impera(arr, start, mid)&lt;br /&gt;
        right_cmmd = cmmd_divide_et_impera(arr, mid + 1, end)&lt;br /&gt;
        return cmmd(left_cmmd, right_cmmd)&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
    n = int(input(&amp;quot;Introduceți numărul n: &amp;quot;))&lt;br /&gt;
    arr = list(map(int, input(&amp;quot;Introduceți cele n elemente separate prin spațiu: &amp;quot;).split()))&lt;br /&gt;
&lt;br /&gt;
    if verifica_restrictii(n, arr):&lt;br /&gt;
        rezultat = cmmd_divide_et_impera(arr, 0, n - 1)&lt;br /&gt;
        print(&amp;quot;Cel mai mare divizor comun:&amp;quot;, rezultat)&lt;br /&gt;
    else:&lt;br /&gt;
        print(&amp;quot;Numerele introduse nu respectă restricțiile.&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    main()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Gabi</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=1865_-_Summit&amp;diff=7578</id>
		<title>1865 - Summit</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=1865_-_Summit&amp;diff=7578"/>
		<updated>2023-12-03T14:34:49Z</updated>

		<summary type="html">&lt;p&gt;Gabi: Pagină nouă: == Cerința == Se dă un şir &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; format din &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; numere naturale nenule. Pentru fiecare element &amp;lt;code&amp;gt;xi&amp;lt;/code&amp;gt; din şir să se verifice dacă există un număr &amp;lt;code&amp;gt;k&amp;lt;/code&amp;gt; astfel încât elementul &amp;lt;code&amp;gt;xi&amp;lt;/code&amp;gt; să fie egal cu suma primelor &amp;lt;code&amp;gt;k&amp;lt;/code&amp;gt; elemente din şir.  == Date de intrare == Fișierul de intrare &amp;lt;code&amp;gt;summitIN.txt&amp;lt;/code&amp;gt; conține pe prima linie numărul &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;, iar pe a doua linie &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; numere naturale separat...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cerința ==&lt;br /&gt;
Se dă un şir &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; format din &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; numere naturale nenule. Pentru fiecare element &amp;lt;code&amp;gt;xi&amp;lt;/code&amp;gt; din şir să se verifice dacă există un număr &amp;lt;code&amp;gt;k&amp;lt;/code&amp;gt; astfel încât elementul &amp;lt;code&amp;gt;xi&amp;lt;/code&amp;gt; să fie egal cu suma primelor &amp;lt;code&amp;gt;k&amp;lt;/code&amp;gt; elemente din şir.&lt;br /&gt;
&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Fișierul de intrare &amp;lt;code&amp;gt;summitIN.txt&amp;lt;/code&amp;gt; conține pe prima linie numărul &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;, iar pe a doua linie &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; numere naturale separate prin spații.&lt;br /&gt;
&lt;br /&gt;
== Date de ieșire ==&lt;br /&gt;
Fișierul de ieșire &amp;lt;code&amp;gt;summitOUT.txt&amp;lt;/code&amp;gt; va conține pe linia &amp;lt;code&amp;gt;i&amp;lt;/code&amp;gt; valoarea &amp;lt;code&amp;gt;k&amp;lt;/code&amp;gt; dacă elementul &amp;lt;code&amp;gt;xi&amp;lt;/code&amp;gt; este egal cu suma primelor &amp;lt;code&amp;gt;k&amp;lt;/code&amp;gt; elemente din şir, sau &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; în caz contrar, pentru fiecare &amp;lt;code&amp;gt;i&amp;lt;/code&amp;gt; de la &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; la &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Restricții și precizări ==&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;2 ≤ n ≤ 1.000.000&amp;lt;/code&amp;gt;&lt;br /&gt;
* numerele de pe a doua linie a fișierului de intrare vor fi mai mici decât &amp;lt;code&amp;gt;2.000.000.000&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
&amp;lt;code&amp;gt;summitIN.txt&amp;lt;/code&amp;gt;&lt;br /&gt;
 3&lt;br /&gt;
 1 2 3&lt;br /&gt;
&amp;lt;code&amp;gt;summitOUT.txt&amp;lt;/code&amp;gt;&lt;br /&gt;
 1&lt;br /&gt;
 0&lt;br /&gt;
 2&lt;br /&gt;
&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
&amp;lt;code&amp;gt;summitIN.txt&amp;lt;/code&amp;gt;&lt;br /&gt;
 1&lt;br /&gt;
 1&lt;br /&gt;
Numerele introduse nu respectă restricțiile.&lt;br /&gt;
&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python3&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
def verifica_restrictii(n, nums):&lt;br /&gt;
    return 2 &amp;lt;= n &amp;lt;= 1000000 and all(0 &amp;lt; x &amp;lt; 2000000000 for x in nums)&lt;br /&gt;
&lt;br /&gt;
def verifica_summit(n, nums):&lt;br /&gt;
    suma_partiala = [0]  # Lista pentru suma parțială, începând cu 0&lt;br /&gt;
&lt;br /&gt;
    for i in range(n):&lt;br /&gt;
        suma_partiala.append(suma_partiala[-1] + nums[i])&lt;br /&gt;
&lt;br /&gt;
    rezultate = []&lt;br /&gt;
    for i in range(n):&lt;br /&gt;
        k = 0&lt;br /&gt;
        while k &amp;lt; n and suma_partiala[k] &amp;lt; nums[i]:&lt;br /&gt;
            k += 1&lt;br /&gt;
&lt;br /&gt;
        if k &amp;lt; n and suma_partiala[k] == nums[i]:&lt;br /&gt;
            rezultate.append(k)&lt;br /&gt;
        else:&lt;br /&gt;
            rezultate.append(0)&lt;br /&gt;
&lt;br /&gt;
    return rezultate&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
    with open(&amp;quot;summitIN.txt&amp;quot;, &amp;quot;r&amp;quot;) as f:&lt;br /&gt;
        n = int(f.readline())&lt;br /&gt;
        nums = list(map(int, f.readline().split()))&lt;br /&gt;
&lt;br /&gt;
    if verifica_restrictii(n, nums):&lt;br /&gt;
        rezultate = verifica_summit(n, nums)&lt;br /&gt;
&lt;br /&gt;
        with open(&amp;quot;summitOUT.txt&amp;quot;, &amp;quot;w&amp;quot;) as f:&lt;br /&gt;
            for rez in rezultate:&lt;br /&gt;
                f.write(str(rez) + &amp;quot;\n&amp;quot;)&lt;br /&gt;
    else:&lt;br /&gt;
        print(&amp;quot;Numerele introduse nu respectă restricțiile.&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    main()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Gabi</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=3260_-_Invers&amp;diff=7576</id>
		<title>3260 - Invers</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=3260_-_Invers&amp;diff=7576"/>
		<updated>2023-12-03T14:23:32Z</updated>

		<summary type="html">&lt;p&gt;Gabi: Pagină nouă: == Cerința == Veșnicul Gigel vrea să dea la Facultatea de Informatică din Iași pentru că e #ceaMaiTare. De asta s-a apucat de probleme pe pbinfo și a dat peste următoarea problema ce i-a plăcut atât de mult încât vă provoacă și pe voi să o rezolvați:  Se dă funcția  și o valoare . Știind că funcția este strict crescătoare pe intervalul , se cere să se gasească pentru ce  avem că  (aproximare cu 8 zecimale).  == Date de intrare == Se citește de l...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cerința ==&lt;br /&gt;
Veșnicul Gigel vrea să dea la Facultatea de Informatică din Iași pentru că e #ceaMaiTare. De asta s-a apucat de probleme pe pbinfo și a dat peste următoarea problema ce i-a plăcut atât de mult încât vă provoacă și pe voi să o rezolvați:&lt;br /&gt;
&lt;br /&gt;
Se dă funcția  și o valoare . Știind că funcția este strict crescătoare pe intervalul , se cere să se gasească pentru ce  avem că  (aproximare cu 8 zecimale).&lt;br /&gt;
&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Se citește de la tastatura valoarea .&lt;br /&gt;
&lt;br /&gt;
== Date de ieșire ==&lt;br /&gt;
0&amp;lt;= x &amp;lt;1 afișat cu o aproximare de 8 zecimale precise.&lt;br /&gt;
&lt;br /&gt;
== Restricții și precizări ==&lt;br /&gt;
&lt;br /&gt;
* pentru orice 0&amp;lt;=y&amp;lt;2.7 vom avea ca 0&amp;lt;=x&amp;lt;1 &lt;br /&gt;
&lt;br /&gt;
== Exemplu 1 ==&lt;br /&gt;
Intrare 1.34&lt;br /&gt;
&lt;br /&gt;
Ieșire 0.35083179&lt;br /&gt;
&lt;br /&gt;
== Exemplu 2 ==&lt;br /&gt;
Intrare 3&lt;br /&gt;
&lt;br /&gt;
Ieșire Valoarea lui y nu respectă restricțiile.&amp;lt;syntaxhighlight lang=&amp;quot;python3&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
import math&lt;br /&gt;
&lt;br /&gt;
def f(x):&lt;br /&gt;
    return math.sin(x) + math.sin(2*x) + x&lt;br /&gt;
&lt;br /&gt;
def verifica_restrictie(y):&lt;br /&gt;
    return 0 &amp;lt;= y &amp;lt;= 2.7&lt;br /&gt;
&lt;br /&gt;
def aproximare_bisectie(y):&lt;br /&gt;
    epsilon = 1e-8  # Precizia dorită&lt;br /&gt;
    a, b = 0, 1  # Intervalul [0, 1)&lt;br /&gt;
&lt;br /&gt;
    while b - a &amp;gt; epsilon:&lt;br /&gt;
        mid = (a + b) / 2&lt;br /&gt;
        if f(mid) &amp;lt; y:&lt;br /&gt;
            a = mid&lt;br /&gt;
        else:&lt;br /&gt;
            b = mid&lt;br /&gt;
&lt;br /&gt;
    return (a + b) / 2&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
    y = float(input(&amp;quot;Introduceți valoarea y: &amp;quot;))&lt;br /&gt;
    &lt;br /&gt;
    if verifica_restrictie(y):&lt;br /&gt;
        rezultat = aproximare_bisectie(y)&lt;br /&gt;
        print(f&amp;quot;{rezultat:.8f}&amp;quot;)&lt;br /&gt;
    else:&lt;br /&gt;
        print(&amp;quot;Valoarea lui y nu respectă restricțiile.&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    main()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Gabi</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=0968_-_Copac&amp;diff=7575</id>
		<title>0968 - Copac</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=0968_-_Copac&amp;diff=7575"/>
		<updated>2023-12-03T13:40:52Z</updated>

		<summary type="html">&lt;p&gt;Gabi: Pagină nouă: == Enunț == În grădina din palatul lui Făt-Frumos a răsărit tulpina fragedă a unui copăcel. Impresionat de gingăşia lui, Făt-Frumos dădu fuga la izvorul fermecat şi aduse nişte apă vie cu care udă copăcelul.  A doua zi, surpriză mare! Copăcelului i-au crescut trei ramuri minunate: una de argint, una de aur şi alta de rubin. Făt-Frumos, fericit, dădu din nou fuga la izvorul fermecat şi aduse apă vie pentru copăcel.  A treia zi, surpriză şi mai mare!...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Enunț ==&lt;br /&gt;
În grădina din palatul lui Făt-Frumos a răsărit tulpina fragedă a unui copăcel. Impresionat de gingăşia lui, Făt-Frumos dădu fuga la izvorul fermecat şi aduse nişte apă vie cu care udă copăcelul.&lt;br /&gt;
&lt;br /&gt;
A doua zi, surpriză mare! Copăcelului i-au crescut trei ramuri minunate: una de argint, una de aur şi alta de rubin. Făt-Frumos, fericit, dădu din nou fuga la izvorul fermecat şi aduse apă vie pentru copăcel.&lt;br /&gt;
&lt;br /&gt;
A treia zi, surpriză şi mai mare! Ramura de argint s-a transformat în trei ramuri noi: una de argint, una de aur şi una de rubin. Ramura de aur s-a transformat în două ramuri noi: una de argint şi alta de rubin. Ramura de rubin s-a transformat în două ramuri noi: una de aur şi una de rubin.&lt;br /&gt;
&lt;br /&gt;
Şi în a patra zi, Făt-Frumos observă că fiecare ramură de argint s-a transformat în trei ramuri noi: una de argint, una de aur şi una de rubin; fiecare ramură de aur s-a transformat în două ramuri noi: una de argint şi alta de rubin; fiecare ramură de rubin s-a transformat în două ramuri noi: una de aur şi una de rubin.&lt;br /&gt;
&lt;br /&gt;
Copăcelul era mai bogat şi mai frumos. Strălucea ca un soare, lumina lui ajungând până la palatul Zmeului-Zmeilor.&lt;br /&gt;
&lt;br /&gt;
Zmeul-Zmeilor se îndreptă ca fulgerul spre palatul lui Făt-Frumos. Vroia copacul. Dar cum să facă? Dacă s-ar lupta cu Făt-Frumos, ar pierde lupta. Mereu s-a întâmplat aşa. Se gândi, se gândi… şi exact când a ajuns în faţa lui Făt-Frumos i-a venit o idee spunându-i acestuia:&lt;br /&gt;
&lt;br /&gt;
- Făt-Frumos, dacă îmi vei spune câte ramuri de argint, câte ramuri de aur şi câte ramuri de rubin va avea copacul peste &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; zile începând din ziua asta, atunci copacul va rămâne al tău. De nu, al meu va fi!&lt;br /&gt;
&lt;br /&gt;
Ştiind că ramurile copacului se transformă şi în zilele următoare la fel ca în ziua a patra, ajutaţi-l pe Făt-Frumos să găsească răspunsul la întrebare astfel încât copacul să rămână al lui.&lt;br /&gt;
&lt;br /&gt;
== Cerința ==&lt;br /&gt;
Scrieţi un program care citeşte un număr natural &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; şi care să determine şi să afişeze trei numere naturale reprezentând numărul de ramuri de argint, respectiv de aur şi de rubin pe care le va avea copacul peste &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; zile, în acestă ordine.&lt;br /&gt;
&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Programul citește de la tastatură numărul &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Date de ieșire ==&lt;br /&gt;
Programul va afișa pe ecran cele trei numere, în ordinea cerută, separate prin exact un spațiu.&lt;br /&gt;
&lt;br /&gt;
== Restricții și precizări ==&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;0 ≤ n ≤ 45&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
Intrare  2&lt;br /&gt;
&lt;br /&gt;
Ieșire 20 25 36&lt;br /&gt;
&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
Intrare 46&lt;br /&gt;
&lt;br /&gt;
Ieșire Numărul introdus nu respectă restricțiile (0 ≤ n ≤ 45).&lt;br /&gt;
&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python3&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
def verifica_restrictii(n):&lt;br /&gt;
    return 0 &amp;lt;= n &amp;lt;= 45&lt;br /&gt;
&lt;br /&gt;
def calculeaza_ramuri_copac(n):&lt;br /&gt;
    if not verifica_restrictii(n):&lt;br /&gt;
        print(&amp;quot;Numărul introdus nu respectă restricțiile (0 ≤ n ≤ 45).&amp;quot;)&lt;br /&gt;
        return&lt;br /&gt;
&lt;br /&gt;
    if n == 0:&lt;br /&gt;
        return 4, 5, 7&lt;br /&gt;
&lt;br /&gt;
    ramuri_argint = 4&lt;br /&gt;
    ramuri_aur = 5&lt;br /&gt;
    ramuri_rubin = 7&lt;br /&gt;
&lt;br /&gt;
    zi = 1&lt;br /&gt;
&lt;br /&gt;
    while zi &amp;lt;= n:&lt;br /&gt;
        ramuri_argint_nou = ramuri_argint + ramuri_aur&lt;br /&gt;
        ramuri_aur_nou = ramuri_argint + ramuri_rubin&lt;br /&gt;
        ramuri_rubin_nou = ramuri_argint + ramuri_aur + ramuri_rubin&lt;br /&gt;
&lt;br /&gt;
        ramuri_argint, ramuri_aur, ramuri_rubin = ramuri_argint_nou, ramuri_aur_nou, ramuri_rubin_nou&lt;br /&gt;
&lt;br /&gt;
        zi += 1&lt;br /&gt;
&lt;br /&gt;
    return ramuri_argint, ramuri_aur, ramuri_rubin&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
    n = int(input(&amp;quot;Introduceți numărul n (0 ≤ n ≤ 45): &amp;quot;))&lt;br /&gt;
    rezultate = calculeaza_ramuri_copac(n)&lt;br /&gt;
    if rezultate:&lt;br /&gt;
        print(*rezultate)  # Afiseaza cele trei numere separate printr-un spatiu&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    main()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Gabi</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=0806_-_Generare_sir&amp;diff=7570</id>
		<title>0806 - Generare sir</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=0806_-_Generare_sir&amp;diff=7570"/>
		<updated>2023-12-03T12:57:43Z</updated>

		<summary type="html">&lt;p&gt;Gabi: Pagină nouă: ==Cerinţa== Se consideră şirul definit mai jos:  fn= 1  daca n =1   fn= 1 + f(n-1)  daca n e par  fn= 1 + 2*f(n-2)  dacă n altfel  în care nu există doi termeni cu aceeași paritate aflați pe poziții consecutive: &amp;lt;code&amp;gt;1, 2, 3, 4, 7, 8, 15, 16 ....&amp;lt;/code&amp;gt;.  Pentru un număr natural &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt;, termen al şirului dat, se cere să se afișeze pe ecran, în ordine strict descrescătoare, separați prin câte un spațiu, toţi termenii şirului care sunt mai mici sau...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Cerinţa==&lt;br /&gt;
Se consideră şirul definit mai jos:&lt;br /&gt;
&lt;br /&gt;
fn= 1  daca n =1 &lt;br /&gt;
&lt;br /&gt;
fn= 1 + f(n-1)  daca n e par&lt;br /&gt;
&lt;br /&gt;
fn= 1 + 2*f(n-2)  dacă n altfel&lt;br /&gt;
&lt;br /&gt;
în care nu există doi termeni cu aceeași paritate aflați pe poziții consecutive: &amp;lt;code&amp;gt;1, 2, 3, 4, 7, 8, 15, 16 ....&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Pentru un număr natural &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt;, termen al şirului dat, se cere să se afișeze pe ecran, în ordine strict descrescătoare, separați prin câte un spațiu, toţi termenii şirului care sunt mai mici sau egali cu &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Date de intrare==&lt;br /&gt;
Programul citeşte de la tastatură numărul &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Date de ieşire==&lt;br /&gt;
Programul va afişa pe ecran în ordine strict descrescătoare, separați prin câte un spațiu, toţi termenii şirului care sunt mai mici sau egali cu &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Exemplul 1==&lt;br /&gt;
Date intrare 15&lt;br /&gt;
&lt;br /&gt;
Date iesire 15 8 7 4 3 2 1&lt;br /&gt;
&lt;br /&gt;
==Exemplul 2==&lt;br /&gt;
Date intrare 0&lt;br /&gt;
&lt;br /&gt;
Numărul introdus nu respectă restricțiile.&lt;br /&gt;
&lt;br /&gt;
==Rezolvare==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python3&amp;quot;&amp;gt;&lt;br /&gt;
def verifica_restrictii(x):&lt;br /&gt;
    return 1 &amp;lt;= x &amp;lt;= 1000000000&lt;br /&gt;
&lt;br /&gt;
def genereaza_si_afiseaza_sir(x):&lt;br /&gt;
    def f(n):&lt;br /&gt;
        if n == 1:&lt;br /&gt;
            return 1&lt;br /&gt;
        elif n % 2 == 0:&lt;br /&gt;
            return 1 + f(n - 1)&lt;br /&gt;
        else:&lt;br /&gt;
            return 1 + 2 * f(n - 2)&lt;br /&gt;
&lt;br /&gt;
    termeni_sir = []&lt;br /&gt;
&lt;br /&gt;
    # Generăm șirul până când obținem un termen mai mare decât x&lt;br /&gt;
    n = 1&lt;br /&gt;
    while f(n) &amp;lt;= x:&lt;br /&gt;
        termeni_sir.append(f(n))&lt;br /&gt;
        n += 1&lt;br /&gt;
&lt;br /&gt;
    # Afișăm termenii în ordine descrescătoare&lt;br /&gt;
    termeni_sir.sort(reverse=True)&lt;br /&gt;
&lt;br /&gt;
    print(&amp;quot; &amp;quot;.join(map(str, termeni_sir)))&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
    x = int(input(&amp;quot;Introduceți numărul x: &amp;quot;))&lt;br /&gt;
&lt;br /&gt;
    if verifica_restrictii(x):&lt;br /&gt;
        genereaza_si_afiseaza_sir(x)&lt;br /&gt;
    else:&lt;br /&gt;
        print(&amp;quot;Numărul introdus nu respectă restricțiile.&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    main()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Gabi</name></author>
	</entry>
</feed>