<?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=Robert+Manc</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=Robert+Manc"/>
	<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/wiki/Special:Contributions/Robert_Manc"/>
	<updated>2026-05-01T04:31:12Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.42.1</generator>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=27024&amp;diff=7662</id>
		<title>27024</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=27024&amp;diff=7662"/>
		<updated>2023-12-05T15:52:47Z</updated>

		<summary type="html">&lt;p&gt;Robert Manc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;27024 (Gheorghe Szöllösy)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Fie &#039;&#039; &amp;lt;math&amp;gt; I_n = \int_{0}^{\pi} \frac{\cos nx}{13-12\cos x}\,dx, n\ge0.&amp;lt;/math&amp;gt;&#039;&#039; Să se calculeze &#039;&#039; &amp;lt;math&amp;gt;\lim_{n \to \infty}(I_0+I_1+I_2+\ldots+I_n).&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Soluție. &#039;&#039;&#039; &#039;&#039;Să observăm că&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math display=&amp;quot;block&amp;quot;&amp;gt;I_{n+2}+I_n = \int_{0}^{\pi}\frac{2\cos x-\cos(n_1)x}{13-12\cos x}\,dx = \frac{1}{6}\int_{0}^{\pi}\frac{(12\cos x-13+13)\cos(n+1)x}{13-12\cos x}\,dx=&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math display=&amp;quot;block&amp;quot;&amp;gt;=\frac{1}{6(n+1)}\sin(n+1)x\Biggr|_{0}^{\pi}+\frac{13}{6}I_{n+1},&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039; oricare ar fi &#039;&#039;&amp;lt;math&amp;gt;n\in \mathbb{N}.&amp;lt;/math&amp;gt;&#039;&#039; Atunci &#039;&#039;&amp;lt;math&amp;gt;I_n=\alpha\left(\frac{2}{3}\right)^n+\beta\left(\frac{3}{2}\right)^n&amp;lt;/math&amp;gt;&#039;&#039;, unde &#039;&#039;&amp;lt;math&amp;gt;\alpha+\beta=I_0=\frac{\pi}{5}&amp;lt;/math&amp;gt;&#039;&#039; și &#039;&#039; &amp;lt;math&amp;gt; \frac{2}{3}\alpha+\frac{3}{2}\beta=I_1=\frac{2\pi}{15}.&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Obținem &#039;&#039;&amp;lt;math&amp;gt;\alpha=\frac{\pi}{5}, \beta=0&amp;lt;/math&amp;gt;&#039;&#039; și &#039;&#039;&amp;lt;math&amp;gt;I_n=\frac{\pi}{5}\left(\frac{2}{3}\right)^n&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
În consecință, &amp;lt;math&amp;gt;\lim_{n \to \infty}(I_0+I_1+I_2+\ldots+I_n)= \frac{\frac{\pi}{5}}{1-\frac{2}{3}}=\frac{3\pi}{5}&amp;lt;/math&amp;gt;.&lt;/div&gt;</summary>
		<author><name>Robert Manc</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=27024&amp;diff=7661</id>
		<title>27024</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=27024&amp;diff=7661"/>
		<updated>2023-12-05T15:28:39Z</updated>

		<summary type="html">&lt;p&gt;Robert Manc: Pagină nouă: &amp;#039;&amp;#039;&amp;#039;27024 (Gheorghe Szöllösy)&amp;#039;&amp;#039;&amp;#039;  &amp;#039;&amp;#039;Fie &amp;#039;&amp;#039; &amp;lt;math&amp;gt; I_n = \int_{0}^{\pi} \frac{\cos nx}{13-12\cos x}\,dx, n\ge0.&amp;lt;/math&amp;gt;&amp;#039;&amp;#039; Să se calculeze &amp;#039;&amp;#039; &amp;lt;math&amp;gt;\lim_{n \to \infty}(I_0+I_1+I_2+\ldots+I_n).&amp;lt;/math&amp;gt;  &amp;#039;&amp;#039;&amp;#039;Soluție. &amp;#039;&amp;#039;&amp;#039; &amp;#039;&amp;#039;Să observăm că&amp;#039;&amp;#039;  &amp;lt;math&amp;gt;I_{n+2}+I_n = \int_{0}^{\pi}\frac{2\cos x-\cos(n_1)x}{13-12\cos x}\,dx = \frac{1}{6}\int_{0}^{\pi}\frac{(12\cos x-13+13)\cos(n+1)x}{13-12\cos x}\,dx= =\frac{1}{6(n+1)}\sin(n+1)x\Biggr|_{0}^{\pi}+\frac{13}{6}I_{n+1}, &amp;lt;/math&amp;gt;&amp;#039;&amp;#039; oricare...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;27024 (Gheorghe Szöllösy)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Fie &#039;&#039; &amp;lt;math&amp;gt; I_n = \int_{0}^{\pi} \frac{\cos nx}{13-12\cos x}\,dx, n\ge0.&amp;lt;/math&amp;gt;&#039;&#039; Să se calculeze &#039;&#039; &amp;lt;math&amp;gt;\lim_{n \to \infty}(I_0+I_1+I_2+\ldots+I_n).&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Soluție. &#039;&#039;&#039; &#039;&#039;Să observăm că&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;I_{n+2}+I_n = \int_{0}^{\pi}\frac{2\cos x-\cos(n_1)x}{13-12\cos x}\,dx = \frac{1}{6}\int_{0}^{\pi}\frac{(12\cos x-13+13)\cos(n+1)x}{13-12\cos x}\,dx=&lt;br /&gt;
=\frac{1}{6(n+1)}\sin(n+1)x\Biggr|_{0}^{\pi}+\frac{13}{6}I_{n+1},&lt;br /&gt;
&amp;lt;/math&amp;gt;&#039;&#039; oricare ar fi &#039;&#039;&amp;lt;math&amp;gt;n\in \mathbb{N}.&amp;lt;/math&amp;gt;&#039;&#039; Atunci &#039;&#039;&amp;lt;math&amp;gt;I_n=\alpha\left(\frac{2}{3}\right)^n+\beta\left(\frac{3}{2}\right)^n&amp;lt;/math&amp;gt;&#039;&#039;, unde &#039;&#039;&amp;lt;math&amp;gt;\alpha+\beta=I_0=\frac{\pi}{5}&amp;lt;/math&amp;gt;&#039;&#039; și &#039;&#039;&amp;lt;math&amp;gt; &lt;br /&gt;
\frac{2}{3}\alpha+\frac{3}{2}\beta=I_1=\frac{2\pi}{15}.&amp;lt;/math&amp;gt;&#039;&#039;Obținem &#039;&#039;&amp;lt;math&amp;gt;\alpha=\frac{\pi}{5}, \beta=0&amp;lt;/math&amp;gt;&#039;&#039; și &#039;&#039;&amp;lt;math&amp;gt;I_n=\frac{\pi}{5}\left(\frac{2}{3}\right)^n&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
În consecință, &amp;lt;math&amp;gt;\lim_{n \to \infty}(I_0+I_1+I_2+\ldots+I_n)= \frac{\frac{\pi}{5}}{1-\frac{2}{3}}=\frac{3\pi}{5}&amp;lt;/math&amp;gt;.&lt;/div&gt;</summary>
		<author><name>Robert Manc</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=Gazeta_Matematic%C4%83&amp;diff=7660</id>
		<title>Gazeta Matematică</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=Gazeta_Matematic%C4%83&amp;diff=7660"/>
		<updated>2023-12-05T15:12:08Z</updated>

		<summary type="html">&lt;p&gt;Robert Manc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Această pagină conține o listă cu numerele revistei &#039;&#039;[https://gmb.ssmr.ro/ Gazeta Matematică]&#039;&#039; care conțin articole/probleme cu autori membri ai [https://ssmr.cunbm.utcluj.ro/ Filialei Maramureș] a [https://ssmr.ro/ Societății de Științe Matematice din România].&lt;br /&gt;
{| class=&amp;quot;wikitable mw-collapsible&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!Anul&lt;br /&gt;
!Numărul &lt;br /&gt;
!Numărul problemei&lt;br /&gt;
!Clasa&lt;br /&gt;
!Domeniu&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=&amp;quot;8&amp;quot; |2022&lt;br /&gt;
|rowspan=&amp;quot;2&amp;quot;|1 &lt;br /&gt;
| [[28247]]&lt;br /&gt;
|11&lt;br /&gt;
|Matrice&lt;br /&gt;
|-&lt;br /&gt;
| [[28250]]&lt;br /&gt;
|12&lt;br /&gt;
|integrala Riemann&lt;br /&gt;
limită&lt;br /&gt;
|-&lt;br /&gt;
|4 - [[Gazeta Matematică nr 4 2022|link]]&lt;br /&gt;
| [[28315]]&lt;br /&gt;
|10&lt;br /&gt;
|numere complexe&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
| [[28338]]&lt;br /&gt;
|10&lt;br /&gt;
|numere complexe&lt;br /&gt;
afixe&lt;br /&gt;
|-&lt;br /&gt;
|6-7-8&lt;br /&gt;
| [[28354]]&lt;br /&gt;
|9&lt;br /&gt;
|vectori&lt;br /&gt;
|-&lt;br /&gt;
|10&lt;br /&gt;
| [[28437]]&lt;br /&gt;
|11&lt;br /&gt;
|șir recurent&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=&amp;quot;2&amp;quot;|11 &lt;br /&gt;
| [[E:16407]]&lt;br /&gt;
|5&lt;br /&gt;
|cub perfect&lt;br /&gt;
|-&lt;br /&gt;
| [[28450]]&lt;br /&gt;
|9&lt;br /&gt;
|progresii aritmetice&lt;br /&gt;
|-&lt;br /&gt;
|rowspan = &amp;quot;4&amp;quot; |2021&lt;br /&gt;
|rowspan= &amp;quot;1&amp;quot; | 12&lt;br /&gt;
|[[28208]]&lt;br /&gt;
|9&lt;br /&gt;
|vectori&lt;br /&gt;
|-&lt;br /&gt;
|rowspan = &amp;quot;3&amp;quot; |678 - [[Gazeta Matematică nr 678 2021|link]]&lt;br /&gt;
|[[E:15990]]&lt;br /&gt;
|5&lt;br /&gt;
|numere naturale&lt;br /&gt;
|-&lt;br /&gt;
| [[E:15991]]&lt;br /&gt;
|5&lt;br /&gt;
|numere naturale&lt;br /&gt;
|-&lt;br /&gt;
| [[E:15992]]&lt;br /&gt;
|5&lt;br /&gt;
|numere naturale&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=&amp;quot;3&amp;quot; |2018&lt;br /&gt;
|rowspan=&amp;quot;3&amp;quot; |4 - [[Gazeta Matematică nr 4 2018|link]]&lt;br /&gt;
| [[S:E18.128]]&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|[[S:E18.131]]&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| [[S:E18.131]]&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=&amp;quot;3&amp;quot; |2015&lt;br /&gt;
|1 - [[Gazeta Matematică nr 1 2015|link]]&lt;br /&gt;
|[[27020]]&lt;br /&gt;
|10&lt;br /&gt;
|coeficienți binomiali&lt;br /&gt;
|-&lt;br /&gt;
|2 - [[Gazeta Matematică nr 2 2015|link]]&lt;br /&gt;
|[[27036]]&lt;br /&gt;
|11&lt;br /&gt;
|ecuații funcționale&lt;br /&gt;
|-&lt;br /&gt;
|3 - [[Gazeta Matematică nr 2 2015|link]]&lt;br /&gt;
|[[27024]]&lt;br /&gt;
|12&lt;br /&gt;
|ecuații funcționale&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=&amp;quot;2&amp;quot;| 2012&lt;br /&gt;
|rowspan=&amp;quot;2&amp;quot;|9 - [[Gazeta Matematică nr 9 2012|link]]&lt;br /&gt;
|[[14380]]&lt;br /&gt;
|5&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|[[14383]]&lt;br /&gt;
|6&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=&amp;quot;2&amp;quot;| 2011&lt;br /&gt;
|rowspan=&amp;quot;2&amp;quot;|7-8-9 - [[Gazeta Matematică nr 789 2011|link]]&lt;br /&gt;
|[[E:14223]]&lt;br /&gt;
|7&lt;br /&gt;
|rezolvarea triunghiului&lt;br /&gt;
|-&lt;br /&gt;
|[[E:14228]]&lt;br /&gt;
|7&lt;br /&gt;
|radicali&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Robert Manc</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=0436_-_Prim_Maxim&amp;diff=5263</id>
		<title>0436 - Prim Maxim</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=0436_-_Prim_Maxim&amp;diff=5263"/>
		<updated>2023-04-28T16:41:09Z</updated>

		<summary type="html">&lt;p&gt;Robert Manc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cerinţa ==&lt;br /&gt;
Să se scrie un program care citeşte de la tastatură un număr natural &#039;&#039;&#039;nr&#039;&#039;&#039; şi apoi un şir de &#039;&#039;&#039;nr&#039;&#039;&#039; &#039;&#039;&#039;numere&#039;&#039;&#039; naturale şi determină cel mai mare număr prim din șir și de câte ori apare.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Programul citește de la tastatură numărul &#039;&#039;&#039;nr&#039;&#039;&#039;, iar apoi &#039;&#039;&#039;nr&#039;&#039;&#039; &#039;&#039;&#039;numere&#039;&#039;&#039; naturale.&lt;br /&gt;
== Date de ieşire ==&lt;br /&gt;
Programul afișează pe ecran numerele &#039;&#039;&#039;max_prim&#039;&#039;&#039; &#039;&#039;&#039;numar_aparitie&#039;&#039;&#039;, separate printr-un spațiu, reprezentând cel mai mare număr prim din șir și de câte ori apare acest număr în șir.&lt;br /&gt;
== Restricții și precizări ==&lt;br /&gt;
* &#039;&#039;&#039;nr &amp;amp;isin; &amp;amp;Nu;&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;0 &amp;lt; nr &amp;lt; 1.000&#039;&#039;&#039;&lt;br /&gt;
* cele &#039;&#039;&#039;nr&#039;&#039;&#039; &#039;&#039;&#039;numere&#039;&#039;&#039; citite vor fi mai mici decât &#039;&#039;&#039;2.000.000.000&#039;&#039;&#039;&lt;br /&gt;
* pentru toate testele de evaluare, datele de intrare vor conține cel puțin un număr prim&lt;br /&gt;
== Exemplu1 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
: 5&lt;br /&gt;
: 8 7 11 9 11&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele de intrare corespund restricțiilor impuse.&lt;br /&gt;
: 11 2&lt;br /&gt;
== Exemplu2 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
: 6&lt;br /&gt;
: 3 17 17 8 15 17&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele de intrare corespund restricțiilor impuse.&lt;br /&gt;
: 17 3&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
def validare_date(nr, numere):&lt;br /&gt;
    flag = False&lt;br /&gt;
    if 0 &amp;lt; int(nr) &amp;lt; 1_000:&lt;br /&gt;
        flag = all(isinstance(x, int) and 1 &amp;lt;= x &amp;lt;= 2_000_000_000 for x in numere)&lt;br /&gt;
    return flag&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def verif_prim(n):&lt;br /&gt;
    if n &amp;lt;= 1:&lt;br /&gt;
        return False&lt;br /&gt;
    else:&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;
        else:&lt;br /&gt;
            return True&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def numarare(numere, prim):&lt;br /&gt;
    numar_aparitie = 0&lt;br /&gt;
    for numar in numere:&lt;br /&gt;
        if numar == prim:&lt;br /&gt;
            numar_aparitie += 1&lt;br /&gt;
    return numar_aparitie&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def max_prim(numere):&lt;br /&gt;
    max_prim = None&lt;br /&gt;
    for numar in numere:&lt;br /&gt;
        if verif_prim(numar):&lt;br /&gt;
            if max_prim is None or numar &amp;gt; max_prim:&lt;br /&gt;
                max_prim = numar&lt;br /&gt;
    numar_aparitie = numarare(numere, max_prim)&lt;br /&gt;
    print(max_prim, numar_aparitie)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    nr = int(input())&lt;br /&gt;
    numere = list(map(int, input().split()))&lt;br /&gt;
    if validare_date(nr, numere):&lt;br /&gt;
        print(&amp;quot;\nDatele de intrare corespund restrictiilor impuse.\n&amp;quot;)&lt;br /&gt;
        max_prim(numere)&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;
Programul primește de la tastatură un număr și o listă de numere întregi și verifică dacă acestea respectă anumite restricții. Dacă da, atunci calculează cel mai mare număr prim din listă și afișează acest număr și numărul de apariții ale acestuia în listă.&lt;br /&gt;
&lt;br /&gt;
Funcția &#039;&#039;&#039;verif_prim&#039;&#039;&#039; primește un număr și returnează &#039;&#039;&#039;True&#039;&#039;&#039; dacă este prim și &#039;&#039;&#039;False&#039;&#039;&#039; în caz contrar.&lt;br /&gt;
&lt;br /&gt;
Funcția &#039;&#039;&#039;numarare&#039;&#039;&#039; numără numărul de apariții ale unui număr dat într-o listă dată.&lt;br /&gt;
&lt;br /&gt;
Funcția &#039;&#039;&#039;max_prim&#039;&#039;&#039; găsește cel mai mare număr prim din listă și numărul de apariții ale acestuia, folosind funcțiile &#039;&#039;&#039;verif_prim&#039;&#039;&#039; și &#039;&#039;&#039;numarare&#039;&#039;&#039;.&lt;/div&gt;</summary>
		<author><name>Robert Manc</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=1408_-_Numere_10&amp;diff=5262</id>
		<title>1408 - Numere 10</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=1408_-_Numere_10&amp;diff=5262"/>
		<updated>2023-04-28T16:39:12Z</updated>

		<summary type="html">&lt;p&gt;Robert Manc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cerinţa ==&lt;br /&gt;
Se dau &#039;&#039;&#039;nr&#039;&#039;&#039; numere naturale. Calculați câte dintre ele sunt prime, cel mai mare și cel mai mic număr prim.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Programul citește de la tastatură numărul &#039;&#039;&#039;nr&#039;&#039;&#039;, iar apoi &#039;&#039;&#039;nr&#039;&#039;&#039; &#039;&#039;&#039;numere&#039;&#039;&#039; naturale.&lt;br /&gt;
== Date de ieşire ==&lt;br /&gt;
Programul va afișa pe ecran numărul &#039;&#039;&#039;numere_prime&#039;&#039;&#039;, &#039;&#039;&#039;min_prim&#039;&#039;&#039;, &#039;&#039;&#039;max_prim&#039;&#039;&#039;, reprezentând câte dintre numerele date sunt prime, cel mai mic și cel mai pare număr prim.&lt;br /&gt;
== Restricții și precizări ==&lt;br /&gt;
* &#039;&#039;&#039;nr &amp;amp;isin; &amp;amp;Nu;&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;1 &amp;amp;les; nr &amp;amp;les; 10.000&#039;&#039;&#039;&lt;br /&gt;
* cele &#039;&#039;&#039;nr&#039;&#039;&#039; &#039;&#039;&#039;numere&#039;&#039;&#039; citite vor fi mai mici decât &#039;&#039;&#039;1.000.000.000&#039;&#039;&#039;&lt;br /&gt;
* în fiecare test va exista cel puțin un număr prim&lt;br /&gt;
== Exemplu1 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
: 9&lt;br /&gt;
: 7 3 10 17 14 1 9 3 13 &lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele de intrare corespund restricțiilor impuse.&lt;br /&gt;
: 5 3 17&lt;br /&gt;
== Exemplu2 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
: 10&lt;br /&gt;
: 77 64 39 81 6 15 3 79 94 32&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele de intrare corespund restricțiilor impuse.&lt;br /&gt;
: 2 3 79&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
def validare_date(nr, numere):&lt;br /&gt;
    flag = False&lt;br /&gt;
    if 0 &amp;lt; int(nr) &amp;lt;= 10_000:&lt;br /&gt;
        flag = all(isinstance(x, int) and 1 &amp;lt;= x &amp;lt;= 1_000_000_000 for x in numere)&lt;br /&gt;
    return flag&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def verif_prim(n):&lt;br /&gt;
    if n &amp;lt;= 1:&lt;br /&gt;
        return False&lt;br /&gt;
    else:&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;
        else:&lt;br /&gt;
            return True&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def numarare_prim(numere):&lt;br /&gt;
    numere_prime = 0&lt;br /&gt;
    for numar in numere:&lt;br /&gt;
        if verif_prim(numar):&lt;br /&gt;
            numere_prime += 1&lt;br /&gt;
    return numere_prime&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def gaseste_min_max_prim(numere):&lt;br /&gt;
    numere_prime = numarare_prim(numere)&lt;br /&gt;
    min_prim = None&lt;br /&gt;
    max_prim = None&lt;br /&gt;
    for numar in numere:&lt;br /&gt;
        if verif_prim(numar):&lt;br /&gt;
            if min_prim is None or numar &amp;lt; min_prim:&lt;br /&gt;
                min_prim = numar&lt;br /&gt;
            if max_prim is None or numar &amp;gt; max_prim:&lt;br /&gt;
                max_prim = numar&lt;br /&gt;
    print(numere_prime, min_prim, max_prim)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    nr = int(input())&lt;br /&gt;
    numere = list(map(int, input().split()))&lt;br /&gt;
    if validare_date(nr, numere):&lt;br /&gt;
        print(&amp;quot;\nDatele de intrare corespund restrictiilor impuse.\n&amp;quot;)&lt;br /&gt;
        gaseste_min_max_prim(numere)&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;
Acest program primește ca date de intrare un număr întreg &#039;&#039;&#039;nr&#039;&#039;&#039; urmat de o listă de &#039;&#039;&#039;nr&#039;&#039;&#039; numere întregi &#039;&#039;&#039;numere&#039;&#039;&#039;. Programul validează datele de intrare și afișează numărul total de numere prime din listă și cel mai mic și cel mai mare număr prim din listă.&lt;br /&gt;
&lt;br /&gt;
Funcția &#039;&#039;&#039;verif_prim&#039;&#039;&#039; verifică dacă un număr &#039;&#039;&#039;n&#039;&#039;&#039; este prim sau nu. Funcția &#039;&#039;&#039;numarare_prim&#039;&#039;&#039; numără numerele prime din lista de numere primite ca parametru, iar funcția &#039;&#039;&#039;gaseste_min_max_prim&#039;&#039;&#039; găsește cel mai mic și cel mai mare număr prim din listă.&lt;br /&gt;
&lt;br /&gt;
În funcția &#039;&#039;&#039;gaseste_min_max_prim&#039;&#039;&#039;, numărul total de numere prime este calculat utilizând funcția &#039;&#039;&#039;numarare_prim&#039;&#039;&#039;. Prin iterarea prin lista de numere, se găsesc cele mai mici și cele mai mari numere prime din listă. Acestea sunt stocate în variabilele &#039;&#039;&#039;min_prim&#039;&#039;&#039; și &#039;&#039;&#039;max_prim&#039;&#039;&#039;, respectiv. Dacă niciun număr prim nu este găsit, &#039;&#039;&#039;min_prim&#039;&#039;&#039; și &#039;&#039;&#039;max_prim&#039;&#039;&#039; rămân &#039;&#039;&#039;None&#039;&#039;&#039;. La final, cele trei valori (numărul total de numere prime și cele mai mici și cele mai mari numere prime) sunt afișate.&lt;/div&gt;</summary>
		<author><name>Robert Manc</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=0044_-_Prime_Interval&amp;diff=5261</id>
		<title>0044 - Prime Interval</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=0044_-_Prime_Interval&amp;diff=5261"/>
		<updated>2023-04-28T16:36:28Z</updated>

		<summary type="html">&lt;p&gt;Robert Manc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cerinţa ==&lt;br /&gt;
Să se scrie un program care citește două numere naturale &#039;&#039;&#039;numar1&#039;&#039;&#039; și &#039;&#039;&#039;numar2&#039;&#039;&#039; și determină câte numere prime sunt în intervalul închis determinat de &#039;&#039;&#039;numar1&#039;&#039;&#039; și &#039;&#039;&#039;numar2&#039;&#039;&#039;.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Programul citește de la tastatură numerele &#039;&#039;&#039;numar1&#039;&#039;&#039; și &#039;&#039;&#039;numar2&#039;&#039;&#039;.&lt;br /&gt;
== Date de ieşire ==&lt;br /&gt;
Programul afișează pe ecran numărul &#039;&#039;&#039;numere_prime&#039;&#039;&#039;, reprezentând numărul de numere prime din intervalul închis determinat de &#039;&#039;&#039;numar1&#039;&#039;&#039; și &#039;&#039;&#039;numar2&#039;&#039;&#039;.&lt;br /&gt;
== Restricții și precizări ==&lt;br /&gt;
* &#039;&#039;&#039;numar1, numar2 &amp;amp;isin; &amp;amp;Nu;&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;0 &amp;lt; numar1, numar2 &amp;lt; 100.000&#039;&#039;&#039;&lt;br /&gt;
* numerele citite nu respectă obligatoriu relația &#039;&#039;&#039;numar1 ≤ numar2&#039;&#039;&#039;&lt;br /&gt;
* un număr natural este &#039;&#039;&#039;prim&#039;&#039;&#039; dacă are exact doi divizori distincți: &#039;&#039;&#039;1&#039;&#039;&#039; și el însuși.&lt;br /&gt;
== Exemplu1 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
: 10 20&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele de intrare corespund restricțiilor impuse.&lt;br /&gt;
: 4&lt;br /&gt;
== Explicație ==&lt;br /&gt;
În intervalul &#039;&#039;&#039;[10,20]&#039;&#039;&#039; sunt &#039;&#039;&#039;4&#039;&#039;&#039; numere prime: &#039;&#039;&#039;11&#039;&#039;&#039;, &#039;&#039;&#039;13&#039;&#039;&#039;, &#039;&#039;&#039;17&#039;&#039;&#039;, &#039;&#039;&#039;19&#039;&#039;&#039;.&lt;br /&gt;
== Exemplu2 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
: 5 17&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele de intrare corespund restricțiilor impuse.&lt;br /&gt;
: 5&lt;br /&gt;
== Explicație ==&lt;br /&gt;
În intervalul &#039;&#039;&#039;[5,17]&#039;&#039;&#039; sunt &#039;&#039;&#039;5&#039;&#039;&#039; numere prime: &#039;&#039;&#039;5&#039;&#039;&#039;, &#039;&#039;&#039;7&#039;&#039;&#039;, &#039;&#039;&#039;11&#039;&#039;&#039;, &#039;&#039;&#039;13&#039;&#039;&#039;, &#039;&#039;&#039;17&#039;&#039;&#039;.&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
def validare_date(numar1, numar2):&lt;br /&gt;
    flag = False&lt;br /&gt;
    if 0 &amp;lt; int(numar1) &amp;lt; 100_000 and 0 &amp;lt; int(numar2) &amp;lt; 100_000:&lt;br /&gt;
         flag = True&lt;br /&gt;
    return flag&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def verif_prim(n):&lt;br /&gt;
    if n &amp;lt;= 1:&lt;br /&gt;
        return False&lt;br /&gt;
    else:&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;
        else:&lt;br /&gt;
            return True&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def numarare_prime(numar1, numar2):&lt;br /&gt;
    if numar1 &amp;gt; numar2:&lt;br /&gt;
        numar1, numar2 = numar2, numar1&lt;br /&gt;
    numere_prime = 0&lt;br /&gt;
    for numar in range(numar1, numar2+1):&lt;br /&gt;
        if verif_prim(numar):&lt;br /&gt;
            numere_prime += 1&lt;br /&gt;
    print(numere_prime)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    numar1, numar2 = input().split()&lt;br /&gt;
    if validare_date(numar1, numar2):&lt;br /&gt;
        print(&amp;quot;\nDatele de intrare corespund restrictiilor impuse.\n&amp;quot;)&lt;br /&gt;
        numarare_prime(int(numar1), int(numar2))&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;
Programul primește două numere de la tastatură și verifică dacă acestea se încadrează în limitele impuse de funcția &#039;&#039;&#039;validare_date&#039;&#039;&#039;. Dacă numerele sunt valide, programul numără câte numere prime sunt între cele două numere primite, folosind funcția &#039;&#039;&#039;numarare_prime&#039;&#039;&#039;. Pentru a număra numerele prime, se folosește funcția &#039;&#039;&#039;verif_prim&#039;&#039;&#039;, care primește un număr și returnează &#039;&#039;&#039;True&#039;&#039;&#039; dacă numărul este prim, sau &#039;&#039;&#039;False&#039;&#039;&#039; altfel.&lt;/div&gt;</summary>
		<author><name>Robert Manc</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=3351_-_Prime_3&amp;diff=5260</id>
		<title>3351 - Prime 3</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=3351_-_Prime_3&amp;diff=5260"/>
		<updated>2023-04-28T16:33:15Z</updated>

		<summary type="html">&lt;p&gt;Robert Manc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cerinţa ==&lt;br /&gt;
Se dau &#039;&#039;&#039;nr&#039;&#039;&#039; numere naturale. Determinați suma celor prime.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Programul citește de la tastatură numărul &#039;&#039;&#039;nr&#039;&#039;&#039;, iar apoi &#039;&#039;&#039;nr&#039;&#039;&#039; &#039;&#039;&#039;numere&#039;&#039;&#039; naturale.&lt;br /&gt;
== Date de ieşire ==&lt;br /&gt;
Programul va afișa pe ecran numărul &#039;&#039;&#039;suma&#039;&#039;&#039;, reprezentând suma celor prime.&lt;br /&gt;
== Restricții și precizări ==&lt;br /&gt;
* &#039;&#039;&#039;nr &amp;amp;isin; &amp;amp;Nu;&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;1 &amp;amp;les; nr &amp;amp;les; 1.000&#039;&#039;&#039;&lt;br /&gt;
* cele &#039;&#039;&#039;nr&#039;&#039;&#039; &#039;&#039;&#039;numere&#039;&#039;&#039; citite vor fi mai mici decât &#039;&#039;&#039;1.000.000.000&#039;&#039;&#039;&lt;br /&gt;
== Exemplu1 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
: 5&lt;br /&gt;
: 11 25 3 4 1&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele de intrare corespund restricțiilor impuse.&lt;br /&gt;
: 14&lt;br /&gt;
== Explicație ==&lt;br /&gt;
Dintre cele &#039;&#039;&#039;5&#039;&#039;&#039; numere citite sunt prime numerele &#039;&#039;&#039;11&#039;&#039;&#039; și &#039;&#039;&#039;3&#039;&#039;&#039;.&lt;br /&gt;
== Exemplu2 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
: 4&lt;br /&gt;
: 3 23 8 7&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele de intrare corespund restricțiilor impuse.&lt;br /&gt;
: 33&lt;br /&gt;
== Explicație ==&lt;br /&gt;
Dintre cele &#039;&#039;&#039;4&#039;&#039;&#039; numere citite sunt prime numerele &#039;&#039;&#039;3&#039;&#039;&#039;, &#039;&#039;&#039;23&#039;&#039;&#039; și &#039;&#039;&#039;7&#039;&#039;&#039;.&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
def validare_date(nr, numere):&lt;br /&gt;
    flag = False&lt;br /&gt;
    if 0 &amp;lt; int(nr) &amp;lt;= 1000:&lt;br /&gt;
        flag = all(isinstance(x, int) and 1 &amp;lt;= x &amp;lt;= 1_000_000_000 for x in numere)&lt;br /&gt;
    return flag&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def verif_prim(n):&lt;br /&gt;
    if n &amp;lt;= 1:&lt;br /&gt;
        return False&lt;br /&gt;
    else:&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;
        else:&lt;br /&gt;
            return True&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def suma_celor_prime(numere):&lt;br /&gt;
    suma = 0&lt;br /&gt;
    for numar in numere:&lt;br /&gt;
        if verif_prim(numar):&lt;br /&gt;
            suma += numar&lt;br /&gt;
    print(suma)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    nr = int(input())&lt;br /&gt;
    numere = list(map(int, input().split()))&lt;br /&gt;
    if validare_date(nr, numere):&lt;br /&gt;
        print(&amp;quot;\nDatele de intrare corespund restrictiilor impuse.\n&amp;quot;)&lt;br /&gt;
        suma_celor_prime(numere)&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;
Programul primește de la utilizator un număr de elemente urmat de o listă de numere și calculează suma tuturor numerelor prime din listă.&lt;br /&gt;
&lt;br /&gt;
Funcția &#039;&#039;&#039;verif_prim&#039;&#039;&#039; primește un număr și returnează &#039;&#039;&#039;True&#039;&#039;&#039; dacă numărul este prim și &#039;&#039;&#039;False&#039;&#039;&#039; în caz contrar. Algoritmul folosit verifică dacă numărul este divizibil cu un număr între 2 și radicalul pătrat al numărului, iar în caz afirmativ, consideră numărul ca neprim și se oprește din căutare.&lt;br /&gt;
&lt;br /&gt;
Funcția &#039;&#039;&#039;suma_celor_prime&#039;&#039;&#039; primește lista de numere și calculează suma tuturor numerelor prime din listă. Se parcurge fiecare element al listei, iar dacă acesta este prim, se adaugă la suma totală. Rezultatul final este afișat.&lt;br /&gt;
&lt;br /&gt;
Dacă datele de intrare sunt valide, programul afișează un mesaj corespunzător și calculează suma numerelor prime din listă. În caz contrar, se afișează un mesaj de eroare.&lt;/div&gt;</summary>
		<author><name>Robert Manc</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=3350_-_Prime_2&amp;diff=5259</id>
		<title>3350 - Prime 2</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=3350_-_Prime_2&amp;diff=5259"/>
		<updated>2023-04-28T16:31:30Z</updated>

		<summary type="html">&lt;p&gt;Robert Manc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cerinţa ==&lt;br /&gt;
Se dau &#039;&#039;&#039;nr&#039;&#039;&#039; numere naturale. Determinați câte dintre ele sunt prime.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Programul citește de la tastatură numărul &#039;&#039;&#039;nr&#039;&#039;&#039;, iar apoi &#039;&#039;&#039;nr&#039;&#039;&#039; &#039;&#039;&#039;numere&#039;&#039;&#039; naturale.&lt;br /&gt;
== Date de ieşire ==&lt;br /&gt;
Programul va afișa pe ecran numărul &#039;&#039;&#039;numere_prime&#039;&#039;&#039;, reprezentând câte dintre numerele citite sunt prime.&lt;br /&gt;
== Restricții și precizări ==&lt;br /&gt;
* &#039;&#039;&#039;nr &amp;amp;isin; &amp;amp;Nu;&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;1 &amp;amp;les; nr &amp;amp;les; 1.000&#039;&#039;&#039;&lt;br /&gt;
* cele &#039;&#039;&#039;nr&#039;&#039;&#039; &#039;&#039;&#039;numere&#039;&#039;&#039; citite vor fi mai mici decât &#039;&#039;&#039;1.000.000.000&#039;&#039;&#039;&lt;br /&gt;
== Exemplu1 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
: 5&lt;br /&gt;
: 11 25 3 4 1&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele de intrare corespund restricțiilor impuse.&lt;br /&gt;
: 2&lt;br /&gt;
== Explicație ==&lt;br /&gt;
Dintre cele &#039;&#039;&#039;5&#039;&#039;&#039; numere citite sunt prime numerele &#039;&#039;&#039;11&#039;&#039;&#039; și &#039;&#039;&#039;3&#039;&#039;&#039;.&lt;br /&gt;
== Exemplu2 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
: 4&lt;br /&gt;
: 3 23 8 7&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele de intrare corespund restricțiilor impuse.&lt;br /&gt;
: 3&lt;br /&gt;
== Explicație ==&lt;br /&gt;
Dintre cele &#039;&#039;&#039;4&#039;&#039;&#039; numere citite sunt prime numerele &#039;&#039;&#039;3&#039;&#039;&#039;, &#039;&#039;&#039;23&#039;&#039;&#039; și &#039;&#039;&#039;7&#039;&#039;&#039;.&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
def validare_date(nr, numere):&lt;br /&gt;
    flag = False&lt;br /&gt;
    if 0 &amp;lt; int(nr) &amp;lt;= 1000:&lt;br /&gt;
        flag = all(isinstance(x, int) and 1 &amp;lt;= x &amp;lt;= 1_000_000_000 for x in numere)&lt;br /&gt;
    return flag&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def verif_prim(n):&lt;br /&gt;
    if n &amp;lt;= 1:&lt;br /&gt;
        return False&lt;br /&gt;
    else:&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;
        else:&lt;br /&gt;
            return True&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def numarare_prim(numere):&lt;br /&gt;
    numere_prime = 0&lt;br /&gt;
    for numar in numere:&lt;br /&gt;
        if verif_prim(numar):&lt;br /&gt;
            numere_prime += 1&lt;br /&gt;
    print(numere_prime)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    nr = int(input())&lt;br /&gt;
    numere = list(map(int, input().split()))&lt;br /&gt;
    if validare_date(nr, numere):&lt;br /&gt;
        print(&amp;quot;\nDatele de intrare corespund restrictiilor impuse.\n&amp;quot;)&lt;br /&gt;
        numarare_prim(numere)&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;
Acest cod are ca scop să primească o listă de numere și să numere câte dintre ele sunt numere prime. Funcția &#039;&#039;&#039;validare_date(nr, numere)&#039;&#039;&#039; verifică dacă numărul de numere și dacă fiecare dintre acestea corespund restricțiilor impuse. Dacă acesta este cazul, funcția &#039;&#039;&#039;numarare_prim(numere)&#039;&#039;&#039; verifică fiecare număr din listă și, dacă este prim, incrementează variabila &#039;&#039;&#039;numere_prime&#039;&#039;&#039;. La final, este afișat numărul de numere prime din listă.&lt;/div&gt;</summary>
		<author><name>Robert Manc</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=0375_-_Urmatorul_Prim&amp;diff=5258</id>
		<title>0375 - Urmatorul Prim</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=0375_-_Urmatorul_Prim&amp;diff=5258"/>
		<updated>2023-04-28T16:29:04Z</updated>

		<summary type="html">&lt;p&gt;Robert Manc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cerinţa ==&lt;br /&gt;
Se dă numărul natural &#039;&#039;&#039;n&#039;&#039;&#039;. Să se determine cel mai mic număr prim, strict mai mare decât &#039;&#039;&#039;n&#039;&#039;&#039;.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Programul citește de la tastatură numărul &#039;&#039;&#039;n&#039;&#039;&#039;.&lt;br /&gt;
== Date de ieşire ==&lt;br /&gt;
Programul afișează pe ecran numărul cerut.&lt;br /&gt;
== Restricții și precizări ==&lt;br /&gt;
* &#039;&#039;&#039;n &amp;amp;isin; &amp;amp;Nu;&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;1 &amp;amp;les; n &amp;amp;les; 1.000.000.000&#039;&#039;&#039;&lt;br /&gt;
== Exemplu1 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
: 20&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele de intrare corespund restricțiilor impuse.&lt;br /&gt;
: 23&lt;br /&gt;
== Exemplu2 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
: 112&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele de intrare corespund restricțiilor impuse.&lt;br /&gt;
: 127&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
def validare_date(n):&lt;br /&gt;
    flag = False&lt;br /&gt;
    if 0 &amp;lt; int(n) &amp;lt; 1_000_000_000:&lt;br /&gt;
        flag = True&lt;br /&gt;
    return flag&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def verif_prim(n):&lt;br /&gt;
    if n &amp;lt;= 1:&lt;br /&gt;
        return False&lt;br /&gt;
    else:&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;
        else:&lt;br /&gt;
            return True&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def urmatorul_prim(n):&lt;br /&gt;
    i = n + 1&lt;br /&gt;
    while not verif_prim(i):&lt;br /&gt;
        i += 1&lt;br /&gt;
    print(i)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    n = int(input())&lt;br /&gt;
    if validare_date(n):&lt;br /&gt;
        print(&amp;quot;\nDatele de intrare corespund restrictiilor impuse.\n&amp;quot;)&lt;br /&gt;
        urmatorul_prim(n)&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;
Programul primește un număr întreg de la utilizator. Dacă numărul este valid, programul calculează următorul număr prim după numărul dat.&lt;br /&gt;
&lt;br /&gt;
Funcția &#039;&#039;&#039;verif_prim&#039;&#039;&#039; primește un număr întreg &#039;&#039;&#039;n&#039;&#039;&#039; și returnează &#039;&#039;&#039;True&#039;&#039;&#039; dacă &#039;&#039;&#039;n&#039;&#039;&#039; este prim și &#039;&#039;&#039;False&#039;&#039;&#039; altfel. Verifică dacă &#039;&#039;&#039;n&#039;&#039;&#039; este mai mare sau egal cu 2 și dacă există un divizor între 2 și rădăcina pătrată a lui &#039;&#039;&#039;n&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Funcția &#039;&#039;&#039;urmatorul_prim&#039;&#039;&#039; primește un număr întreg &#039;&#039;&#039;n&#039;&#039;&#039; și găsește următorul număr prim după &#039;&#039;&#039;n&#039;&#039;&#039;. Folosește un buclă while pentru a găsi următorul număr prim începând cu &#039;&#039;&#039;n+1&#039;&#039;&#039;. Când găsește un număr prim, îl afișează și se oprește.&lt;/div&gt;</summary>
		<author><name>Robert Manc</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=0375_-_Urmatorul_Prim&amp;diff=5257</id>
		<title>0375 - Urmatorul Prim</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=0375_-_Urmatorul_Prim&amp;diff=5257"/>
		<updated>2023-04-28T16:28:40Z</updated>

		<summary type="html">&lt;p&gt;Robert Manc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cerinţa ==&lt;br /&gt;
Se dă numărul natural &#039;&#039;&#039;n&#039;&#039;&#039;. Să se determine cel mai mic număr prim, strict mai mare decât &#039;&#039;&#039;n&#039;&#039;&#039;.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Programul citește de la tastatură numărul &#039;&#039;&#039;n&#039;&#039;&#039;.&lt;br /&gt;
== Date de ieşire ==&lt;br /&gt;
Programul afișează pe ecran numărul cerut.&lt;br /&gt;
== Restricții și precizări ==&lt;br /&gt;
* &#039;&#039;&#039;n &amp;amp;isin; &amp;amp;Nu;&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;1 &amp;amp;les; n &amp;amp;les; 1.000.000.000&#039;&#039;&#039;&lt;br /&gt;
== Exemplu1 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
: 20&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele de intrare corespund restricțiilor impuse.&lt;br /&gt;
: 23&lt;br /&gt;
== Exemplu2 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
: 112&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele de intrare corespund restricțiilor impuse.&lt;br /&gt;
: 127&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
def validare_date(n):&lt;br /&gt;
    flag = False&lt;br /&gt;
    if 0 &amp;lt; int(n) &amp;lt; 1_000_000_000:&lt;br /&gt;
        flag = True&lt;br /&gt;
    return flag&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def verif_prim(n):&lt;br /&gt;
    if n &amp;lt;= 1:&lt;br /&gt;
        return False&lt;br /&gt;
    else:&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;
        else:&lt;br /&gt;
            return True&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def urmatorul_prim(n):&lt;br /&gt;
    i = n + 1&lt;br /&gt;
    while not verif_prim(i):&lt;br /&gt;
        i += 1&lt;br /&gt;
    print(i)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    n = int(input())&lt;br /&gt;
    if validare_date(n):&lt;br /&gt;
        print(&amp;quot;\nDatele de intrare corespund restrictiilor impuse.\n&amp;quot;)&lt;br /&gt;
        urmatorul_prim(n)&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;
Programul primește un număr întreg de la utilizator. Dacă numărul este valid, programul calculează următorul număr prim după numărul dat.&lt;br /&gt;
&lt;br /&gt;
Funcția &#039;&#039;&#039;verif_prim&#039;&#039;&#039; primește un număr întreg &#039;&#039;&#039;n&#039;&#039;&#039; și returnează &#039;&#039;&#039;True&#039;&#039;&#039; dacă &#039;&#039;&#039;n&#039;&#039;&#039; este prim și &#039;&#039;&#039;False&#039;&#039;&#039; altfel. Verifică dacă &#039;&#039;&#039;n&#039;&#039;&#039; este mai mare sau egal cu 2 și dacă există un divizor între 2 și rădăcina pătrată a lui &#039;&#039;&#039;n&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Funcția &#039;&#039;&#039;urmatorul_prim&#039;&#039;&#039; primește un număr întreg &#039;&#039;&#039;n&#039;&#039;&#039; și găsește următorul număr prim după &#039;&#039;&#039;n&#039;&#039;&#039;. Folosește un buclă while pentru a găsi următorul număr prim începând cu &#039;&#039;&#039;n+1&#039;&#039;&#039;. Când găsește un număr prim, îl afișează și se oprește.&lt;/div&gt;</summary>
		<author><name>Robert Manc</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=0374_-_N_Prime_1&amp;diff=5256</id>
		<title>0374 - N Prime 1</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=0374_-_N_Prime_1&amp;diff=5256"/>
		<updated>2023-04-28T16:26:28Z</updated>

		<summary type="html">&lt;p&gt;Robert Manc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cerinţa ==&lt;br /&gt;
Se dă numărul natural &#039;&#039;&#039;n&#039;&#039;&#039;. Să se afișeze numerele naturale prime mai mici sau egale cu &#039;&#039;&#039;n&#039;&#039;&#039;.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Programul citește de la tastatură numărul &#039;&#039;&#039;n&#039;&#039;&#039;.&lt;br /&gt;
== Date de ieşire ==&lt;br /&gt;
Programul afișează pe ecran numerele naturale prime mai mici decât &#039;&#039;&#039;n&#039;&#039;&#039; în ordine crescătoare, separate prin exact un spațiu.&lt;br /&gt;
== Restricții și precizări ==&lt;br /&gt;
* &#039;&#039;&#039;n &amp;amp;isin; &amp;amp;Nu;&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;2 &amp;amp;les; n &amp;amp;les; 1.000&#039;&#039;&#039;&lt;br /&gt;
== Exemplu1 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
: 15&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele de intrare corespund restricțiilor impuse.&lt;br /&gt;
: 2 3 5 7 11 13&lt;br /&gt;
== Exemplu2 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
: 11&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele de intrare corespund restricțiilor impuse.&lt;br /&gt;
: 2 3 5 7 11&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
def validare_date(n):&lt;br /&gt;
    flag = False&lt;br /&gt;
    if 2 &amp;lt;= int(n) &amp;lt;= 1_000:&lt;br /&gt;
        flag = True&lt;br /&gt;
    return flag&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def prime_mai_mici(n):&lt;br /&gt;
    for i in range(2, n + 1):&lt;br /&gt;
        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;
                prim = False&lt;br /&gt;
                break&lt;br /&gt;
        if prim:&lt;br /&gt;
            print(i, end=&#039; &#039;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    n = int(input())&lt;br /&gt;
    if validare_date(n):&lt;br /&gt;
        print(&amp;quot;\nDatele de intrare corespund restrictiilor impuse.\n&amp;quot;)&lt;br /&gt;
        prime_mai_mici(n)&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;
Codul citește un număr întreg n și verifică dacă se încadrează în anumite restricții. Funcția &#039;&#039;&#039;prime_mai_mici&#039;&#039;&#039; afișează toate numerele prime mai mici sau egale cu n folosind două bucle for: o buclă for se ocupă de numerele de la 2 la n și o altă buclă for verifică dacă fiecare număr este prim prin testarea tuturor divizorilor săi posibili. Dacă numărul este prim, se afișează. Dacă datele de intrare nu respectă restricțiile impuse, se afișează un mesaj corespunzător.&lt;/div&gt;</summary>
		<author><name>Robert Manc</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=0373_-_N_Prime&amp;diff=5255</id>
		<title>0373 - N Prime</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=0373_-_N_Prime&amp;diff=5255"/>
		<updated>2023-04-28T16:24:08Z</updated>

		<summary type="html">&lt;p&gt;Robert Manc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cerinţa ==&lt;br /&gt;
Se dă numărul natural &#039;&#039;&#039;n&#039;&#039;&#039;. Să se afișeze primele &#039;&#039;&#039;n&#039;&#039;&#039; numere naturale prime.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Programul citește de la tastatură numărul &#039;&#039;&#039;n&#039;&#039;&#039;.&lt;br /&gt;
== Date de ieşire ==&lt;br /&gt;
Programul afișează pe ecran primele &#039;&#039;&#039;n&#039;&#039;&#039; numere naturale prime, în ordine crescătoare, separate prin exact un spațiu.&lt;br /&gt;
== Restricții și precizări ==&lt;br /&gt;
* &#039;&#039;&#039;n &amp;amp;isin; &amp;amp;Nu;&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;1 &amp;amp;les; n &amp;amp;les; 1.000&#039;&#039;&#039;&lt;br /&gt;
== Exemplu1 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
: 5&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele de intrare corespund restricțiilor impuse.&lt;br /&gt;
: 2 3 5 7 11&lt;br /&gt;
== Exemplu2 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
: 8&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele de intrare corespund restricțiilor impuse.&lt;br /&gt;
: 2 3 5 7 11 13 17 19 &lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
def validare_date(n):&lt;br /&gt;
    flag = False&lt;br /&gt;
    if 0 &amp;lt; int(n) &amp;lt;= 1_000:&lt;br /&gt;
        flag = True&lt;br /&gt;
    return flag&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def verif_prim(n):&lt;br /&gt;
    if n &amp;lt;= 1:&lt;br /&gt;
        return False&lt;br /&gt;
    else:&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;
        else:&lt;br /&gt;
            return True&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def nprime(n):&lt;br /&gt;
    count = 0  # numărul de numere prime găsite&lt;br /&gt;
    num = 2  # numărul curent&lt;br /&gt;
    while count &amp;lt; n:&lt;br /&gt;
        if verif_prim(num):&lt;br /&gt;
            print(num, end=&amp;quot; &amp;quot;)&lt;br /&gt;
            count += 1&lt;br /&gt;
        num += 1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    n = int(input())&lt;br /&gt;
    if validare_date(n):&lt;br /&gt;
        print(&amp;quot;\nDatele de intrare corespund restrictiilor impuse.\n&amp;quot;)&lt;br /&gt;
        nprime(n)&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;
Programul verifică dacă un număr dat este prim și apoi afișează primele n numere prime.&lt;br /&gt;
&lt;br /&gt;
Funcția &#039;&#039;&#039;verif_prim&#039;&#039;&#039; primește un număr întreg și verifică dacă acesta este prim sau nu. Funcția utilizează un loop &#039;&#039;&#039;for&#039;&#039;&#039; pentru a itera prin numerele de la 2 la rădăcina pătrată a lui &#039;&#039;&#039;n&#039;&#039;&#039;. Dacă există un divizor între aceste valori, atunci numărul nu este prim și se returnează valoarea &#039;&#039;&#039;False&#039;&#039;&#039;. În caz contrar, se returnează valoarea &#039;&#039;&#039;True&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Funcția &#039;&#039;&#039;nprime&#039;&#039;&#039; primește un număr întreg și afișează primele n numere prime utilizând funcția verif_prim&#039;&#039;&#039; pentru a verifica dacă fiecare număr este prim. Variabila &#039;&#039;&#039;count&#039;&#039;&#039; numără numerele prime găsite, iar variabila &#039;&#039;&#039;num&#039;&#039;&#039; reprezintă numărul curent verificat. Loop-ul se oprește atunci când &#039;&#039;&#039;count&#039;&#039;&#039; devine egal cu &#039;&#039;&#039;n&#039;&#039;&#039;.&lt;/div&gt;</summary>
		<author><name>Robert Manc</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=0045_-_Verif_Prim&amp;diff=5254</id>
		<title>0045 - Verif Prim</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=0045_-_Verif_Prim&amp;diff=5254"/>
		<updated>2023-04-28T16:20:52Z</updated>

		<summary type="html">&lt;p&gt;Robert Manc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cerinţa ==&lt;br /&gt;
Să se scrie un program care citește de la tastatură un număr natural &#039;&#039;&#039;n&#039;&#039;&#039; și verifică dacă este prim.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Programul citește de la tastatură numărul &#039;&#039;&#039;n&#039;&#039;&#039;.&lt;br /&gt;
== Date de ieşire ==&lt;br /&gt;
Programul afișează pe ecran mesajul &#039;&#039;&#039;DA&#039;&#039;&#039;, dacă &#039;&#039;&#039;n&#039;&#039;&#039; este număr prim, respectiv &#039;&#039;&#039;NU&#039;&#039;&#039; în caz contrar.&lt;br /&gt;
== Restricții și precizări ==&lt;br /&gt;
* &#039;&#039;&#039;n &amp;amp;isin; &amp;amp;Nu;&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;1 &amp;amp;les; n &amp;amp;les; 1.000.000.000&#039;&#039;&#039;&lt;br /&gt;
* un număr natural este &#039;&#039;&#039;prim&#039;&#039;&#039; dacă are exact doi divizori distincți: &#039;&#039;&#039;1&#039;&#039;&#039; și el însuși.&lt;br /&gt;
== Exemplu1 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
: 17&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele de intrare corespund restricțiilor impuse.&lt;br /&gt;
: DA&lt;br /&gt;
== Exemplu2 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
: 14&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele de intrare corespund restricțiilor impuse.&lt;br /&gt;
: NU&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
def validare_date(n):&lt;br /&gt;
    flag = False&lt;br /&gt;
    if 0 &amp;lt;= int(n) &amp;lt; 1_000_000_000:&lt;br /&gt;
        flag = True&lt;br /&gt;
    return flag&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def verif_prim(n):&lt;br /&gt;
    if n &amp;lt;= 1:&lt;br /&gt;
        print(&amp;quot;NU&amp;quot;)&lt;br /&gt;
    else:&lt;br /&gt;
        # Verificăm dacă există un divizor între 2 și rădăcina pătrată a lui n&lt;br /&gt;
        for i in range(2, int(n ** 0.5) + 1):&lt;br /&gt;
            if n % i == 0:&lt;br /&gt;
                print(&amp;quot;NU&amp;quot;)&lt;br /&gt;
                break&lt;br /&gt;
        else:&lt;br /&gt;
            print(&amp;quot;DA&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    n = int(input())&lt;br /&gt;
    if validare_date(n):&lt;br /&gt;
        print(&amp;quot;\nDatele de intrare corespund restrictiilor impuse.\n&amp;quot;)&lt;br /&gt;
        verif_prim(n)&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;
Programul verifică dacă un număr dat este prim sau nu și face o validare a datelor de intrare.&lt;br /&gt;
&lt;br /&gt;
Funcția &#039;&#039;&#039;verif_prim&#039;&#039;&#039; primește numărul și verifică dacă este mai mare decât 1. Dacă da, parcurge numerele de la 2 la rădăcina pătrată a numărului și verifică dacă numărul este divizibil cu vreunul dintre aceste numere. Dacă este, afișează &amp;quot;NU&amp;quot;, dacă nu, afișează &amp;quot;DA&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Funcția &#039;&#039;&#039;main&#039;&#039;&#039; citește numărul de la intrare, verifică dacă este valid și apoi apelează funcția &#039;&#039;&#039;verif_prim&#039;&#039;&#039; pentru a verifica dacă este prim sau nu.&lt;/div&gt;</summary>
		<author><name>Robert Manc</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=2748_-_Patrula_3&amp;diff=5253</id>
		<title>2748 - Patrula 3</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=2748_-_Patrula_3&amp;diff=5253"/>
		<updated>2023-04-28T16:19:01Z</updated>

		<summary type="html">&lt;p&gt;Robert Manc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cerinţa ==&lt;br /&gt;
Un domeniu pătrat (cu albastru), ca cel din figură trebuie apărat. Domeniul e împărțit în pătrățele. Latura domeniului este de n pătrățele, n≥7. Pe culoarele colorate patrulează 3 soldați, care încep patrularea din colțul stânga sus în același moment (poziția inițială). În exemplul de mai jos avem n=9.&lt;br /&gt;
Cei 3 soldați (garda) se vor schimba cu alți 3 soldați în momentul în care ajung în poziția inițială, simultan.&lt;br /&gt;
Soldații patrulează în sensul acelor de ceasornic fiecare cu aceeași viteză constantă, și fiecare pe culoarul său.&lt;br /&gt;
Să se scrie un program care determină numărul de circuite complete pentru fiecare soldat (un circuit complet este făcut de un soldat oarecare, pe același culoar până ajunge în poziția inițială), pentru schimbarea gărzii.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Programul citește de la tastatură numărul &#039;&#039;&#039;n&#039;&#039;&#039;.&lt;br /&gt;
== Date de ieşire ==&lt;br /&gt;
Programul va afișa pe ecran numerele &#039;&#039;&#039;circuit1&#039;&#039;&#039;, &#039;&#039;&#039;circuit2&#039;&#039;&#039; și &#039;&#039;&#039;circuit3&#039;&#039;&#039; reprezentând numărul de circuite complete pe care le face fiecare soldat.&lt;br /&gt;
== Restricții și precizări ==&lt;br /&gt;
* &#039;&#039;&#039;n &amp;amp;isin; &amp;amp;Nu;&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;7 &amp;amp;les; n &amp;amp;les; 1.000&#039;&#039;&#039;&lt;br /&gt;
== Exemplu1 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
: 9&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele de intrare corespund restricțiilor impuse.&lt;br /&gt;
: 3 4 6&lt;br /&gt;
== Explicație == &lt;br /&gt;
Primul soldat face 3 ture complete, al doilea 4, iar cel de-al treilea 6.&lt;br /&gt;
== Exemplu2 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
: 14&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele de intrare corespund restricțiilor impuse.&lt;br /&gt;
: 99 117 143&lt;br /&gt;
== Explicație == &lt;br /&gt;
Primul soldat face 99 ture complete, al doilea 117, iar cel de-al treilea 143.&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
def validare_date(n):&lt;br /&gt;
    if 7 &amp;lt;= int(n) &amp;lt;= 1_000:&lt;br /&gt;
        return True&lt;br /&gt;
    return False&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def cmmdc(numar1, numar2):&lt;br /&gt;
    while numar2:&lt;br /&gt;
        r = numar1 % numar2&lt;br /&gt;
        numar1 = numar2&lt;br /&gt;
        numar2 = r&lt;br /&gt;
    return numar1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def cmmmc(numar1, numar2):&lt;br /&gt;
    return numar1 * numar2 // cmmdc(numar1, numar2)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def patrula(n):&lt;br /&gt;
    circuit1 = n * 2 + (n - 2) * 2&lt;br /&gt;
    n -= 2&lt;br /&gt;
    circuit2 = n * 2 + (n - 2) * 2&lt;br /&gt;
    n -= 2&lt;br /&gt;
    circuit3 = n * 2 + (n - 2) * 2&lt;br /&gt;
    circuit4 = cmmmc(circuit1, circuit2)&lt;br /&gt;
    rez = cmmmc(circuit3, circuit4)&lt;br /&gt;
    circuit1 = rez // circuit1&lt;br /&gt;
    circuit2 = rez // circuit2&lt;br /&gt;
    circuit3 = rez // circuit3&lt;br /&gt;
    print(circuit1, circuit2, circuit3)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    n = int(input())&lt;br /&gt;
    if validare_date(n):&lt;br /&gt;
        print(&amp;quot;\nDatele de intrare corespund restrictiilor impuse.\n&amp;quot;)&lt;br /&gt;
        patrula(n)&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;
Programul calculează numărul minim de runde pe care trebuie să le parcurgă o patrulă pentru a acoperi un poligon cu n laturi.&lt;br /&gt;
Funcția &#039;&#039;&#039;cmmdc&#039;&#039;&#039; calculează cel mai mare divizor comun dintre două numere date.&lt;br /&gt;
Funcția &#039;&#039;&#039;cmmmc&#039;&#039;&#039; calculează cel mai mic multiplu comun dintre două numere date.&lt;br /&gt;
Funcția &#039;&#039;&#039;patrula&#039;&#039;&#039; calculează lungimea circuitelor pe care trebuie să le parcurgă patrula și apoi le înmulțește pentru a obține cel mai mic multiplu comun al lungimilor acestora. Astfel, se obține numărul total de unități de lungime pe care trebuie să le parcurgă patrula. Ulterior, se împarte acest număr la lungimea fiecărui circuit, obținându-se astfel numărul de runde pe care trebuie să le parcurgă patrula pe fiecare circuit.&lt;/div&gt;</summary>
		<author><name>Robert Manc</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=2611_-_Raza&amp;diff=5252</id>
		<title>2611 - Raza</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=2611_-_Raza&amp;diff=5252"/>
		<updated>2023-04-28T16:16:52Z</updated>

		<summary type="html">&lt;p&gt;Robert Manc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cerinţa ==&lt;br /&gt;
Avem la dispoziție un chenar dreptunghiular format din oglinzi. O rază de lumină pornește din colțul stânga jos al dreptunghiului sub un unghi de 45 de grade față de latura de jos a dreptunghiului și lovește latura de sus sau latura din dreapta. Aici se reflectă (pornește spre o altă latură tot sub un unghi de 45 de grade față de latura de care s-a lovit). Își continuă drumul până când ajunge într-un colț al dreptunghiului.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Programul citește de la tastatură dimensiunile chenarului a și b.&lt;br /&gt;
== Date de ieşire ==&lt;br /&gt;
Programul va afișa pe ecran numărul de atingeri ale marginilor chenarului. Punctul de pornire și cel final nu se numără.&lt;br /&gt;
== Restricții și precizări ==&lt;br /&gt;
* &#039;&#039;&#039;dim1, dim2 &amp;amp;isin; &amp;amp;Nu;&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;1 &amp;amp;les; dim1, dim2 &amp;amp;les; 2.000.000.000&#039;&#039;&#039;&lt;br /&gt;
== Exemplu1 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
: 3 8&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele de intrare corespund restricțiilor impuse.&lt;br /&gt;
: 9&lt;br /&gt;
== Exemplu2 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
: 8 4&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele de intrare corespund restricțiilor impuse.&lt;br /&gt;
: 1&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
def validare_date(dim1, dim2):&lt;br /&gt;
    if 0 &amp;lt; int(dim1) &amp;lt;= 2_000_000_000 and 0 &amp;lt;= int(dim2) &amp;lt;= 2_000_000_000:&lt;br /&gt;
        return True&lt;br /&gt;
    return False&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def raza(dim1, dim2):&lt;br /&gt;
    n, m = dim1, dim2&lt;br /&gt;
    while dim2:&lt;br /&gt;
        r = dim1 % dim2&lt;br /&gt;
        dim1 = dim2&lt;br /&gt;
        dim2 = r&lt;br /&gt;
    numar_atingeri = n // dim1 + m // dim1 - 2&lt;br /&gt;
    print(numar_atingeri)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    dim1, dim2 = map(int, input().split())&lt;br /&gt;
    if validare_date(dim1, dim2):&lt;br /&gt;
        print(&amp;quot;\nDatele de intrare corespund restrictiilor impuse.\n&amp;quot;)&lt;br /&gt;
        raza(dim1, dim2)&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;
Programul primește două dimensiuni ca date de intrare și verifică dacă acestea sunt între 1 și 2 miliarde. Dacă valorile introduse sunt corecte, programul calculează numărul de puncte de pe circumferința cea mai mare posibilă, astfel încât aceste puncte să atingă două linii ce reprezintă dimensiunile introduse. Programul folosește algoritmul lui Euclid pentru a determina cel mai mare divizor comun (CMMD) între cele două dimensiuni și apoi calculează numărul de puncte de pe circumferința cea mai mare posibilă, astfel încât acestea să atingă liniile.&lt;/div&gt;</summary>
		<author><name>Robert Manc</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=3073_-_Repartitie&amp;diff=5251</id>
		<title>3073 - Repartitie</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=3073_-_Repartitie&amp;diff=5251"/>
		<updated>2023-04-28T16:15:24Z</updated>

		<summary type="html">&lt;p&gt;Robert Manc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Enunț ==&lt;br /&gt;
Într-o școală sunt &#039;&#039;&#039;nr_clase_7&#039;&#039;&#039; clase a VII-a, fiecare de câte &#039;&#039;&#039;elevi_clasa_7&#039;&#039;&#039; elevi, și &#039;&#039;&#039;nr_clase_8&#039;&#039;&#039; clase a VIII-a, fiecare de câte &#039;&#039;&#039;elevi_clasa_8&#039;&#039;&#039; elevi. Directorul școlii vrea să facă o nouă repartizare a elevilor în clase astfel încât în fiecare clasă: a) să fie același număr de elevi; b) să fie doar elevi de clasa a VII-a sau doar elevi de clasa a VIII-a.&lt;br /&gt;
== Cerinţa ==&lt;br /&gt;
Cunoscându-se valorile &#039;&#039;&#039;nr_clase_7&#039;&#039;&#039;, &#039;&#039;&#039;elevi_clasa_7&#039;&#039;&#039;, &#039;&#039;&#039;nr_clase_8&#039;&#039;&#039; și &#039;&#039;&#039;elevi_clasa_8&#039;&#039;&#039;, numere naturale nenule, scrieți un program pentru a determina &#039;&#039;&#039;nr_clase_necesare&#039;&#039;&#039; numărul de clase necesar acestei noi repartizări, noul număr &#039;&#039;&#039;nr_clase_repartizate_7&#039;&#039;&#039; de clase a VII-a, respectiv &#039;&#039;&#039;nr_clase_repartizate_8&#039;&#039;&#039; de clase a VIII-a, precum și numărul &#039;&#039;&#039;nr_elevi_repartizati&#039;&#039;&#039; maxim de elevi repartizați într-o clasă.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Programul citește de la tastatură numerele naturale &#039;&#039;&#039;nr_clase_7&#039;&#039;&#039;, &#039;&#039;&#039;elevi_clasa_7&#039;&#039;&#039;, &#039;&#039;&#039;nr_clase_8&#039;&#039;&#039; și &#039;&#039;&#039;elevi_clasa_8&#039;&#039;&#039;, separate prin spații.&lt;br /&gt;
== Date de ieşire ==&lt;br /&gt;
Programul va afișa pe ecran numerele naturale: &#039;&#039;&#039;nr_clase_necesare&#039;&#039;&#039;, &#039;&#039;&#039;nr_clase_repartizate_7&#039;&#039;&#039;, &#039;&#039;&#039;nr_clase_repartizate_8&#039;&#039;&#039;, &#039;&#039;&#039;nr_elevi_repartizati&#039;&#039;&#039;, separate prin câte un spațiu.&lt;br /&gt;
== Restricții și precizări ==&lt;br /&gt;
* &#039;&#039;&#039;nr_clase_7, elevi_clasa_7, nr_clase_8 și elevi_clasa_8 &amp;amp;isin; &amp;amp;Nu;&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;1 &amp;amp;les; nr_clase_7, elevi_clasa_7, nr_clase_8, elevi_clasa_8, nr_clase_necesare, nr_clase_repartizate_7, nr_clase_repartizate_8, nr_elevi_repartizati  &amp;amp;les; 1.000.000.000&#039;&#039;&#039;&lt;br /&gt;
== Exemplu1 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
: 4 30 5 27&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele de intrare corespund restricțiilor impuse.&lt;br /&gt;
: 17 8 9 15&lt;br /&gt;
== Explicație == &lt;br /&gt;
Pentru &#039;&#039;&#039;nr_clase_7=4&#039;&#039;&#039;, &#039;&#039;&#039;elevi_clasa_7=30&#039;&#039;&#039;, &#039;&#039;&#039;nr_clase_8=5&#039;&#039;&#039;, &#039;&#039;&#039;elevi_clasa_8=27&#039;&#039;&#039;, numărul de clase necesar acestei noi repartizări este &#039;&#039;&#039;nr_clase_necesare=17&#039;&#039;&#039;, dintre care vor fi &#039;&#039;&#039;nr_clase_repartizate_7=8&#039;&#039;&#039; clase a VII-a și &#039;&#039;&#039;nr_clase_repartizate_8=9&#039;&#039;&#039; clase a VIII-a, iar în fiecare clasă vor fi repartizați maxim &#039;&#039;&#039;nr_elevi_repartizati=15&#039;&#039;&#039; elevi.&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
def validare_date(nr_clase_7, elevi_clasa_7, nr_clase_8, elevi_clasa_8):&lt;br /&gt;
    if 0 &amp;lt;= int(nr_clase_7) &amp;lt;= 1_000_000 and 0 &amp;lt;= int(elevi_clasa_7) &amp;lt;= 1_000_000 \&lt;br /&gt;
            and 0 &amp;lt;= int(nr_clase_8) &amp;lt;= 1_000_000 and 0 &amp;lt;= int(elevi_clasa_8) &amp;lt;= 1_000_000:&lt;br /&gt;
        return True&lt;br /&gt;
    return False&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def cmmdc(nr_elevi_7, nr_elevi_8):&lt;br /&gt;
    while nr_elevi_8:&lt;br /&gt;
        r = nr_elevi_7 % nr_elevi_8&lt;br /&gt;
        nr_elevi_7 = nr_elevi_8&lt;br /&gt;
        nr_elevi_8 = r&lt;br /&gt;
    return nr_elevi_7&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def calculare_repartizare(nr_clase_7, elevi_clasa_7, nr_clase_8, elevi_clasa_8):&lt;br /&gt;
    nr_elevi_7 = nr_clase_7 * elevi_clasa_7&lt;br /&gt;
    nr_elevi_8 = nr_clase_8 * elevi_clasa_8&lt;br /&gt;
    nr_elevi_repartizati = cmmdc(nr_elevi_7, nr_elevi_8)&lt;br /&gt;
    nr_clase_repartizate_7 = nr_elevi_7 // nr_elevi_repartizati&lt;br /&gt;
    nr_clase_repartizate_8 = nr_elevi_8 // nr_elevi_repartizati&lt;br /&gt;
    nr_clase_necesare = nr_clase_repartizate_7 + nr_clase_repartizate_8&lt;br /&gt;
    print(nr_clase_necesare, nr_clase_repartizate_7, nr_clase_repartizate_8, nr_elevi_repartizati)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    nr_clase_7, elevi_clasa_7, nr_clase_8, elevi_clasa_8 = map(int, input().split())&lt;br /&gt;
    if validare_date(nr_clase_7, elevi_clasa_7, nr_clase_8, elevi_clasa_8):&lt;br /&gt;
        print(&amp;quot;\nDatele de intrare corespund restrictiilor impuse.\n&amp;quot;)&lt;br /&gt;
        calculare_repartizare(nr_clase_7, elevi_clasa_7, nr_clase_8, elevi_clasa_8)&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;
Programul citește de la tastatură numărul de clase și numărul de elevi pe clasă pentru două niveluri de învățământ (clasele a 7-a și a 8-a) și calculează numărul total de clase necesare pentru a repartiza toți elevii în grupuri de același număr. Înainte de a face calculele, se verifică dacă valorile introduse sunt cuprinse între 0 și 1.000.000. Funcția cmmdc este utilizată pentru a calcula cel mai mare divizor comun al numărului de elevi din cele două niveluri. Se calculează, de asemenea, numărul de clase necesare pentru nivelul 7 și nivelul 8, precum și numărul total de clase necesare. Rezultatele sunt afișate într-un format specific.&lt;/div&gt;</summary>
		<author><name>Robert Manc</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=2771_-_Covorul&amp;diff=5250</id>
		<title>2771 - Covorul</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=2771_-_Covorul&amp;diff=5250"/>
		<updated>2023-04-28T16:13:10Z</updated>

		<summary type="html">&lt;p&gt;Robert Manc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cerinţa ==&lt;br /&gt;
Mama vrea să acopere cu covoare o cameră cu lungimea de &#039;&#039;&#039;dimensiunea_x&#039;&#039;&#039; metri și lățimea de &#039;&#039;&#039;dimensiunea_y&#039;&#039;&#039; metri. Ea are la dispoziție oricâte covoare în formă de pătrat, de orice dimensiune, număr natural și respectă următoarele reguli:&lt;br /&gt;
&lt;br /&gt;
fiecare covor plasat are laturile paralele cu laturile camerei;&lt;br /&gt;
covoarele așezate nu se suprapun;&lt;br /&gt;
de fiecare dată se folosește cel mai mare covor care poate fi ales în acel moment;&lt;br /&gt;
de fiecare dată covorul ales se plasează în așa fel încât zona neacoperită încă să fie un dreptunghi.&lt;br /&gt;
Știind dimensiunile camerei să se determine care este dimensiunea maximă a unui covor folosit și numărul total de covoare folosite.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Programul citește de la tastatură numerele &#039;&#039;&#039;dimensiunea_x&#039;&#039;&#039; și &#039;&#039;&#039;dimensiunea_y&#039;&#039;&#039;, reprezentând dimensiunile camerei.&lt;br /&gt;
== Date de ieşire ==&lt;br /&gt;
Programul va afișa pe ecran numerele &#039;&#039;&#039;dim_max&#039;&#039;&#039; și &#039;&#039;&#039;numar_total&#039;&#039;&#039; reprezentând în ordine dimensiunea maximă a unui covor folosit și numărul total de covoare folosite.&lt;br /&gt;
== Restricții și precizări ==&lt;br /&gt;
* &#039;&#039;&#039;dimensiunea_x, dimensiunea_y &amp;amp;isin; &amp;amp;Nu;&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;1 &amp;amp;les; dimensiunea_x, dimensiunea_y &amp;amp;les; 1.000.000.000&#039;&#039;&#039;&lt;br /&gt;
* dimensiunile covoarelor sunt numere naturale nenule&lt;br /&gt;
== Exemplu1 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
: 10 3&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele de intrare corespund restricțiilor impuse.&lt;br /&gt;
: 3 6&lt;br /&gt;
== Explicație == &lt;br /&gt;
Se folosesc &#039;&#039;&#039;3&#039;&#039;&#039; covoare de latură &#039;&#039;&#039;3&#039;&#039;&#039; și &#039;&#039;&#039;3&#039;&#039;&#039; covoare de latură &#039;&#039;&#039;1&#039;&#039;&#039;. Dimensiunea maximă este &#039;&#039;&#039;3&#039;&#039;&#039;.&lt;br /&gt;
== Exemplu2 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
: 1 100&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele de intrare corespund restricțiilor impuse.&lt;br /&gt;
: 1 100&lt;br /&gt;
== Explicație == &lt;br /&gt;
Se folosesc &#039;&#039;&#039;100&#039;&#039;&#039; covoare de latură &#039;&#039;&#039;1&#039;&#039;&#039;. Dimensiunea maximă este &#039;&#039;&#039;1&#039;&#039;&#039;.&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
def validare_date(dimensiunea_x, dimensiunea_y):&lt;br /&gt;
    if 0 &amp;lt;= int(dimensiunea_x) &amp;lt;= 1_000_000_000 and 0 &amp;lt;= int(dimensiunea_y) &amp;lt;= 1_000_000_000:&lt;br /&gt;
        return True&lt;br /&gt;
    return False&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def calculeaza_numarul_covoarelor(dimensiunea_x, dimensiunea_y):&lt;br /&gt;
    dim_max = min(dimensiunea_x, dimensiunea_y)&lt;br /&gt;
    print(dim_max, end=&#039; &#039;)&lt;br /&gt;
    numar_total = 0&lt;br /&gt;
    while dimensiunea_x != 0 and dimensiunea_y != 0:&lt;br /&gt;
        if dimensiunea_x &amp;gt; dimensiunea_y:&lt;br /&gt;
            x = dimensiunea_x // dimensiunea_y&lt;br /&gt;
            dimensiunea_x -= x * dimensiunea_y&lt;br /&gt;
            numar_total += x&lt;br /&gt;
        else:&lt;br /&gt;
            x = dimensiunea_y // dimensiunea_x&lt;br /&gt;
            dimensiunea_y -= x * dimensiunea_x&lt;br /&gt;
            numar_total += x&lt;br /&gt;
    print(numar_total)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    dimensiunea_x, dimensiunea_y = map(int, input().split())&lt;br /&gt;
    if validare_date(dimensiunea_x, dimensiunea_y):&lt;br /&gt;
        print(&amp;quot;\nDatele de intrare corespund restrictiilor impuse.\n&amp;quot;)&lt;br /&gt;
        calculeaza_numarul_covoarelor(dimensiunea_x, dimensiunea_y)&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;
Programul citește de la tastatură dimensiunile unei camere si calculează numărul minim de covoare necesare pentru a acoperi podeaua întregii camere, folosind algoritmul lui Euclid pentru determinarea CMMDC-ului. Mai întâi se valideaza dimensiunile, apoi se calculeaza CMMDC-ul dintre cele două dimensiuni, pentru a obține dimensiunea maxima a unui covor. Apoi, se calculeaza numărul total de covoare necesare prin împărțirea produsului celor două dimensiuni la pătratul dimensiunii maxime si se afișează dimensiunea maximă a covorului și numărul total de covoare necesare.&lt;/div&gt;</summary>
		<author><name>Robert Manc</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=0378_-_Pavare&amp;diff=5249</id>
		<title>0378 - Pavare</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=0378_-_Pavare&amp;diff=5249"/>
		<updated>2023-04-28T16:10:52Z</updated>

		<summary type="html">&lt;p&gt;Robert Manc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cerinţa ==&lt;br /&gt;
Curtea bunicului este de formă dreptunghiulară cu dimensiunile cunoscute. Bunicul dorește pavarea curții cu plăci de piatră. Firma furnizoare produce plăci de piatră de formă pătrată, de orice dimensiune, iar bunicul dorește să folosească plăci de o singură dimensiune, astfel încât să folosească cât mai puține plăci. NU este posibilă tăierea plăcilor de piatră, iar curtea trebuie pavată în întregime.&lt;br /&gt;
&lt;br /&gt;
Cunoscând dimensiunile curții, determinați numărul minim de plăci cu care poate fi pavată curtea și dimensiunea acestora.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Programul citește de la tastatură două numere naturale &#039;&#039;&#039;dim1 dim2&#039;&#039;&#039;, reprezentând dimensiunile curții.&lt;br /&gt;
== Date de ieşire ==&lt;br /&gt;
Programul afișează pe ecran numerele &#039;&#039;&#039;numar_placi&#039;&#039;&#039; și &#039;&#039;&#039;dim_max&#039;&#039;&#039;, separate prin exact un spațiu, reprezentând numărul minim de plăci cu care poate fi pavată curtea și dimensiunea acestora.&lt;br /&gt;
== Restricții și precizări ==&lt;br /&gt;
* &#039;&#039;&#039;dim1, dim2 &amp;amp;isin; &amp;amp;Nu;&#039;&#039;&#039;&lt;br /&gt;
* 1 &amp;amp;les; dim1, dim2&amp;amp;les; 1.000.000.000&lt;br /&gt;
== Exemplu1 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
: 12 16&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele de intrare corespund restricțiilor impuse.&lt;br /&gt;
: 12 4&lt;br /&gt;
== Explicație ==&lt;br /&gt;
Dimensiunea maximă plăcilor cu care se poate pava curtea este &#039;&#039;&#039;4&#039;&#039;&#039;. Se vor folosi &#039;&#039;&#039;12&#039;&#039;&#039; plăci.&lt;br /&gt;
== Exemplu2 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
: 26 8&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele de intrare corespund restricțiilor impuse.&lt;br /&gt;
: 52 2&lt;br /&gt;
== Explicație ==&lt;br /&gt;
Dimensiunea maximă plăcilor cu care se poate pava curtea este &#039;&#039;&#039;2&#039;&#039;&#039;. Se vor folosi &#039;&#039;&#039;52&#039;&#039;&#039; plăci.&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
import math&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def validare_date(dim1, dim2):&lt;br /&gt;
    flag = False&lt;br /&gt;
    if 0 &amp;lt;= int(dim1) &amp;lt; 1_000_000_000 and 0 &amp;lt;= int(dim2) &amp;lt; 1_000_000_000:&lt;br /&gt;
        flag = True&lt;br /&gt;
    return flag&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def pavare_curte(dim1, dim2):&lt;br /&gt;
    if dim1 &amp;lt; dim2:&lt;br /&gt;
        dim1, dim2 = dim2, dim1&lt;br /&gt;
    cmmdc = math.gcd(dim1, dim2)&lt;br /&gt;
    dim_max = cmmdc&lt;br /&gt;
    numar_placi = dim1 * dim2 // (dim_max ** 2)&lt;br /&gt;
    print(numar_placi, dim_max)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    dim1, dim2 = map(int, input().split())&lt;br /&gt;
    if validare_date(dim1, dim2):&lt;br /&gt;
        print(&amp;quot;\nDatele de intrare corespund restrictiilor impuse.\n&amp;quot;)&lt;br /&gt;
        pavare_curte(dim1, dim2)&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 ==&#039;&#039;&#039;&lt;br /&gt;
Codul are rol de a calcula numărul de plăci necesare și dimensiunea acestora pentru a pava o curte dreptunghiulară cu dimensiunile date. Funcția &#039;&#039;&#039;pavare_curte&#039;&#039;&#039; calculează cmmdc-ul (cel mai mare divizor comun) al celor două dimensiuni, care este de fapt dimensiunea plăcii, și apoi calculează numărul de plăci necesare pentru a acoperi curtea. Rezultatele sunt afișate la consolă.&lt;/div&gt;</summary>
		<author><name>Robert Manc</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=3407_-_Aoc_2020&amp;diff=5248</id>
		<title>3407 - Aoc 2020</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=3407_-_Aoc_2020&amp;diff=5248"/>
		<updated>2023-04-28T16:08:34Z</updated>

		<summary type="html">&lt;p&gt;Robert Manc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cerinţa ==&lt;br /&gt;
Gigel a fost prins de doamna profesoară de matematică în timp ce se juca Art of conquest pe telefon în timpul orei de matematică. Drept pedeapsă, aceasta i-a dat să calculeze cel mai mic multiplu comun al unui șir de &#039;&#039;&#039;n&#039;&#039;&#039; numere naturale. Dorind să termine cât mai repede ceea ce are de făcut și să reia jocul fără să fie dat afară din alianță, Gigel apelează la ajutorul tău și te roagă să scrii un program care să îi rezolve problema primită ca pedeapsă.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Fișierul de intrare &#039;&#039;&#039;aoc2020.in&#039;&#039;&#039; conține pe prima linie numărul &#039;&#039;&#039;n&#039;&#039;&#039;, iar pe a doua linie &#039;&#039;&#039;n&#039;&#039;&#039; numere naturale separate prin spații.&lt;br /&gt;
== Date de ieşire ==&lt;br /&gt;
Fișierul de ieșire &#039;&#039;&#039;aoc2020.out&#039;&#039;&#039; va conține pe prima linie numărul &#039;&#039;&#039;cmmmc_total&#039;&#039;&#039;, reprezentând cel mai mic multiplu comun ale celor &#039;&#039;&#039;n&#039;&#039;&#039; numere citite .&lt;br /&gt;
== Restricții și precizări ==&lt;br /&gt;
* &#039;&#039;&#039;n &amp;amp;isin; &amp;amp;Nu;&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;1 &amp;amp;les; n &amp;amp;les; 100&#039;&#039;&#039;&lt;br /&gt;
* numerele de pe a doua linie a fișierului de intrare vor fi mai mici sau egale cu &#039;&#039;&#039;1.000&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;cmmmc_total&#039;&#039;&#039; are cel mult &#039;&#039;&#039;18&#039;&#039;&#039; cifre;&lt;br /&gt;
== Exemplu1 ==&lt;br /&gt;
; aoc2020.in&lt;br /&gt;
: 4&lt;br /&gt;
: 18 54 24 42&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele de intrare corespund restricțiilor impuse.&lt;br /&gt;
; aoc2020.out&lt;br /&gt;
: 1512&lt;br /&gt;
== Explicație ==&lt;br /&gt;
Cel mai mic multiplu comun al numerelor &#039;&#039;&#039;18&#039;&#039;&#039;, &#039;&#039;&#039;54&#039;&#039;&#039;, &#039;&#039;&#039;24&#039;&#039;&#039; și &#039;&#039;&#039;42&#039;&#039;&#039; este &#039;&#039;&#039;1512&#039;&#039;&#039;.&lt;br /&gt;
== Exemplu2 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
: 6&lt;br /&gt;
: 12 65 18 32 9 15&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele de intrare corespund restricțiilor impuse.&lt;br /&gt;
; aoc2020.out&lt;br /&gt;
: 18720&lt;br /&gt;
== Explicație ==&lt;br /&gt;
Cel mai mic multiplu comun al numerelor &#039;&#039;&#039;12&#039;&#039;&#039;, &#039;&#039;&#039;65&#039;&#039;&#039;, &#039;&#039;&#039;18&#039;&#039;&#039;, &#039;&#039;&#039;32&#039;&#039;&#039;, &#039;&#039;&#039;9&#039;&#039;&#039; și &#039;&#039;&#039;15&#039;&#039;&#039; este &#039;&#039;&#039;18720&#039;&#039;&#039;.&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
def validare_date(numar, numere):&lt;br /&gt;
    if not 1 &amp;lt;= numar &amp;lt;= 100:&lt;br /&gt;
        return False&lt;br /&gt;
    if not all(isinstance(x, int) and 1 &amp;lt;= x &amp;lt;= 1000 for x in numere):&lt;br /&gt;
        return False&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def cmmdc(numar1, numar2):&lt;br /&gt;
    while numar2:&lt;br /&gt;
        numar1, numar2 = numar2, numar1 % numar2&lt;br /&gt;
    return numar1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def cmmmc(numar1, numar2):&lt;br /&gt;
    return (numar1 * numar2) // cmmdc(numar1, numar2)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def calculeaza_cmmmc_total(numere):&lt;br /&gt;
    cmmmc_total = numere[0]&lt;br /&gt;
    for i in range(1, len(numere)):&lt;br /&gt;
        cmmmc_total = cmmmc(cmmmc_total, numere[i])&lt;br /&gt;
    output.write(str(cmmmc_total))&lt;br /&gt;
    output.close()&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    with open(&#039;aoc2020.in&#039;) as f:&lt;br /&gt;
        n = int(f.readline())&lt;br /&gt;
        numere = list(map(int, f.readline().split()))&lt;br /&gt;
    if not validare_date(n, numere):&lt;br /&gt;
        print(&amp;quot;Datele de intrare nu corespund restrictiilor impuse.&amp;quot;)&lt;br /&gt;
    else:&lt;br /&gt;
        print(&amp;quot;Datele de intrare corespund restricțiilor impuse.&amp;quot;)&lt;br /&gt;
        output = open(&amp;quot;aoc2020.out&amp;quot;, &amp;quot;w&amp;quot;)&lt;br /&gt;
        calculeaza_cmmmc_total(numere)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Explicație ==&lt;br /&gt;
Acest cod citeste dintr-un fisier numarul de elemente si o lista de numere, verifica daca datele sunt valide, calculeaza cel mai mic multiplu comun pentru intreaga lista de numere si scrie rezultatul intr-un fisier de iesire. Functia &#039;&#039;&#039;validare_date&#039;&#039;&#039; verifica daca numarul de elemente este intre 1 si 100 si daca fiecare numar din lista este intre 1 si 1000. Functia &#039;&#039;&#039;cmmdc&#039;&#039;&#039; calculeaza cel mai mare divizor comun intre doua numere folosind algoritmul lui Euclid. Functia &#039;&#039;&#039;cmmmc&#039;&#039;&#039; calculeaza cel mai mic multiplu comun intre doua numere folosind formula cmmmc = (numar1 * numar2) / cmmdc(numar1, numar2). Functia &#039;&#039;&#039;calculeaza_cmmmc_total&#039;&#039;&#039; calculeaza cmmmc pentru intreaga lista de numere folosind functia &#039;&#039;&#039;cmmmc&#039;&#039;&#039; si scrie rezultatul in fisierul de iesire.&lt;/div&gt;</summary>
		<author><name>Robert Manc</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=0305_-_CMMDC_N&amp;diff=5247</id>
		<title>0305 - CMMDC N</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=0305_-_CMMDC_N&amp;diff=5247"/>
		<updated>2023-04-28T16:06:00Z</updated>

		<summary type="html">&lt;p&gt;Robert Manc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cerinţa ==&lt;br /&gt;
Se dau &#039;&#039;&#039;n&#039;&#039;&#039; numere naturale nenule. Calculaţi cel mai mare divizor comun al lor.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Programul citește de la tastatură numărul &#039;&#039;&#039;n&#039;&#039;&#039;, iar apoi &#039;&#039;&#039;n&#039;&#039;&#039; numere naturale, separate prin spaţii.&lt;br /&gt;
== Date de ieşire ==&lt;br /&gt;
Programul afișează pe ecran numărul &#039;&#039;&#039;cmmdcn&#039;&#039;&#039;, reprezentând cel mai mare divizor comun al celor &#039;&#039;&#039;n&#039;&#039;&#039; numere citite.&lt;br /&gt;
== Restricții și precizări ==&lt;br /&gt;
* n &amp;amp;isin; &amp;amp;Nu;&lt;br /&gt;
* 1 &amp;amp;les; n &amp;amp;les; 1.000&lt;br /&gt;
* cele &#039;&#039;&#039;n&#039;&#039;&#039; numere citite vor avea cel mult &#039;&#039;&#039;9&#039;&#039;&#039; cifre&lt;br /&gt;
== Exemplu1 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
: 4&lt;br /&gt;
: 18 54 24 42&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele de intrare corespund restricțiilor impuse.&lt;br /&gt;
: 6&lt;br /&gt;
== Exemplu2 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
: 5&lt;br /&gt;
: 12 156 60 24 96&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele de intrare corespund restricțiilor impuse.&lt;br /&gt;
: 12&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
def validare_date(numar, numere):&lt;br /&gt;
    if 1 &amp;lt;= numar &amp;lt;= 1000:&lt;br /&gt;
        return all(isinstance(x, int) and 0 &amp;lt;= x &amp;lt; 1000000000 for x in numere)&lt;br /&gt;
    return False&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def cmmdc(numar1, numar2):&lt;br /&gt;
    while numar2 != 0:&lt;br /&gt;
        rest = numar1 % numar2&lt;br /&gt;
        numar1 = numar2&lt;br /&gt;
        numar2 = rest&lt;br /&gt;
    return numar1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def cmmdc_multiplu(numere):&lt;br /&gt;
    cmmdcn = numere[0]&lt;br /&gt;
    for i in range(1, len(numere)):&lt;br /&gt;
        cmmdcn = cmmdc(cmmdcn, numere[i])&lt;br /&gt;
    return cmmdcn&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    n = int(input())&lt;br /&gt;
    numere = list(map(int, input().split()))&lt;br /&gt;
    if validare_date(n, numere):&lt;br /&gt;
        print(&amp;quot;\nDatele de intrare corespund restricțiilor impuse.\n&amp;quot;)&lt;br /&gt;
        print(cmmdc_multiplu(numere))&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;
Programul calculează cel mai mare divizor comun (CMMDC) al unui număr de numere. Funcția &#039;&#039;&#039;validare_date&#039;&#039;&#039; verifică dacă numărul de numere și fiecare număr în parte respectă anumite restricții, în timp ce funcția &#039;&#039;&#039;cmmdc&#039;&#039;&#039; calculează CMMDC folosind algoritmul Euclid. Funcția &#039;&#039;&#039;cmmdc_multiplu&#039;&#039;&#039; este folosită pentru a calcula CMMDC pentru mai multe numere simultan. Dacă toate datele de intrare sunt valide, codul afișează CMMDC-ul.&lt;/div&gt;</summary>
		<author><name>Robert Manc</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=3307_-_Fractie_6&amp;diff=5246</id>
		<title>3307 - Fractie 6</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=3307_-_Fractie_6&amp;diff=5246"/>
		<updated>2023-04-28T16:04:04Z</updated>

		<summary type="html">&lt;p&gt;Robert Manc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cerinţa ==&lt;br /&gt;
Se dă un numar &#039;&#039;&#039;n&#039;&#039;&#039; și &#039;&#039;&#039;n&#039;&#039;&#039; perechi de numere naturale &#039;&#039;&#039;numar1&#039;&#039;&#039; și &#039;&#039;&#039;numar2&#039;&#039;&#039;.Să se determine dacă &#039;&#039;&#039;numar1/numar2&#039;&#039;&#039; este fracție finită sau periodică, iar dacă este fracție periodică să se determine dacă este fracție periodică simplă sau mixtă.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Se citește de la tastatură un număr &#039;&#039;&#039;n&#039;&#039;&#039; și apoi &#039;&#039;&#039;n&#039;&#039;&#039; perechi de numere &#039;&#039;&#039;numar1 numar2&#039;&#039;&#039;.&lt;br /&gt;
== Date de ieşire ==&lt;br /&gt;
Programul afișează pentru fiecare pereche citită, pe câte un rând, mesajul &#039;&#039;&#039;fractie finita&#039;&#039;&#039;, &#039;&#039;&#039;fractie periodica simpla&#039;&#039;&#039; sau &#039;&#039;&#039;fractie periodica mixta&#039;&#039;&#039; în funcție de caz.&lt;br /&gt;
== Restricții și precizări ==&lt;br /&gt;
* n &amp;amp;isin; &amp;amp;Nu;&lt;br /&gt;
* 1 &amp;amp;les; n &amp;amp;les; 100&lt;br /&gt;
* 1 &amp;amp;les; numar1, numar2 &amp;amp;les; 1.000.000.000, numere naturale&lt;br /&gt;
== Exemplu1 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
: 5&lt;br /&gt;
: 2 5&lt;br /&gt;
: 7 90&lt;br /&gt;
: 90 270&lt;br /&gt;
: 50 81000&lt;br /&gt;
: 9 3&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele de intrare corespund restricțiilor impuse.&lt;br /&gt;
: fractie finita&lt;br /&gt;
: fractie periodica mixta&lt;br /&gt;
: fractie periodica simpla&lt;br /&gt;
: fractie periodica mixta&lt;br /&gt;
: fractie finita&lt;br /&gt;
== Exemplu2 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
: 4&lt;br /&gt;
: 5 10&lt;br /&gt;
: 65 34&lt;br /&gt;
: 88 168&lt;br /&gt;
: 91 71&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele de intrare corespund restricțiilor impuse.&lt;br /&gt;
: fractie finita&lt;br /&gt;
: fractie periodica simpla&lt;br /&gt;
: fractie periodica simpla&lt;br /&gt;
: fractie periodica simpla&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
def validare_n(n):&lt;br /&gt;
    return 1 &amp;lt;= n &amp;lt;= 100&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def validare_numere(numar1, numar2):&lt;br /&gt;
    return 1 &amp;lt;= numar1 &amp;lt;= 1_000_000_000 and 1 &amp;lt;= numar2 &amp;lt;= 1_000_000_000&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def gcd(numar1, numar2):&lt;br /&gt;
    if numar2 == 0:&lt;br /&gt;
        return numar1&lt;br /&gt;
&lt;br /&gt;
    return gcd(numar2, numar1 % numar2)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def fractie(n, numere):&lt;br /&gt;
    rezultate = []&lt;br /&gt;
    for i in range(n):&lt;br /&gt;
        numar1, numar2 = numere[i]&lt;br /&gt;
        if not validare_numere(numar1, numar2):&lt;br /&gt;
            print(&amp;quot;Datele de intrare nu corespund restrictiilor impuse.&amp;quot;)&lt;br /&gt;
            break&lt;br /&gt;
        g = gcd(numar1, numar2)&lt;br /&gt;
        numar2 //= g&lt;br /&gt;
&lt;br /&gt;
        twos, fives = 0, 0&lt;br /&gt;
&lt;br /&gt;
        while numar2 % 2 == 0:&lt;br /&gt;
            twos += 1&lt;br /&gt;
            numar2 //= 2&lt;br /&gt;
&lt;br /&gt;
        while numar2 % 5 == 0:&lt;br /&gt;
            fives += 1&lt;br /&gt;
            numar2 //= 5&lt;br /&gt;
&lt;br /&gt;
        if numar2 == 1:&lt;br /&gt;
            rezultate.append(&amp;quot;fractie finita&amp;quot;)&lt;br /&gt;
        elif twos or fives:&lt;br /&gt;
            rezultate.append(&amp;quot;fractie periodica mixta&amp;quot;)&lt;br /&gt;
        else:&lt;br /&gt;
            rezultate.append(&amp;quot;fractie periodica simpla&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    if len(rezultate) == n:&lt;br /&gt;
        print(&amp;quot;\nDatele de intrare corespund restrictiilor impuse.\n&amp;quot;)&lt;br /&gt;
        for r in rezultate:&lt;br /&gt;
            print(r)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    n = int(input())&lt;br /&gt;
    if validare_n(n):&lt;br /&gt;
        numere = [tuple(map(int, input().split())) for _ in range(n)]&lt;br /&gt;
        fractie(n, numere)&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;
Programul verifică dacă numerele introduse de utilizator reprezintă fracții finite sau periodice, și afișează tipul fracției pentru fiecare număr.&lt;br /&gt;
&lt;br /&gt;
Funcția &#039;&#039;&#039;gcd&#039;&#039;&#039; calculează cel mai mare divizor comun dintre cele două numere date, iar funcția &#039;&#039;&#039;fractie&#039;&#039;&#039; calculează tipul fracției pentru fiecare număr. Dacă numărul este o fracție finită, se adaugă în lista &#039;&#039;&#039;rezultate&#039;&#039;&#039; string-ul &amp;quot;fractie finita&amp;quot;, altfel se calculează numărul de doi și cinci din descompunerea în factori primi ai numitorului. Dacă numitorul are factori diferiți de 2 și 5, atunci este o fracție periodică simplă, altfel este o fracție periodică mixtă.&lt;br /&gt;
&lt;br /&gt;
Dacă toate fracțiile au fost verificate, lista &#039;&#039;&#039;rezultate&#039;&#039;&#039; este afișată, altfel se afișează un mesaj de eroare.&lt;/div&gt;</summary>
		<author><name>Robert Manc</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=0391_-_Fractii&amp;diff=5245</id>
		<title>0391 - Fractii</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=0391_-_Fractii&amp;diff=5245"/>
		<updated>2023-04-28T16:01:53Z</updated>

		<summary type="html">&lt;p&gt;Robert Manc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cerinţa ==&lt;br /&gt;
Se dau &#039;&#039;&#039;n&#039;&#039;&#039; perechi de numere naturale nenule, fiecare reprezentând câte o fracţie. Calculaţi suma celor &#039;&#039;&#039;n&#039;&#039;&#039; fracţii, aducând rezultatul la forma ireductibilă.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Programul citește de la tastatură numărul &#039;&#039;&#039;n&#039;&#039;&#039;, iar apoi &#039;&#039;&#039;n&#039;&#039;&#039; perechi de numere naturale, reprezentând numărătorul şi numitorul unei fracţii.&lt;br /&gt;
== Date de ieşire ==&lt;br /&gt;
Programul afișează pe ecran numerele &#039;&#039;&#039;numarator1&#039;&#039;&#039; &#039;&#039;&#039;numitor1&#039;&#039;&#039;, separate prin exact un spaţiu, reprezentând numărătorul şi numitorul fracţiei sumă, adusă la forma ireductibilă.&lt;br /&gt;
== Restricții și precizări ==&lt;br /&gt;
* n &amp;amp;isin; &amp;amp;Nu;&lt;br /&gt;
* 1 &amp;amp;les; n &amp;amp;les; 10&lt;br /&gt;
* numărătorul şi numitorul fiecărei fracţii sunt numere naturale cu cel mult două cifre&lt;br /&gt;
== Exemplu1 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
: 4&lt;br /&gt;
: 1 3&lt;br /&gt;
: 5 6&lt;br /&gt;
: 1 2&lt;br /&gt;
: 4 2&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele de intrare corespund restricțiilor impuse.&lt;br /&gt;
: 11 3&lt;br /&gt;
== Exemplu2 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
: 3&lt;br /&gt;
: 4 5&lt;br /&gt;
: 8 2&lt;br /&gt;
: 9 10&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele de intrare corespund restricțiilor impuse.&lt;br /&gt;
: 57 10&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
import math&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def validare_date(numar, numere):&lt;br /&gt;
    flag = False&lt;br /&gt;
    if 0 &amp;lt; int(numar) &amp;lt; 10 and len(numere) == 2:&lt;br /&gt;
        flag = all(isinstance(x, int) and 1 &amp;lt;= x &amp;lt;= 1_000_000_000 for x in numere)&lt;br /&gt;
    return flag&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def suma(n, numarator1, numitor1):&lt;br /&gt;
    date = True&lt;br /&gt;
    for i in range(n-1):&lt;br /&gt;
        pereche = input().split()&lt;br /&gt;
        if validare_date(pereche[0], [int(pereche[0]), int(pereche[1])]):&lt;br /&gt;
            numarator2, numitor2 = int(pereche[0]), int(pereche[1])&lt;br /&gt;
            numarator1 = numarator1 * numitor2 + numarator2 * numitor1&lt;br /&gt;
            numitor1 = numitor1 * numitor2&lt;br /&gt;
            cmmdc = math.gcd(numarator1, numitor1)&lt;br /&gt;
            numarator1 = numarator1 // cmmdc&lt;br /&gt;
            numitor1 = numitor1 // cmmdc&lt;br /&gt;
        else:&lt;br /&gt;
            print(&amp;quot;Datele de intrare nu corespund restrictiilor impuse.&amp;quot;)&lt;br /&gt;
            date = False&lt;br /&gt;
            break&lt;br /&gt;
    if date:&lt;br /&gt;
        print(&amp;quot;\nDatele de intrare corespund restricțiilor impuse.\n&amp;quot;)&lt;br /&gt;
        print(numarator1, numitor1)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    n = int(input())&lt;br /&gt;
    a, b = map(int, input().split())&lt;br /&gt;
    if validare_date(n, [a, b]):&lt;br /&gt;
        suma(n, a, b)&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;
Codul primește la intrare un număr întreg n, urmat de două numere întregi a și b, și apoi primește încă n-1 perechi de numere întregi. Programul calculează suma fracțiilor primite la intrare și afișează rezultatul sub forma unei fracții ireductibile.&lt;br /&gt;
&lt;br /&gt;
Funcția &#039;&#039;&#039;suma&#039;&#039;&#039; primește numărul de fracții ce urmează a fi adunate, numărătorul și numitorul primei fracții. Apoi, pentru fiecare fracție următoare, se face următoarele: se citește perechea de numere, se verifică dacă aceasta respectă restricțiile impuse prin intermediul funcției &#039;&#039;&#039;validare_date&#039;&#039;&#039;, se adună fracția la suma totală și se simplifică rezultatul.&lt;br /&gt;
&lt;br /&gt;
Dacă toate datele de intrare sunt valide, programul afișează suma fracțiilor.&lt;/div&gt;</summary>
		<author><name>Robert Manc</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=0390_-_SPFractii&amp;diff=5244</id>
		<title>0390 - SPFractii</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=0390_-_SPFractii&amp;diff=5244"/>
		<updated>2023-04-28T16:00:11Z</updated>

		<summary type="html">&lt;p&gt;Robert Manc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cerinţa ==&lt;br /&gt;
Se dau &#039;&#039;&#039;4&#039;&#039;&#039; numere naturale &#039;&#039;&#039;a b c d&#039;&#039;&#039;, reprezentând fracțiile &#039;&#039;&#039;a/b&#039;&#039;&#039; și &#039;&#039;&#039;c/d&#039;&#039;&#039;. Calculați suma și produsul celor două fracții, aduse la forma ireductibilă.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Programul citește de la tastatură numerele &#039;&#039;&#039;a b c d&#039;&#039;&#039;.&lt;br /&gt;
== Date de ieşire ==&lt;br /&gt;
Programul afișează pe ecran numerele &#039;&#039;&#039;suma_numarator&#039;&#039;&#039; și &#039;&#039;&#039;suma_numitor&#039;&#039;&#039;, reprezentând numărătorul și numitorul sumei celor două fracţii, adusă la forma ireductibilă, iar linia următoare numerele &#039;&#039;&#039;produs_numarator&#039;&#039;&#039; și &#039;&#039;&#039;produs_numitor&#039;&#039;&#039;, reprezentând numărătorul și numitorul produsului celor două fracții, adus la forma ireductibilă.&lt;br /&gt;
== Restricții și precizări ==&lt;br /&gt;
* a, b, c, d &amp;amp;isin; &amp;amp;Nu;&lt;br /&gt;
* 1 &amp;amp;les; a, b, c, d &amp;amp;les; 10.000&lt;br /&gt;
== Exemplu1 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
: 1 2 4 3&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele de intrare corespund restricțiilor impuse.&lt;br /&gt;
: 11 6&lt;br /&gt;
: 2 3&lt;br /&gt;
== Explicație ==&lt;br /&gt;
Suma fractiilor &#039;&#039;&#039;1/2&#039;&#039;&#039; și &#039;&#039;&#039;4/3&#039;&#039;&#039; este &#039;&#039;&#039;11/6&#039;&#039;&#039;, iar produsul este &#039;&#039;&#039;2/3&#039;&#039;&#039;.&lt;br /&gt;
== Exemplu2 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
: 4 2 8 2&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele de intrare corespund restricțiilor impuse.&lt;br /&gt;
: 6 1&lt;br /&gt;
: 8 1&lt;br /&gt;
== Explicație ==&lt;br /&gt;
Suma fractiilor &#039;&#039;&#039;4/2&#039;&#039;&#039; și &#039;&#039;&#039;8/2&#039;&#039;&#039; este &#039;&#039;&#039;12/2&#039;&#039;&#039;, care adus la forma lui ireductibila este &#039;&#039;&#039;6/1&#039;&#039;&#039;, iar produsul este &#039;&#039;&#039;8/1&#039;&#039;&#039;.&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
def validare_date(n):&lt;br /&gt;
    flag = all(isinstance(x, int) and 0 &amp;lt; x &amp;lt;= 10000 for x in n)&lt;br /&gt;
    return flag&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def cmmdc(numar1, numar2):&lt;br /&gt;
    while numar2:&lt;br /&gt;
        rest = numar1 % numar2&lt;br /&gt;
        numar1, numar2 = numar2, rest&lt;br /&gt;
    return numar1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def impartire_la_cmmdc(numar1, numar2):&lt;br /&gt;
    cmmdc_nr = cmmdc(numar1, numar2)&lt;br /&gt;
    return numar1 // cmmdc_nr, numar2 // cmmdc_nr&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def calculeaza(n):&lt;br /&gt;
    a, b, c, d = n&lt;br /&gt;
    suma_numarator = a*d + b*c&lt;br /&gt;
    suma_numitor = b*d&lt;br /&gt;
    produs_numarator = a*c&lt;br /&gt;
    produs_numitor = b*d&lt;br /&gt;
    suma_numarator, suma_numitor = impartire_la_cmmdc(suma_numarator, suma_numitor)&lt;br /&gt;
    produs_numarator, produs_numitor = impartire_la_cmmdc(produs_numarator, produs_numitor)&lt;br /&gt;
    print(suma_numarator, suma_numitor)&lt;br /&gt;
    print(produs_numarator, produs_numitor)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    n = list(map(int, input().split()))&lt;br /&gt;
    if validare_date(n):&lt;br /&gt;
        print(&amp;quot;\nDatele de intrare corespund restricțiilor impuse.\n&amp;quot;)&lt;br /&gt;
        calculeaza(n)&lt;br /&gt;
    else:&lt;br /&gt;
        print(&amp;quot;Datele de intrare nu corespund restricțiilor impuse.&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Explicație ==&lt;br /&gt;
Programul citește de la tastatură o listă de 4 numere întregi și verifică dacă acestea îndeplinesc anumite restricții. Dacă aceste restricții sunt îndeplinite, programul calculează suma și produsul fracțiilor corespunzătoare numerelor din listă, simplifică fracțiile obținute și afișează rezultatele.&lt;br /&gt;
&lt;br /&gt;
Funcția &#039;&#039;&#039;cmmdc&#039;&#039;&#039; calculează cel mai mare divizor comun dintre două numere utilizând algoritmul lui Euclid.&lt;br /&gt;
&lt;br /&gt;
Funcția &#039;&#039;&#039;impartire_la_cmmdc&#039;&#039;&#039; simplifică o fracție prin împărțirea numărătorului și numitorului la cel mai mare divizor comun al acestora.&lt;br /&gt;
&lt;br /&gt;
Funcția &#039;&#039;&#039;calculeaza&#039;&#039;&#039; primește lista de numere, descompune fiecare număr într-o fracție corespunzătoare și calculează suma și produsul acestora. Fracțiile obținute sunt simplificate prin împărțirea la cel mai mare divizor comun și afișate.&lt;/div&gt;</summary>
		<author><name>Robert Manc</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=0410_-_CMMDC_2&amp;diff=5243</id>
		<title>0410 - CMMDC 2</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=0410_-_CMMDC_2&amp;diff=5243"/>
		<updated>2023-04-28T15:58:18Z</updated>

		<summary type="html">&lt;p&gt;Robert Manc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cerinţa ==&lt;br /&gt;
Se dă un număr natural &#039;&#039;&#039;n&#039;&#039;&#039;. Acest număr se “împarte” în alte două numere &#039;&#039;&#039;a&#039;&#039;&#039; și &#039;&#039;&#039;b&#039;&#039;&#039;, astfel: &#039;&#039;&#039;a&#039;&#039;&#039; este format din cifrele din prima jumătate a lui &#039;&#039;&#039;n&#039;&#039;&#039;, &#039;&#039;&#039;b&#039;&#039;&#039; este format din cifrele din a doua jumătate a lui &#039;&#039;&#039;n&#039;&#039;&#039;. Dacă &#039;&#039;&#039;n&#039;&#039;&#039; are număr impar de cifre, cifra din mijloc se ignoră. De exemplu, dacă &#039;&#039;&#039;n=9183792&#039;&#039;&#039;, atunci &#039;&#039;&#039;a=918&#039;&#039;&#039;, iar &#039;&#039;&#039;b=792&#039;&#039;&#039;. Să se determine cel mai mare divizor comun al lui &#039;&#039;&#039;a&#039;&#039;&#039; și &#039;&#039;&#039;b&#039;&#039;&#039;.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Programul citește de la tastatură numărul &#039;&#039;&#039;n&#039;&#039;&#039;.&lt;br /&gt;
== Date de ieşire ==&lt;br /&gt;
Programul afișează pe ecran numărul &#039;&#039;&#039;cmmdc&#039;&#039;&#039;, reprezentând valoarea cerută.&lt;br /&gt;
== Restricții și precizări ==&lt;br /&gt;
* n &amp;amp;isin; &amp;amp;Nu;&lt;br /&gt;
* 0 &amp;amp;les; n &amp;amp;les; 1.000.000.000&lt;br /&gt;
== Exemplu1 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
: 9183792&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele de intrare corespund restricțiilor impuse.&lt;br /&gt;
: 18&lt;br /&gt;
== Exemplu2 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
: 2847956&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele de intrare corespund restricțiilor impuse.&lt;br /&gt;
: 4&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
def validare_date(numar):&lt;br /&gt;
    flag = False&lt;br /&gt;
    if numar.isdigit():&lt;br /&gt;
        if 10 &amp;lt;= int(numar) &amp;lt;= 1_000_000_000:&lt;br /&gt;
            flag = True&lt;br /&gt;
    return flag&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def CMD(numar1, numar2):&lt;br /&gt;
    while numar2:&lt;br /&gt;
        r = numar1 % numar2&lt;br /&gt;
        numar1, numar2 = numar2, r&lt;br /&gt;
    cmmdc = numar1&lt;br /&gt;
    return cmmdc&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def cel_mai_mare_divizor(numar):&lt;br /&gt;
    n = str(numar)&lt;br /&gt;
    if len(n) % 2 == 1:&lt;br /&gt;
        n = n[:len(n) // 2] + n[len(n) // 2 + 1:]&lt;br /&gt;
    jumatate = len(n) // 2&lt;br /&gt;
    a = int(n[:jumatate])&lt;br /&gt;
    b = int(n[jumatate:])&lt;br /&gt;
    cmmdc = CMD(a, b)&lt;br /&gt;
    print(cmmdc)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    numar = input()&lt;br /&gt;
    if validare_date(numar):&lt;br /&gt;
        print(&amp;quot;\nDatele de intrare corespund restricțiilor impuse.\n&amp;quot;)&lt;br /&gt;
        cel_mai_mare_divizor(numar)&lt;br /&gt;
    else:&lt;br /&gt;
        print(&amp;quot;Datele de intrare nu corespund restricțiilor impuse.&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Explicație ==&lt;br /&gt;
Codul calculează cel mai mare divizor comun dintre două numere, reprezentate de jumătățile unui număr introdus de la tastatură. Mai întâi, se validează inputul pentru a se asigura că respectă restricțiile impuse, apoi se calculează jumătățile numărului și se aplică algoritmul lui Euclid pentru a găsi cel mai mare divizor comun. Rezultatul este afișat în final.&lt;/div&gt;</summary>
		<author><name>Robert Manc</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=0112_-_Fractie_Minima&amp;diff=5242</id>
		<title>0112 - Fractie Minima</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=0112_-_Fractie_Minima&amp;diff=5242"/>
		<updated>2023-04-28T15:56:49Z</updated>

		<summary type="html">&lt;p&gt;Robert Manc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cerinţa ==&lt;br /&gt;
Să se scrie un program care citește un șir de &#039;&#039;&#039;n&#039;&#039;&#039; numere naturale şi determină cea mai mică fracţie care poate fi scrisă cu numărătorul şi numitorul dintre cele &#039;&#039;&#039;n&#039;&#039;&#039; numere.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Programul citește de la tastatură numărul &#039;&#039;&#039;n&#039;&#039;&#039;, iar apoi &#039;&#039;&#039;n&#039;&#039;&#039; numere naturale nenule, separate prin spaţii.&lt;br /&gt;
== Date de ieşire ==&lt;br /&gt;
Programul afișează pe ecran numărul fracţia cerută, în forma &#039;&#039;&#039;fractie&#039;&#039;&#039;.&lt;br /&gt;
== Restricții și precizări ==&lt;br /&gt;
* n &amp;amp;isin; &amp;amp;Nu;&lt;br /&gt;
* 0 &amp;lt; n &amp;lt; 1.001&lt;br /&gt;
* cele &#039;&#039;&#039;n&#039;&#039;&#039; numere citite vor fi mai mici decât &#039;&#039;&#039;2.000.000.000&#039;&#039;&#039;&lt;br /&gt;
* fracţia afişată va fi ireductibilă&lt;br /&gt;
== Exemplu1 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
: 5&lt;br /&gt;
: 6 10 3 2 5&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele de intrare corespund restricțiilor impuse.&lt;br /&gt;
: 1/5&lt;br /&gt;
== Explicație ==&lt;br /&gt;
Cea mai mică fracţie care se poate scrie cu numerele din şire este &#039;&#039;&#039;2/10&#039;&#039;&#039;. Prin simplificare se obţine fracţia ireductibilă &#039;&#039;&#039;1/5&#039;&#039;&#039;.&lt;br /&gt;
== Exemplu2 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
: 4&lt;br /&gt;
: 5 9 2 14&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele de intrare corespund restricțiilor impuse.&lt;br /&gt;
: 1/7&lt;br /&gt;
== Explicație ==&lt;br /&gt;
Cea mai mică fracţie care se poate scrie cu numerele din şire este &#039;&#039;&#039;2/14&#039;&#039;&#039;. Prin simplificare se obţine fracţia ireductibilă &#039;&#039;&#039;1/7&#039;&#039;&#039;.&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
def validare_date(numar, numere):&lt;br /&gt;
    flag = False&lt;br /&gt;
    if 0 &amp;lt; int(numar) &amp;lt; 1001:&lt;br /&gt;
        flag = all(isinstance(x, int) and 1 &amp;lt;= x &amp;lt;= 2_000_000_000 for x in numere)&lt;br /&gt;
    return flag&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def gcd(a, b):&lt;br /&gt;
    while b:&lt;br /&gt;
        a, b = b, a % b&lt;br /&gt;
    return a&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def fractie_minima(numere):&lt;br /&gt;
    max_numar = -1&lt;br /&gt;
    min_numar = float(&#039;inf&#039;)&lt;br /&gt;
    for numar in numere:&lt;br /&gt;
        if numar &amp;lt; min_numar:&lt;br /&gt;
            min_numar = numar&lt;br /&gt;
        if numar &amp;gt; max_numar:&lt;br /&gt;
            max_numar = numar&lt;br /&gt;
    div = gcd(max_numar, min_numar)&lt;br /&gt;
    x = min_numar // div&lt;br /&gt;
    y = max_numar // div&lt;br /&gt;
    m = gcd(x, y)&lt;br /&gt;
    return str(x // m) + &#039;/&#039; + str(y // m)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    n = int(input())&lt;br /&gt;
    numere = list(map(int, input().split()))&lt;br /&gt;
    if validare_date(n, numere):&lt;br /&gt;
        print(&amp;quot;\nDatele de intrare corespund restricțiilor impuse.\n&amp;quot;)&lt;br /&gt;
        fractie = fractie_minima(numere)&lt;br /&gt;
        print(fractie)&lt;br /&gt;
    else:&lt;br /&gt;
        print(&amp;quot;Datele de intrare nu corespund restricțiilor impuse.&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Explicație ==&lt;br /&gt;
Acest program primește la intrare un număr întreg &#039;&#039;&#039;n&#039;&#039;&#039; și o listă de &#039;&#039;&#039;n&#039;&#039;&#039; numere întregi &#039;&#039;&#039;numere&#039;&#039;&#039;. Scopul programului este să găsească cea mai mică fracție care poate fi obținută prin împărțirea oricărui număr din listă la alt număr din listă, și să o afișeze în formă de fracție simplificată.&lt;br /&gt;
&lt;br /&gt;
Funcția &#039;&#039;&#039;gcd&#039;&#039;&#039; calculează cel mai mare divizor comun al doi întregi folosind algoritmul lui Euclid.&lt;br /&gt;
&lt;br /&gt;
Funcția &#039;&#039;&#039;fractie_minima&#039;&#039;&#039; găsește cea mai mică fracție care poate fi obținută prin împărțirea oricărui număr din listă la alt număr din listă, și o afișează în formă de fracție simplificată. Funcția ia fiecare pereche de numere din listă și calculează fracția obținută prin împărțirea celui mai mic dintre ele la cel mai mare dintre ele. Apoi, calculează cel mai mare divizor comun al celor două numere, simplifică fracția și o stochează în variabila &#039;&#039;&#039;fractie&#039;&#039;&#039;. La sfârșit, funcția returnează fracția sub forma unui șir de caractere.&lt;br /&gt;
&lt;br /&gt;
În funcția principală, programul citeste valorile de intrare și apoi verifică dacă respectă condițiile impuse de funcția &#039;&#039;&#039;validare_date&#039;&#039;&#039;. Dacă valorile sunt valide, programul apelează funcția &#039;&#039;&#039;fractie_minima&#039;&#039;&#039; și afișează rezultatul.&lt;/div&gt;</summary>
		<author><name>Robert Manc</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=0409_-_Oglindit_4&amp;diff=5241</id>
		<title>0409 - Oglindit 4</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=0409_-_Oglindit_4&amp;diff=5241"/>
		<updated>2023-04-28T15:53:54Z</updated>

		<summary type="html">&lt;p&gt;Robert Manc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cerinţa ==&lt;br /&gt;
Se dau &#039;&#039;&#039;n&#039;&#039;&#039; numere naturale. Determinați câte dintre ele au proprietatea că sunt prime cu oglinditul lor.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Programul citește de la tastatură numărul &#039;&#039;&#039;n&#039;&#039;&#039;, iar apoi &#039;&#039;&#039;n&#039;&#039;&#039; numere naturale, separate prin spaţii.&lt;br /&gt;
== Date de ieşire ==&lt;br /&gt;
Programul afișează pe ecran numărul &#039;&#039;&#039;suma_perechi_oglindite&#039;&#039;&#039;, reprezentând valoarea ceruta.&lt;br /&gt;
== Restricții și precizări ==&lt;br /&gt;
* n &amp;amp;isin; &amp;amp;Nu;&lt;br /&gt;
* 1 &amp;amp;les; numar1, numar2 &amp;amp;les; 1.000&lt;br /&gt;
* cele &#039;&#039;&#039;n&#039;&#039;&#039; numere citite vor fi mai mici decât &#039;&#039;&#039;1.000.000.000&#039;&#039;&#039;&lt;br /&gt;
== Exemplu1 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
: 5&lt;br /&gt;
: 24 50 25 81 359&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele de intrare corespund restricțiilor impuse.&lt;br /&gt;
: 1&lt;br /&gt;
== Explicație == &lt;br /&gt;
Numărul care este prim cu oglinditul lui este &#039;&#039;&#039;359 (prim cu 953)&#039;&#039;&#039;.&lt;br /&gt;
== Exemplu2 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
: 6&lt;br /&gt;
: 37 95 79 101 12 48&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele de intrare corespund restricțiilor impuse.&lt;br /&gt;
: 3&lt;br /&gt;
== Explicație == &lt;br /&gt;
Numerele care sunt prime cu oglinditul lor sunt &#039;&#039;&#039;37 (prim cu 73)&#039;&#039;&#039;, &#039;&#039;&#039;79 (prim cu 997)&#039;&#039;&#039; și &#039;&#039;&#039;101 (prim cu 101)&#039;&#039;&#039;.&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
def validare_date(numar, numere):&lt;br /&gt;
    flag = False&lt;br /&gt;
    if 0 &amp;lt;= int(numar) &amp;lt;= 1000:&lt;br /&gt;
        flag = all(isinstance(x, int) and 1 &amp;lt;= x &amp;lt;= 1000000000 for x in numere)&lt;br /&gt;
    return flag&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def oglindit(nr):&lt;br /&gt;
    ogl = 0&lt;br /&gt;
    while nr:&lt;br /&gt;
        ogl = ogl * 10 + nr % 10&lt;br /&gt;
        nr //= 10&lt;br /&gt;
    return ogl&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def este_prim(n):&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;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    n = int(input())&lt;br /&gt;
    numere = list(map(int, input().split()))&lt;br /&gt;
    if validare_date(n, numere):&lt;br /&gt;
        print(&amp;quot;\nDatele de intrare corespund restricțiilor impuse.\n&amp;quot;)&lt;br /&gt;
        oglindite = [oglindit(nr) for nr in numere]&lt;br /&gt;
        suma_perechi_oglindite = [(nr, ogl) for nr, ogl in zip(numere, oglindite)&lt;br /&gt;
                   if este_prim(nr) and este_prim(ogl)]&lt;br /&gt;
        print(len(suma_perechi_oglindite))&lt;br /&gt;
    else:&lt;br /&gt;
        print(&amp;quot;Datele de intrare nu corespund restricțiilor impuse.&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Explicație ==&lt;br /&gt;
Programul citește de la tastatură un număr întreg &#039;&#039;&#039;n&#039;&#039;&#039; și o listă de &#039;&#039;&#039;n&#039;&#039;&#039; numere întregi &#039;&#039;&#039;numere&#039;&#039;&#039;. Verifică dacă datele introduse respectă restricțiile impuse, adică &#039;&#039;&#039;0 &amp;lt;= n &amp;lt;= 1000&#039;&#039;&#039; și &#039;&#039;&#039;1 &amp;lt;= numere[i] &amp;lt;= 10^9&#039;&#039;&#039; pentru orice &#039;&#039;&#039;i&#039;&#039;&#039; între &#039;&#039;&#039;0&#039;&#039;&#039; și &#039;&#039;&#039;n-1&#039;&#039;&#039;. Dacă datele introduse sunt valide, atunci pentru fiecare număr întreg din lista &#039;&#039;&#039;numere&#039;&#039;&#039; se calculează numărul oglindit al acestuia (se inversează ordinea cifrelor). Pentru fiecare pereche de numere din lista &#039;&#039;&#039;numere&#039;&#039;&#039; și &#039;&#039;&#039;oglindite&#039;&#039;&#039;, se verifică dacă ambele numere din pereche sunt prime. Dacă ambele numere dintr-o pereche sunt prime, atunci perechea este inclusă într-o listă numită &#039;&#039;&#039;suma_perechi_oglindite&#039;&#039;&#039;. La final, se afișează numărul de perechi de numere prime din lista &#039;&#039;&#039;numere&#039;&#039;&#039; și &#039;&#039;&#039;oglindite&#039;&#039;&#039;.&lt;/div&gt;</summary>
		<author><name>Robert Manc</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=3271_-_Pereche_CMMDC&amp;diff=5240</id>
		<title>3271 - Pereche CMMDC</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=3271_-_Pereche_CMMDC&amp;diff=5240"/>
		<updated>2023-04-28T15:50:01Z</updated>

		<summary type="html">&lt;p&gt;Robert Manc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cerinţa ==&lt;br /&gt;
Se dă un șir de &#039;&#039;&#039;n&#039;&#039;&#039; perechi de numere naturale nenule. Să se determine perechea pentru care cel mai mare divizor comun este maxim. Dacă există mai multe asemenea perechi, se va determina aceea pentru care suma valorilor este maximă. Dacă există mai multe asemenea perechi, se va determina prima din șir.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Programul citește de la tastatură numărul &#039;&#039;&#039;n&#039;&#039;&#039;, iar apoi &#039;&#039;&#039;n&#039;&#039;&#039; perechi de numere naturale.&lt;br /&gt;
== Date de ieşire ==&lt;br /&gt;
Programul va afișa pe ecran două numere, separate printr-un spațiu, reprezentând perechea determinată.&lt;br /&gt;
== Restricții și precizări ==&lt;br /&gt;
* n &amp;amp;isin; &amp;amp;Nu;&lt;br /&gt;
* 0 &amp;amp;les; n &amp;amp;les; 1.000&lt;br /&gt;
* valorile din cele &#039;&#039;&#039;n&#039;&#039;&#039; numere citite vor fi mai mici decât &#039;&#039;&#039;2^31&#039;&#039;&#039;&lt;br /&gt;
== Exemplu1 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
: 4&lt;br /&gt;
: 12 18&lt;br /&gt;
: 16 12&lt;br /&gt;
: 18 30&lt;br /&gt;
: 25 35&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele de intrare corespund restricțiilor impuse.&lt;br /&gt;
: 18 30&lt;br /&gt;
== Exemplu2 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
: 3&lt;br /&gt;
: 29 31&lt;br /&gt;
: 16 12&lt;br /&gt;
: 15 45&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele de intrare corespund restricțiilor impuse.&lt;br /&gt;
: 15 45&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
def verificare_numar(numar):&lt;br /&gt;
    if numar.isdigit() and 0 &amp;lt;= int(numar) &amp;lt;= 2**31-1:&lt;br /&gt;
        return True&lt;br /&gt;
    return False&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def verificare_n(n):&lt;br /&gt;
    if 0 &amp;lt;= n &amp;lt;= 1000:&lt;br /&gt;
        return True&lt;br /&gt;
    return False&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def CMD(numar1, numar2):&lt;br /&gt;
    while numar2:&lt;br /&gt;
        rest = numar1 % numar2&lt;br /&gt;
        numar1, numar2 = numar2, rest&lt;br /&gt;
    cmmdc = numar1&lt;br /&gt;
    return cmmdc&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    n = int(input())&lt;br /&gt;
    cmmdc_maxim = 0&lt;br /&gt;
    suma_maxima_perechiilor = 0&lt;br /&gt;
    perechea_cu_suma_maxima = None&lt;br /&gt;
    if verificare_n(n):&lt;br /&gt;
        date = True&lt;br /&gt;
&lt;br /&gt;
        for i in range(n):&lt;br /&gt;
            pereche = input().split()&lt;br /&gt;
            numar1, numar2 = pereche[0], pereche[1]&lt;br /&gt;
            if verificare_numar(numar1) and verificare_numar(numar2):&lt;br /&gt;
                numar1, numar2 = int(numar1), int(numar2)&lt;br /&gt;
                cmmdc = CMD(numar1, numar2)&lt;br /&gt;
                suma_perechii = numar1 + numar2&lt;br /&gt;
                if cmmdc &amp;gt; cmmdc_maxim:&lt;br /&gt;
                    cmmdc_maxim = cmmdc&lt;br /&gt;
                    suma_maxima_perechiilor = suma_perechii&lt;br /&gt;
                    perechea_cu_suma_maxima = (numar1, numar2)&lt;br /&gt;
                elif cmmdc == cmmdc_maxim and suma_perechii &amp;gt; suma_maxima_perechiilor:&lt;br /&gt;
                    suma_maxima_perechiilor = suma_perechii&lt;br /&gt;
                    perechea_cu_suma_maxima = (numar1, numar2)&lt;br /&gt;
            else:&lt;br /&gt;
                date = False&lt;br /&gt;
&lt;br /&gt;
        if date:&lt;br /&gt;
            print(&amp;quot;\nDatele de intrare corespund restricțiilor impuse.\n&amp;quot;)&lt;br /&gt;
            print(perechea_cu_suma_maxima[0], perechea_cu_suma_maxima[1])&lt;br /&gt;
        else:&lt;br /&gt;
            print(&amp;quot;Datele de intrare nu corespund restricțiilor impuse.&amp;quot;)&lt;br /&gt;
    else:&lt;br /&gt;
        print(&amp;quot;Datele de intrare nu corespund restricțiilor impuse.&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Acest program citeste un numar &#039;&#039;&#039;n&#039;&#039;&#039;, citeste &#039;&#039;&#039;n&#039;&#039;&#039; perechi de numere întregi (citite ca string-uri), și determină perechea cu suma maximă dintre toate perechile care au cel mai mare divizor comun (cmmdc). Pentru fiecare pereche de numere, programul calculează cmmdc-ul și suma acestora și le compară cu valorile maxime până în prezent. Dacă cmmdc-ul este mai mare decât cel mai mare cmmdc de până acum, valorile maxime sunt actualizate cu valorile perechii curente, altfel dacă cmmdc-ul este același cu cel mai mare cmmdc de până acum, atunci se compară suma curentă a perechii cu suma maximă de până acum și se actualizează valorile maxime în consecință. Programul afișează perechea cu cea mai mare sumă. Programul verifică dacă datele de intrare corespund restricțiilor impuse.&lt;/div&gt;</summary>
		<author><name>Robert Manc</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=0080_-_Numarare_Perechi_Prime_Intre_Ele&amp;diff=5239</id>
		<title>0080 - Numarare Perechi Prime Intre Ele</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=0080_-_Numarare_Perechi_Prime_Intre_Ele&amp;diff=5239"/>
		<updated>2023-04-28T15:46:46Z</updated>

		<summary type="html">&lt;p&gt;Robert Manc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cerinţa ==&lt;br /&gt;
Se dau numere naturale de la tastatură până la apariția lui zero. Să se determine câte perechi de numere citite consecutiv sunt prime între ele.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Programul citește de la tastatură numere naturale. Citirea se încheie la introducerea valorii &#039;&#039;&#039;0&#039;&#039;&#039;.&lt;br /&gt;
== Date de ieşire ==&lt;br /&gt;
Programul afișează pe ecran numărul &#039;&#039;&#039;numar_perechi_prime&#039;&#039;&#039;, reprezentând numărul de perechi citite care respectă condiția cerută.&lt;br /&gt;
== Restricții și precizări ==&lt;br /&gt;
* n &amp;amp;isin; &amp;amp;Nu;&lt;br /&gt;
* numerele citite aparțin intervalului &#039;&#039;&#039;[0 ; 1.000.000.000)&#039;&#039;&#039;&lt;br /&gt;
* valoarea zero, care încheie citirile, nu se va prelucra&lt;br /&gt;
== Exemplu1 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
: 15 63 43 129 55 15 4 0&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele de intrare corespund restricțiilor impuse.&lt;br /&gt;
: 3&lt;br /&gt;
&lt;br /&gt;
== Explicație ==&lt;br /&gt;
Perechile care respectă condiția cerută sunt: &#039;&#039;&#039;(63,43), (129,55), (15,4)&#039;&#039;&#039;.&lt;br /&gt;
== Exemplu2 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
: 2 9 6 15 12 21 24 0&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele de intrare corespund restricțiilor impuse.&lt;br /&gt;
: 1&lt;br /&gt;
&lt;br /&gt;
== Explicație ==&lt;br /&gt;
Perechile care respectă condiția cerută sunt: &#039;&#039;&#039;(2,9)&#039;&#039;&#039;.&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
def validare_date(n):&lt;br /&gt;
    flag = all(isinstance(x, int) and 0 &amp;lt;= x &amp;lt; 1_000_000_000 for x in n)&lt;br /&gt;
    return flag&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def prim(numar1, numar2):&lt;br /&gt;
    rest = 0&lt;br /&gt;
    while numar2:&lt;br /&gt;
        rest = numar1 % numar2&lt;br /&gt;
        numar1 = numar2&lt;br /&gt;
        numar2 = rest&lt;br /&gt;
    if numar1 == 1:&lt;br /&gt;
        return 1&lt;br /&gt;
    else:&lt;br /&gt;
        return 0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    n = list(map(int, input().split()))&lt;br /&gt;
    numar_perechi_prime = 0&lt;br /&gt;
    if validare_date(n):&lt;br /&gt;
        print(&amp;quot;\nDatele de intrare corespund restricțiilor impuse.\n&amp;quot;)&lt;br /&gt;
        for i in range(1, len(n)):&lt;br /&gt;
            if prim(n[i - 1], n[i]):&lt;br /&gt;
                numar_perechi_prime += 1&lt;br /&gt;
        print(numar_perechi_prime)&lt;br /&gt;
    else:&lt;br /&gt;
        print(&amp;quot;Datele de intrare nu corespund restricțiilor impuse.&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Explicație ==&lt;br /&gt;
Programul primește o listă de numere și verifică dacă numerele sunt întregi și sunt cuprinse între 0 și 1 miliard. Apoi, calculează numărul de perechi de numere din listă care sunt prime între ele și afișează rezultatul. Funcția prim() este utilizată pentru a verifica dacă două numere sunt prime între ele.&lt;/div&gt;</summary>
		<author><name>Robert Manc</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=0411_-_Prime_intre_ele_1&amp;diff=5238</id>
		<title>0411 - Prime intre ele 1</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=0411_-_Prime_intre_ele_1&amp;diff=5238"/>
		<updated>2023-04-28T15:44:47Z</updated>

		<summary type="html">&lt;p&gt;Robert Manc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cerinţa ==&lt;br /&gt;
Se dă un număr natural &#039;&#039;&#039;n&#039;&#039;&#039;, &#039;&#039;&#039;n&amp;gt;1&#039;&#039;&#039;. Să se determine câte perechi &#039;&#039;&#039;(a,b)&#039;&#039;&#039;, &#039;&#039;&#039;1 ≤ a ≤ b ≤ n&#039;&#039;&#039; de numere naturale sunt prime între ele.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Programul citește de la tastatură numărul &#039;&#039;&#039;n&#039;&#039;&#039;.&lt;br /&gt;
== Date de ieşire ==&lt;br /&gt;
Programul afișează pe ecran numărul &#039;&#039;&#039;numar_perechi&#039;&#039;&#039;, reprezentând valoarea dorită.&lt;br /&gt;
== Restricții și precizări ==&lt;br /&gt;
* n &amp;amp;isin; &amp;amp;Nu;&lt;br /&gt;
* 1 &amp;lt; n &amp;amp;les; 1.000&lt;br /&gt;
== Exemplu1 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
: 6&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele de intrare corespund restricțiilor impuse.&lt;br /&gt;
: 12&lt;br /&gt;
== Explicație == &lt;br /&gt;
Perechile sunt: &#039;&#039;&#039;(1 1) (1 2) (1 3) (1 4) (1 5) ( 1 6) (2 3) (2 5) (3 4) (3 5) (4 5) (5 6)&#039;&#039;&#039; .&lt;br /&gt;
== Exemplu2 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
: 4&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele de intrare corespund restricțiilor impuse.&lt;br /&gt;
: 6&lt;br /&gt;
== Explicație == &lt;br /&gt;
Perechile sunt: &#039;&#039;&#039;(1 1) (1 2) (1 3) (1 4) (2 3) (3 4)&#039;&#039;&#039; .&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
import math&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def validare_date(numar):&lt;br /&gt;
    flag = False&lt;br /&gt;
    if numar.isdigit():&lt;br /&gt;
        if 0 &amp;lt; int(numar) &amp;lt; 1_000:&lt;br /&gt;
            flag = True&lt;br /&gt;
    return flag&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def numar_perechi_prime(numar):&lt;br /&gt;
    numar_perechi = 0&lt;br /&gt;
    for a in range(1, numar+1):&lt;br /&gt;
        for b in range(a, numar+1):&lt;br /&gt;
            if math.gcd(a, b) == 1:  #verifică dacă numerele a și b sunt prime între ele&lt;br /&gt;
                numar_perechi += 1&lt;br /&gt;
    print(numar_perechi)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    numar = input()&lt;br /&gt;
    if validare_date(numar):&lt;br /&gt;
        print(&amp;quot;\nDatele de intrare corespund restricțiilor impuse.\n&amp;quot;)&lt;br /&gt;
        numar_perechi_prime(int(numar))&lt;br /&gt;
    else:&lt;br /&gt;
        print(&amp;quot;Datele de intrare nu corespund restricțiilor impuse.&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Explicație ==&lt;br /&gt;
Programul verifică dacă un număr dat respectă restricțiile impuse și calculează numărul de perechi de numere prime între ele, mai mici sau egale cu numărul dat, utilizând o buclă dublă. Pentru a determina dacă două numere sunt prime între ele, se folosește funcția math.gcd() din Python, care calculează cel mai mare divizor comun al acestora și verifică dacă acesta este egal cu 1. La final, numărul de perechi de numere prime între ele este afișat.&lt;/div&gt;</summary>
		<author><name>Robert Manc</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=0060_-_Prime_intre_ele&amp;diff=5237</id>
		<title>0060 - Prime intre ele</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=0060_-_Prime_intre_ele&amp;diff=5237"/>
		<updated>2023-04-28T15:41:40Z</updated>

		<summary type="html">&lt;p&gt;Robert Manc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cerinţa ==&lt;br /&gt;
Să se scrie un program care să verifică dacă două numere naturale citite de la tastatură sunt prime între ele.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Programul citește de la tastatură două numere naturale &#039;&#039;&#039;numar1&#039;&#039;&#039; și &#039;&#039;&#039;numar2&#039;&#039;&#039;.&lt;br /&gt;
== Date de ieşire ==&lt;br /&gt;
Programul afișează pe ecran mesajul &#039;&#039;&#039;PIE&#039;&#039;&#039;, dacă &#039;&#039;&#039;numar1&#039;&#039;&#039; și &#039;&#039;&#039;numar2&#039;&#039;&#039; sunt prime între ele, respectiv &#039;&#039;&#039;NOPIE&#039;&#039;&#039; în caz contrar.&lt;br /&gt;
== Restricții și precizări ==&lt;br /&gt;
* numar1, numar2 &amp;amp;isin; &amp;amp;Nu;&lt;br /&gt;
* 0 &amp;amp;les; numar1, numar2 &amp;amp;les; 1.000.000.000&lt;br /&gt;
* două numere naturale sunt prime între ele dacă cel mai mare divizor comun al lor este &#039;&#039;&#039;1&#039;&#039;&#039;&lt;br /&gt;
== Exemplu1 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
: 24 36&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele de intrare corespund restricțiilor impuse.&lt;br /&gt;
: NOPIE&lt;br /&gt;
== Exemplu2 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
: 24 35&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele de intrare corespund restricțiilor impuse.&lt;br /&gt;
: PIE&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
import math&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def validare_date(numar1, numar2):&lt;br /&gt;
    flag = False&lt;br /&gt;
    if numar1.isdigit() and numar2.isdigit():&lt;br /&gt;
        if 0 &amp;lt; int(numar1) &amp;lt; 1_000_000_000 and 0 &amp;lt; int(numar2) &amp;lt; 1_000_000_000:&lt;br /&gt;
            flag = True&lt;br /&gt;
    return flag&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    numar1, numar2 = input().split()&lt;br /&gt;
    if validare_date(numar1, numar2):&lt;br /&gt;
        print(&amp;quot;\nDatele de intrare corespund restricțiilor impuse.\n&amp;quot;)&lt;br /&gt;
        cmmd = math.gcd(int(numar1), int(numar2))   #În Python, putem folosi funcția math.gcd() pentru a calcula cel mai mare divizor comun între două numere.&lt;br /&gt;
        if cmmd == 1:&lt;br /&gt;
            print(&amp;quot;PIE&amp;quot;)&lt;br /&gt;
        else:&lt;br /&gt;
            print(&amp;quot;NOPIE&amp;quot;)&lt;br /&gt;
    else:&lt;br /&gt;
        print(&amp;quot;Datele de intrare nu corespund restricțiilor impuse.&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Explicație ==&lt;br /&gt;
Acest cod verifică dacă două numere date ca input respectă restricțiile impuse și calculează cel mai mare divizor comun dintre ele folosind funcția math.gcd() din Python. Dacă cel mai mare divizor comun este 1, atunci se afișează mesajul &amp;quot;PIE&amp;quot;, altfel se afișează mesajul &amp;quot;NOPIE&amp;quot;.&lt;/div&gt;</summary>
		<author><name>Robert Manc</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=3268_-_CMMDC_CMMMC&amp;diff=5236</id>
		<title>3268 - CMMDC CMMMC</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=3268_-_CMMDC_CMMMC&amp;diff=5236"/>
		<updated>2023-04-28T15:39:30Z</updated>

		<summary type="html">&lt;p&gt;Robert Manc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cerinţa ==&lt;br /&gt;
Se dau două numere naturale nenule. Determinați cel mai mare divizor comun și cel mai mic multiplu comun al lor.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Programul citește de la tastatură cele două numere.&lt;br /&gt;
== Date de ieşire ==&lt;br /&gt;
Programul va afișa pe ecran numere &#039;&#039;&#039;cmmdc&#039;&#039;&#039; &#039;&#039;&#039;cmmmc&#039;&#039;&#039;, separate printr-un spațiu, reprezentând cel mai mare divizor comun, respectiv cel mai mic multiplu comun al celor două numere.&lt;br /&gt;
== Restricții și precizări ==&lt;br /&gt;
* numar1, numar2 &amp;amp;isin; &amp;amp;Nu;&lt;br /&gt;
* 0 &amp;amp;les; numar1, numar2 &amp;amp;les; 1.000.000.000&lt;br /&gt;
== Exemplu ==&lt;br /&gt;
; Intrare&lt;br /&gt;
: 24 42&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele de intrare corespund restricțiilor impuse.&lt;br /&gt;
: 6 168&lt;br /&gt;
&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
def validare_date(numar1, numar2):&lt;br /&gt;
    flag = False&lt;br /&gt;
    if numar1.isdigit() and numar2.isdigit():&lt;br /&gt;
        if 0 &amp;lt; int(numar1) &amp;lt; 1_000_000_000 and 0 &amp;lt; int(numar2) &amp;lt; 1_000_000_000:&lt;br /&gt;
            flag = True&lt;br /&gt;
    return flag&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def cmmdc(numar1, numar2):&lt;br /&gt;
    while numar2:&lt;br /&gt;
        numar1, numar2 = numar2, numar1 % numar2&lt;br /&gt;
    cmmdc = numar1&lt;br /&gt;
    return cmmdc&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def cmmmc(numar1, numar2):&lt;br /&gt;
    cmmmc = (numar1 * numar2) // cmmdc(numar1, numar2)&lt;br /&gt;
    return cmmmc&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    numar1, numar2 = input().split()&lt;br /&gt;
    if validare_date(numar1, numar2):&lt;br /&gt;
        print(&amp;quot;\nDatele de intrare corespund restricțiilor impuse.\n&amp;quot;)&lt;br /&gt;
        if int(numar1) == int(numar2) == 0:&lt;br /&gt;
            print(&amp;quot;-1&amp;quot;)&lt;br /&gt;
        else:&lt;br /&gt;
            print(cmmdc(int(numar1), int(numar2)), cmmmc(int(numar1), int(numar2)))&lt;br /&gt;
    else:&lt;br /&gt;
        print(&amp;quot;Datele de intrare nu corespund restricțiilor impuse.&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Explicație ==&lt;br /&gt;
Codul implementează două funcții matematice, cmmdc și cmmmc, și verifică dacă două numere de intrare îndeplinesc anumite restricții prin intermediul funcției validare_date.&lt;br /&gt;
&lt;br /&gt;
Funcția cmmdc primește două argumente de tip întreg numar1 și numar2 și calculează cel mai mare divizor comun (CMMDC) dintre cele două numere folosind algoritmul lui Euclid. Algoritmul își schimbă parametrii până când al doilea parametru devine zero, iar primul parametru va fi CMMDC-ul celor două numere.&lt;br /&gt;
&lt;br /&gt;
Funcția cmmmc primește două argumente de tip întreg numar1 și numar2 și calculează cel mai mic multiplu comun (CMMMC) dintre cele două numere folosind formula CMMMC = (numar1 * numar2) / CMMDC(numar1, numar2).&lt;br /&gt;
&lt;br /&gt;
În programul principal, se citește două numere de intrare numar1 și numar2 folosind funcția input și se verifică dacă îndeplinesc restricțiile prin apelarea funcției validare_date. Dacă cele două numere sunt valabile, se calculează CMMDC-ul și CMMMC-ul lor folosind funcțiile cmmdc și cmmmc, respectiv, și se afișează rezultatele. Dacă cele două numere nu sunt valabile, se afișează un mesaj de eroare.&lt;/div&gt;</summary>
		<author><name>Robert Manc</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=0059_-_CMMMC&amp;diff=5235</id>
		<title>0059 - CMMMC</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=0059_-_CMMMC&amp;diff=5235"/>
		<updated>2023-04-28T15:38:02Z</updated>

		<summary type="html">&lt;p&gt;Robert Manc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cerinţa ==&lt;br /&gt;
Să se scrie un program care să determine cel mai mic multiplu comun a două numere naturale citite de la tastatură.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Programul citește de la tastatură două numere naturale &#039;&#039;&#039;numar1&#039;&#039;&#039; și &#039;&#039;&#039;numar2&#039;&#039;&#039;.&lt;br /&gt;
== Date de ieşire ==&lt;br /&gt;
Programul afișează pe ecran numărul &#039;&#039;&#039;cmmmc&#039;&#039;&#039;, cel mai mic multiplu comun al numerelor &#039;&#039;&#039;numar1&#039;&#039;&#039; și &#039;&#039;&#039;numar2&#039;&#039;&#039;.&lt;br /&gt;
== Restricții și precizări ==&lt;br /&gt;
* numar1, numar2 &amp;amp;isin; &amp;amp;Nu;&lt;br /&gt;
* 0 &amp;lt; numar1, numar2 &amp;lt; 1.000.000.000&lt;br /&gt;
* pentru toate seturile de date de intrare, &#039;&#039;&#039;cmmmc&amp;lt;2.000.000.000&#039;&#039;&#039;&lt;br /&gt;
== Exemplu ==&lt;br /&gt;
; Intrare&lt;br /&gt;
: 24 36&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele de intrare corespund restricțiilor impuse.&lt;br /&gt;
: 72&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
def validare_date(numar1, numar2):&lt;br /&gt;
    flag = False&lt;br /&gt;
    if numar1.isdigit() and numar2.isdigit():&lt;br /&gt;
        if 0 &amp;lt; int(numar1) &amp;lt; 1_000_000_000 and 0 &amp;lt; int(numar2) &amp;lt; 1_000_000_000:&lt;br /&gt;
            flag = True&lt;br /&gt;
    return flag&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def cmmdc(numar1, numar2):&lt;br /&gt;
    while numar2:&lt;br /&gt;
        numar1, numar2 = numar2, numar1 % numar2&lt;br /&gt;
    return numar1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def cmmmc(numar1, numar2):&lt;br /&gt;
    cmmmc = (numar1 * numar2) // cmmdc(numar1, numar2)&lt;br /&gt;
    return cmmmc&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    numar1, numar2 = input().split()&lt;br /&gt;
    if validare_date(numar1, numar2):&lt;br /&gt;
        print(&amp;quot;\nDatele de intrare corespund restricțiilor impuse.\n&amp;quot;)&lt;br /&gt;
        if int(numar1) == int(numar2) == 0:&lt;br /&gt;
            print(&amp;quot;-1&amp;quot;)&lt;br /&gt;
        else:&lt;br /&gt;
            print(cmmmc(int(numar1), int(numar2)))&lt;br /&gt;
    else:&lt;br /&gt;
        print(&amp;quot;Datele de intrare nu corespund restricțiilor impuse.&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Explicație ==&lt;br /&gt;
Codul implementează două funcții matematice, cmmdc și cmmmc, și verifică dacă două numere de intrare îndeplinesc anumite restricții prin intermediul funcției validare_date.&lt;br /&gt;
&lt;br /&gt;
Funcția validare_date primește două argumente de tip string numar1 și numar2 și verifică dacă ambele sunt numere întregi pozitive mai mici decât 1 miliard. Dacă cele două argumente sunt numere întregi pozitive mai mici decât 1 miliard, funcția returnează True, altfel returnează False.&lt;br /&gt;
&lt;br /&gt;
Funcția cmmdc primește două argumente de tip întreg numar1 și numar2 și calculează cel mai mare divizor comun (CMMDC) dintre cele două numere folosind algoritmul lui Euclid.&lt;br /&gt;
&lt;br /&gt;
Funcția cmmmc primește două argumente de tip întreg numar1 și numar2 și calculează cel mai mic multiplu comun (CMMMC) dintre cele două numere folosind formula CMMMC = (numar1 * numar2) / CMMDC(numar1, numar2).&lt;br /&gt;
&lt;br /&gt;
În programul principal, se citește două numere de intrare numar1 și numar2 folosind funcția input și se verifică dacă îndeplinesc restricțiile prin apelarea funcției validare_date. Dacă cele două numere sunt valabile, se calculează CMMMC-ul lor folosind funcția cmmmc și se afișează rezultatul. Dacă cele două numere nu sunt valabile, se afișează un mesaj de eroare.&lt;/div&gt;</summary>
		<author><name>Robert Manc</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=0058_-_CMMDC&amp;diff=5234</id>
		<title>0058 - CMMDC</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=0058_-_CMMDC&amp;diff=5234"/>
		<updated>2023-04-28T15:36:11Z</updated>

		<summary type="html">&lt;p&gt;Robert Manc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cerinţa ==&lt;br /&gt;
Să se scrie un program care să determine cel mai mare divizor comun a două numere naturale citite de la tastatură.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Programul citește de la tastatură două numere naturale &#039;&#039;&#039;numar1&#039;&#039;&#039; și &#039;&#039;&#039;numar2&#039;&#039;&#039;.&lt;br /&gt;
== Date de ieşire ==&lt;br /&gt;
Programul afișează pe ecran numărul &#039;&#039;&#039;cmmdc&#039;&#039;&#039;, cel mai mare divizor comun al numerelor &#039;&#039;&#039;numar1&#039;&#039;&#039; și &#039;&#039;&#039;numar2&#039;&#039;&#039;.&lt;br /&gt;
== Restricții și precizări ==&lt;br /&gt;
* numar1, numar2 &amp;amp;isin; &amp;amp;Nu;&lt;br /&gt;
* 0 &amp;amp;les; numar1, numar2 &amp;amp;les; 1.000.000.000&lt;br /&gt;
* dacă ambele numere sunt egale cu &#039;&#039;&#039;0&#039;&#039;&#039; se va afișa valoarea &#039;&#039;&#039;-1&#039;&#039;&#039;&lt;br /&gt;
== Exemplu ==&lt;br /&gt;
; Intrare&lt;br /&gt;
: 24 36&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele de intrare corespund restricțiilor impuse.&lt;br /&gt;
: 12&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
def validare_date(numar1, numar2):&lt;br /&gt;
    flag = False&lt;br /&gt;
    if numar1.isdigit() and numar2.isdigit():&lt;br /&gt;
        if 0 &amp;lt;= int(numar1) &amp;lt;= 1_000_000_000 and 0 &amp;lt;= int(numar2) &amp;lt;= 1_000_000_000:&lt;br /&gt;
            flag = True&lt;br /&gt;
    return flag&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def CMD(numar1, numar2):&lt;br /&gt;
    while numar2:&lt;br /&gt;
        r = numar1 % numar2&lt;br /&gt;
        numar1, numar2 = numar2, r&lt;br /&gt;
    cmmdc = numar1&lt;br /&gt;
    return cmmdc&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    numar1, numar2 = input().split()&lt;br /&gt;
    if validare_date(numar1, numar2):&lt;br /&gt;
        print(&amp;quot;\nDatele de intrare corespund restricțiilor impuse.\n&amp;quot;)&lt;br /&gt;
        if int(numar1) == int(numar2) == 0:&lt;br /&gt;
            print(&amp;quot;-1&amp;quot;)&lt;br /&gt;
        else:&lt;br /&gt;
            print(CMD(int(numar1), int(numar2)))&lt;br /&gt;
    else:&lt;br /&gt;
        print(&amp;quot;Datele de intrare nu corespund restricțiilor impuse.&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Explicație ==&lt;br /&gt;
Acest cod primește două numere întregi de la utilizator și verifică dacă acestea sunt valide înainte de a calcula CMMDC (cel mai mare divizor comun) folosind algoritmul lui Euclid. Verificarea validității se face prin verificarea dacă ambele numere sunt numere întregi și dacă sunt cuprinse între 0 și 1.000.000.000. În cazul în care ambele numere sunt egale cu 0, se va afișa -1, altfel se va afișa CMMDC-ul lor.&lt;/div&gt;</summary>
		<author><name>Robert Manc</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=2372_-_Divizori_XYZ&amp;diff=5233</id>
		<title>2372 - Divizori XYZ</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=2372_-_Divizori_XYZ&amp;diff=5233"/>
		<updated>2023-04-28T15:34:11Z</updated>

		<summary type="html">&lt;p&gt;Robert Manc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cerinţa ==&lt;br /&gt;
Se dă un număr natural numit &#039;&#039;&#039;numar&#039;&#039;&#039;. Afișați toate tripletele de numere naturale &#039;&#039;&#039;x&#039;&#039;&#039;, &#039;&#039;&#039;y&#039;&#039;&#039;, &#039;&#039;&#039;z&#039;&#039;&#039; &#039;&#039;&#039;(1&amp;lt;x&amp;lt;y&amp;lt;z&amp;lt;n)&#039;&#039;&#039; care sunt divizori ai lui &#039;&#039;&#039;numar&#039;&#039;&#039; și care au proprietatea că &#039;&#039;&#039;x+y+z=n&#039;&#039;&#039;.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Programul citește de la tastatură numărul &#039;&#039;&#039;numar&#039;&#039;&#039;.&lt;br /&gt;
== Date de ieşire ==&lt;br /&gt;
Programul va afișa pe ecran pe rânduri separate câte un triplet conform cerinței, numerele din triplet fiind in ordine strict crescatoare și separate prin cate un spațiu. Dacă nu există astfel de triplete, atunci se va afișa pe ecran &#039;&#039;&#039;nu exista&#039;&#039;&#039;.&lt;br /&gt;
== Restricții și precizări ==&lt;br /&gt;
* numar &amp;amp;isin; &amp;amp;Nu;&lt;br /&gt;
* 0 &amp;amp;les; numar &amp;amp;les; 1.000.000.000&lt;br /&gt;
== Exemplu1 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
: 24&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele de intrare corespund restricțiilor impuse.&lt;br /&gt;
: 4 8 12&lt;br /&gt;
== Exemplu2 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
: 20&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele de intrare corespund restricțiilor impuse.&lt;br /&gt;
: nu exista&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
def validare_date(numar):&lt;br /&gt;
    flag = False&lt;br /&gt;
    if numar.isdigit():&lt;br /&gt;
        if 0 &amp;lt;= int(numar) &amp;lt;= 1_000_000_000:&lt;br /&gt;
            flag = True&lt;br /&gt;
    return flag&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def triplet(numar):&lt;br /&gt;
    divizori = [d for d in range(1, numar // 2 + 1) if numar % d == 0]&lt;br /&gt;
    triplete = [(x, y, z) for x in divizori for y in divizori for z in divizori&lt;br /&gt;
                if x &amp;lt; y &amp;lt; z and x + y + z == numar]&lt;br /&gt;
    if triplete:&lt;br /&gt;
        for x, y, z in triplete:&lt;br /&gt;
            print(x, y, z)&lt;br /&gt;
    else:&lt;br /&gt;
        print(&amp;quot;nu exista&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    numar = input()&lt;br /&gt;
    if validare_date(numar):&lt;br /&gt;
        print(&amp;quot;\nDatele de intrare corespund restricțiilor impuse.\n&amp;quot;)&lt;br /&gt;
        triplet(int(numar))&lt;br /&gt;
    else:&lt;br /&gt;
        print(&amp;quot;Datele de intrare nu corespund restricțiilor impuse.&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Explicație ==&lt;br /&gt;
Acest program are ca scop afișarea tuturor tripletelor de numere întregi pozitive (x, y, z), astfel încât x + y + z = numar.&lt;br /&gt;
&lt;br /&gt;
Funcția &amp;quot;validare_date&amp;quot; are rolul de a verifica dacă numarul dat ca intrare este un număr pozitiv mai mic sau egal cu 1_000_000_000.&lt;br /&gt;
&lt;br /&gt;
Funcția &amp;quot;triplet&amp;quot; primește ca argument numărul dat ca input și creează o listă de divizori pentru numărul dat, apoi generează o listă cu toate tripletel de numere întregi pozitive (x, y, z) din această listă de divizori, astfel încât x &amp;lt; y &amp;lt; z și x + y + z = numar. Dacă există cel puțin o astfel de tripletă, aceasta va fi afișată. în caz contrar, se va afișa un mesaj corespunzător.&lt;br /&gt;
&lt;br /&gt;
Funcția &amp;quot;main&amp;quot; primește numărul dat ca input și verifică dacă acesta corespunde restricțiilor impuse de &amp;quot;validare_date&amp;quot;. În caz afirmativ, se afișează un mesaj corespunzător, iar apoi se apelează funcția &amp;quot;triplet&amp;quot; cu argumentul numărul dat.&lt;/div&gt;</summary>
		<author><name>Robert Manc</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=0664_-_Nr_Perechi&amp;diff=5232</id>
		<title>0664 - Nr Perechi</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=0664_-_Nr_Perechi&amp;diff=5232"/>
		<updated>2023-04-28T15:31:05Z</updated>

		<summary type="html">&lt;p&gt;Robert Manc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cerinţa ==&lt;br /&gt;
Gigel a învăţat la matematică despre cel mai mic multiplu comun a două numere şi acum trebuie să determine pentru fiecare valoare &#039;&#039;&#039;x&#039;&#039;&#039; dintr-un set de valori date câte perechi ordonate de numere naturale &#039;&#039;&#039;(a,b)&#039;&#039;&#039; au cel mai mic multiplu comun &#039;&#039;&#039;x&#039;&#039;&#039;.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Programul citește de la tastatură număr &#039;&#039;&#039;numar&#039;&#039;&#039;, apoi &#039;&#039;&#039;numere&#039;&#039;&#039; valori &#039;&#039;&#039;x&#039;&#039;&#039;.&lt;br /&gt;
== Date de ieşire ==&lt;br /&gt;
Programul va afișa pe ecran &#039;&#039;&#039;n&#039;&#039;&#039; valori, separate prin exact un spaţiu; fiecare valoare afișată reprezintă numărul de perechi care au cel mai mic multiplu comun egal cu valoarea x corespunzătoare.&lt;br /&gt;
== Restricții și precizări ==&lt;br /&gt;
* numar &amp;amp;isin; &amp;amp;Nu;&lt;br /&gt;
* 1 &amp;amp;les; numar &amp;amp;les; 1.000&lt;br /&gt;
* 1 &amp;amp;les; x &amp;amp;les; 2.000.000.000&lt;br /&gt;
== Exemplu ==&lt;br /&gt;
; Intrare&lt;br /&gt;
: 2&lt;br /&gt;
: 12 4&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele de intrare corespund restricțiilor impuse.&lt;br /&gt;
: 15 5&lt;br /&gt;
== Explicație == &lt;br /&gt;
Cele &#039;&#039;&#039;15&#039;&#039;&#039; perechi pentru care cel mai mic multiplu comun este &#039;&#039;&#039;12&#039;&#039;&#039; sunt: &#039;&#039;&#039;(1,12)&#039;&#039;&#039;, &#039;&#039;&#039;(2,12)&#039;&#039;&#039;, &#039;&#039;&#039;(3,4)&#039;&#039;&#039;, &#039;&#039;&#039;(3,12)&#039;&#039;&#039;, &#039;&#039;&#039;(4,3)&#039;&#039;&#039;, &#039;&#039;&#039;(4,6)&#039;&#039;&#039;, &#039;&#039;&#039;(4,12)&#039;&#039;&#039;, &#039;&#039;&#039;(6,4)&#039;&#039;&#039;, &#039;&#039;&#039;(6,12)&#039;&#039;&#039;, &#039;&#039;&#039;(12,1)&#039;&#039;&#039;, &#039;&#039;&#039;(12,2)&#039;&#039;&#039;, &#039;&#039;&#039;(12,3)&#039;&#039;&#039;, &#039;&#039;&#039;(12,4)&#039;&#039;&#039;, &#039;&#039;&#039;(12,6)&#039;&#039;&#039;, &#039;&#039;&#039;(12,12)&#039;&#039;&#039;.&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
def validare_date(numar, numere):&lt;br /&gt;
    flag = False&lt;br /&gt;
    if 0 &amp;lt;= int(numar) &amp;lt;= 1_000:&lt;br /&gt;
        flag = all(isinstance(x, int) and 1 &amp;lt;= x &amp;lt;= 1_000_000 for x in numere)&lt;br /&gt;
    return flag&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def numar_perechi_cu_cmmmc_x(x):&lt;br /&gt;
    divizor = 2&lt;br /&gt;
    putere_divizor = 1&lt;br /&gt;
    while x &amp;gt; 1:&lt;br /&gt;
        if x % divizor == 0:&lt;br /&gt;
            exponent_divizor = 0&lt;br /&gt;
            while x % divizor == 0:&lt;br /&gt;
                exponent_divizor += 1&lt;br /&gt;
                x //= divizor&lt;br /&gt;
            putere_divizor *= 2 * exponent_divizor + 1&lt;br /&gt;
        else:&lt;br /&gt;
            divizor += 1&lt;br /&gt;
        if x &amp;gt; 1 and divizor * divizor &amp;gt; x:&lt;br /&gt;
            putere_divizor *= 3&lt;br /&gt;
            break&lt;br /&gt;
    return putere_divizor&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    numar = int(input())&lt;br /&gt;
    numere = list(map(int, input().split()))&lt;br /&gt;
    if validare_date(numar, numere):&lt;br /&gt;
        print(&amp;quot;\nDatele de intrare corespund restricțiilor impuse.\n&amp;quot;)&lt;br /&gt;
        for x in numere:&lt;br /&gt;
            print(numar_perechi_cu_cmmmc_x(x), end=&#039; &#039;)&lt;br /&gt;
    else:&lt;br /&gt;
        print(&amp;quot;Datele de intrare nu corespund restricțiilor impuse.&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Explicație ==&lt;br /&gt;
Programul primește ca date de intrare un număr și o listă de numere, apoi calculează numărul de perechi de elemente din listă care au cel mai mic multiplu comun (CMMMC) egal cu numărul dat.&lt;br /&gt;
&lt;br /&gt;
Validarea datelor de intrare este realizată prin funcția validare_date(), care verifică dacă numărul dat și toate numerele din lista se încadrează într-un anumit interval.&lt;br /&gt;
&lt;br /&gt;
Funcția numar_perechi_cu_cmmmc_x(x) primește un număr x și calculează numărul de perechi de numere întregi pozitive din intervalul [1, x] a căror CMMMC este egal cu x. Acest calcul se face prin descompunerea numărului x în factori primi, iar apoi se calculează puterea fiecărui factor în CMMMC. În final, se folosește formula matematică a lui Euler pentru a calcula numărul de perechi de numere cu CMMMC x.&lt;br /&gt;
&lt;br /&gt;
În funcție de validarea datelor de intrare, se afișează pentru fiecare număr din listă numărul de perechi de numere cu CMMMC egal cu numărul dat sau un mesaj corespunzător.&lt;/div&gt;</summary>
		<author><name>Robert Manc</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=3200_-_Nea_Dragulin&amp;diff=5231</id>
		<title>3200 - Nea Dragulin</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=3200_-_Nea_Dragulin&amp;diff=5231"/>
		<updated>2023-04-28T15:29:31Z</updated>

		<summary type="html">&lt;p&gt;Robert Manc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cerinţa ==&lt;br /&gt;
Nea Drăgulin are un &#039;&#039;&#039;numar&#039;&#039;&#039; natural pe care îl scrie de &#039;&#039;&#039;k&#039;&#039;&#039; ori, unul după altul. Aflaţi restul împărţirii numărului astfel obţinut la &#039;&#039;&#039;72&#039;&#039;&#039;.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Programul citește de la tastatură numerele &#039;&#039;&#039;numar&#039;&#039;&#039; şi &#039;&#039;&#039;k&#039;&#039;&#039;.&lt;br /&gt;
== Date de ieşire ==&lt;br /&gt;
Programul va afișa pe ecran restul împărţirii numărului obţinut la &#039;&#039;&#039;72&#039;&#039;&#039;.&lt;br /&gt;
== Restricții și precizări ==&lt;br /&gt;
* numar, k &amp;amp;isin; &amp;amp;Nu;&lt;br /&gt;
* 1 &amp;amp;les; numar, k &amp;amp;les; 2.000.000.000&lt;br /&gt;
== Exemplu ==&lt;br /&gt;
; Intrare&lt;br /&gt;
: 51 3&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele de intrare corespund restricțiilor impuse.&lt;br /&gt;
: 63&lt;br /&gt;
== Explicație == &lt;br /&gt;
Nea Drăgulin scrie numărul &#039;&#039;&#039;51&#039;&#039;&#039; de &#039;&#039;&#039;3&#039;&#039;&#039; ori obţinând numărul &#039;&#039;&#039;515151&#039;&#039;&#039;. Restul împărţirii acestuia la &#039;&#039;&#039;72&#039;&#039;&#039; este &#039;&#039;&#039;63&#039;&#039;&#039;.&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
def validare_date(numar, k):&lt;br /&gt;
    flag = False&lt;br /&gt;
    if 0 &amp;lt;= int(numar) &amp;lt;= 2_000_000_000 and 0 &amp;lt;= int(k) &amp;lt;= 2_000_000_000:&lt;br /&gt;
            flag = True&lt;br /&gt;
    return flag&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def rest_impartire(numar, k):&lt;br /&gt;
    numar_concatenat = int(str(numar) * k)&lt;br /&gt;
    rest = numar_concatenat % 72&lt;br /&gt;
    return rest&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    numar, k = map(int, input().split())&lt;br /&gt;
    if validare_date(numar, k):&lt;br /&gt;
        print(&amp;quot;\nDatele de intrare corespund restricțiilor impuse.\n&amp;quot;)&lt;br /&gt;
        print(rest_impartire(int(numar), int(k)))&lt;br /&gt;
    else:&lt;br /&gt;
        print(&amp;quot;Datele de intrare nu corespund restricțiilor impuse.&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Explicație ==&lt;br /&gt;
Acest program primește ca date de intrare două numere întregi: numărul și k, iar apoi calculează restul împărțirii numărului format prin concatenarea numărului dat de k ori, la 72.&lt;br /&gt;
&lt;br /&gt;
Validarea datelor de intrare este realizată prin funcția validare_date(), care verifică dacă cele două numere date se încadrează într-un anumit interval.&lt;br /&gt;
&lt;br /&gt;
Funcția rest_impartire() primește ca parametri numărul și k și îi concatenează k ori într-un număr întreg numit numar_concatenat. Apoi, funcția calculează restul împărțirii numar_concatenat la 72, utilizând operatorul modulo %.&lt;br /&gt;
&lt;br /&gt;
În funcție de validarea datelor de intrare, se afișează restul împărțirii, sau un mesaj corespunzător.&lt;/div&gt;</summary>
		<author><name>Robert Manc</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=4296_-_Sum_Div&amp;diff=5230</id>
		<title>4296 - Sum Div</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=4296_-_Sum_Div&amp;diff=5230"/>
		<updated>2023-04-28T15:26:47Z</updated>

		<summary type="html">&lt;p&gt;Robert Manc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cerinţa ==&lt;br /&gt;
Se dă un șir de &#039;&#039;&#039;n&#039;&#039;&#039; numere naturale nenule și de asemenea un număr natural &#039;&#039;&#039;p&#039;&#039;&#039;. Să se calculeze suma numerelor din șir care au cel puțin &#039;&#039;&#039;p&#039;&#039;&#039; divizori.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Programul citește de la tastatură numerele &#039;&#039;&#039;nr&#039;&#039;&#039; și &#039;&#039;&#039;p&#039;&#039;&#039;, iar apoi șirul de &#039;&#039;&#039;n&#039;&#039;&#039; numere naturale, separate prin spații.&lt;br /&gt;
== Date de ieşire ==&lt;br /&gt;
Programul va afișa pe ecran numărul &#039;&#039;&#039;suma&#039;&#039;&#039;, reprezentând suma numerelor din șir care au cel puțin &#039;&#039;&#039;p&#039;&#039;&#039; divizori.&lt;br /&gt;
== Restricții și precizări ==&lt;br /&gt;
* nr &amp;amp;isin; &amp;amp;Nu;&lt;br /&gt;
* 1 &amp;amp;les; nr &amp;amp;les; 100.000&lt;br /&gt;
* 1 &amp;amp;les; p &amp;amp;les; 100.000&lt;br /&gt;
* cele &#039;&#039;&#039;n&#039;&#039;&#039; numere din șir vor fi numere naturale nenule mai mici decât &#039;&#039;&#039;1.000.000&#039;&#039;&#039;&lt;br /&gt;
== Exemplu1 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
: 5 3&lt;br /&gt;
: 7 4 10 17 1&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele de intrare corespund restricțiilor impuse.&lt;br /&gt;
: 14&lt;br /&gt;
== Explicație == &lt;br /&gt;
Numerele din șir care au cel puțin &#039;&#039;&#039;3&#039;&#039;&#039; divizori sunt &#039;&#039;&#039;4&#039;&#039;&#039; și &#039;&#039;&#039;10&#039;&#039;&#039;, iar suma lor este &#039;&#039;&#039;14&#039;&#039;&#039;.&lt;br /&gt;
== Exemplu2 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
: 5 100&lt;br /&gt;
: 5 12 24 3 72&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele introduse corespund restricțiilor impuse.&lt;br /&gt;
: 0&lt;br /&gt;
== Explicație == &lt;br /&gt;
Niciun număr nu are cel puțin &#039;&#039;&#039;100&#039;&#039;&#039; de divizori, deci suma este &#039;&#039;&#039;0&#039;&#039;&#039;.&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
import math&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def validare_date(nr, p, n):&lt;br /&gt;
    flag = False&lt;br /&gt;
    if 0 &amp;lt;= int(nr) &amp;lt;= 1_000 and 1 &amp;lt;= int(p) &amp;lt;= 1_0000:&lt;br /&gt;
        flag = all(isinstance(x, int) and 1 &amp;lt;= x &amp;lt;= 1_000_000 for x in n)&lt;br /&gt;
    return flag&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def nrdiv(n):&lt;br /&gt;
    cnt = 0&lt;br /&gt;
    for i in range(1, int(math.sqrt(n))+1):&lt;br /&gt;
        if n % i == 0:&lt;br /&gt;
            cnt += 2&lt;br /&gt;
        if i * i == n:&lt;br /&gt;
            cnt -= 1&lt;br /&gt;
    return cnt&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def suma_p_divizori(n, p):&lt;br /&gt;
    suma = 0&lt;br /&gt;
    for i in n:&lt;br /&gt;
        if nrdiv(i) &amp;gt;= p:&lt;br /&gt;
            suma += i&lt;br /&gt;
    return suma&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    nr, p = map(int, input().split())&lt;br /&gt;
    n = list(map(int, input().split()))&lt;br /&gt;
    if validare_date(nr, p, n):&lt;br /&gt;
        print(&amp;quot;\nDatele de intrare corespund restricțiilor impuse.\n&amp;quot;)&lt;br /&gt;
        suma = suma_p_divizori(n, p)&lt;br /&gt;
        print(suma)&lt;br /&gt;
    else:&lt;br /&gt;
        print(&amp;quot;Datele de intrare nu corespund restricțiilor impuse.&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Explicație ==&lt;br /&gt;
Codul calculează suma numerelor dintr-o listă dată, care au cel puțin p divizori. Datele de intrare sunt primite de la utilizator și sunt validate prin funcția validare_date(). Funcția nrdiv() calculează numărul de divizori ai unui număr dat, iar funcția suma_p_divizori() calculează suma numerelor din listă care au cel puțin p divizori. Dacă datele de intrare corespund restricțiilor impuse, se afișează suma calculată, altfel se afișează un mesaj corespunzător.&lt;/div&gt;</summary>
		<author><name>Robert Manc</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=2745_-_Intrebari&amp;diff=4331</id>
		<title>2745 - Intrebari</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=2745_-_Intrebari&amp;diff=4331"/>
		<updated>2023-04-25T10:38:26Z</updated>

		<summary type="html">&lt;p&gt;Robert Manc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cerinţa ==&lt;br /&gt;
Se dau &#039;&#039;&#039;nr_elemente&#039;&#039;&#039; numere naturale. Dându-se totodată un număr &#039;&#039;&#039;p&#039;&#039;&#039;, apare o intrebare care poate fi de unul dintre următoarele două feluri posibile: care este suma cifrelor valorii minime dintre primele &#039;&#039;&#039;p&#039;&#039;&#039; ale șirului (tipul &#039;&#039;&#039;1&#039;&#039;&#039;) respectiv, care este numărul de divizori ai valorii maxime dintre primele &#039;&#039;&#039;p&#039;&#039;&#039; elemente ale șirului (tipul &#039;&#039;&#039;2&#039;&#039;&#039;).&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Programul citește de la tastatură mai întâi numerele &#039;&#039;&#039;nr_elemente&#039;&#039;&#039;, &#039;&#039;&#039;tip_cerinta&#039;&#039;&#039; și &#039;&#039;&#039;p&#039;&#039;&#039; iar apoi &#039;&#039;&#039;sir&#039;&#039;&#039; numere naturale (elementele șirului).&lt;br /&gt;
== Date de ieşire ==&lt;br /&gt;
Dacă valoarea &#039;&#039;&#039;tip_cerinta&#039;&#039;&#039;, este &#039;&#039;&#039;1&#039;&#039;&#039;, programul va afișa pe ecran răspunsul la cerința de tipul &#039;&#039;&#039;1&#039;&#039;&#039;.&lt;br /&gt;
Dacă valoarea &#039;&#039;&#039;tip_cerinta&#039;&#039;&#039;, este &#039;&#039;&#039;2&#039;&#039;&#039;, programul va afișa pe ecran răspunsul la cerința de tipul &#039;&#039;&#039;2&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Indiferent de tipul cerinței, pe linia următoare se va afișa suma elementelor șirului.&#039;&#039;&#039;&lt;br /&gt;
== Restricții și precizări ==&lt;br /&gt;
* nr_elemente &amp;amp;isin; &amp;amp;Nu;&lt;br /&gt;
* 0 &amp;amp;les; nr_elemente &amp;amp;les; 10&lt;br /&gt;
* cele &#039;&#039;&#039;sir&#039;&#039;&#039; numere citite vor fi naturale nenule și mai mici decât &#039;&#039;&#039;1.000.000.000&#039;&#039;&#039;&lt;br /&gt;
* numerele șirului sunt numerotate începând cu &#039;&#039;&#039;1&#039;&#039;&#039;&lt;br /&gt;
* valoarea lui &#039;&#039;&#039;p&#039;&#039;&#039; este cuprinsă între &#039;&#039;&#039;1&#039;&#039;&#039; și &#039;&#039;&#039;n&#039;&#039;&#039;, inclusiv&lt;br /&gt;
* 1 &amp;amp;les; tip_cerinta &amp;amp;les; 2&lt;br /&gt;
== Exemplu1 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
: 6 1 3&lt;br /&gt;
: 14 13 16 22 15 1&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele introduse corespund restricțiilor impuse.&lt;br /&gt;
: 4&lt;br /&gt;
: 81&lt;br /&gt;
== Explicație == &lt;br /&gt;
Este vorba despre o interogare de tipul &#039;&#039;&#039;1&#039;&#039;&#039; și minimul dintre primele trei elemente ale șirului este 13 iar suma cifrelor sale este 4.&lt;br /&gt;
== Exemplu2 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
: 6 2 3&lt;br /&gt;
: 14 13 16 22 15 1&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele introduse corespund restricțiilor impuse.&lt;br /&gt;
: 5&lt;br /&gt;
: 81&lt;br /&gt;
== Explicație == &lt;br /&gt;
Este vorba despre o interogare de tipul &#039;&#039;&#039;2&#039;&#039;&#039; și maximul dintre primele trei elemente ale șirului este 16 iar numărul său de divizori este 5.&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
import math&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def validare_date(nr_elemente, tip_cerinta, p, sir):&lt;br /&gt;
    flag = False&lt;br /&gt;
    if 0 &amp;lt;= int(nr_elemente) &amp;lt;= 10 and 1 &amp;lt;= int(tip_cerinta) &amp;lt;= 2 and 1 &amp;lt;= int(p) &amp;lt;= nr_elemente:&lt;br /&gt;
        flag = all(isinstance(x, int) and 1 &amp;lt;= x &amp;lt;= 1_000_000_000 for x in sir)&lt;br /&gt;
    return flag&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def nr_divizori(n):  #Calculează numărul de divizori ai lui &amp;quot;n&amp;quot; folosind o buclă &amp;quot;for&amp;quot; și o serie de expresii condiționale.&lt;br /&gt;
    cnt = 0&lt;br /&gt;
    for i in range(1, int(math.sqrt(n))+1):&lt;br /&gt;
        if n % i == 0:&lt;br /&gt;
            cnt += 2&lt;br /&gt;
        if i * i == n:&lt;br /&gt;
            cnt -= 1&lt;br /&gt;
    print(cnt)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def suma_cifre(min_val):  #Calculează suma cifrelor lui &amp;quot;min_val&amp;quot; folosind o buclă &amp;quot;for&amp;quot;&lt;br /&gt;
    suma = 0&lt;br /&gt;
    for i in str(min_val):&lt;br /&gt;
        suma = suma + min_val % 10&lt;br /&gt;
        min_val = min_val // 10&lt;br /&gt;
    print(suma)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    nr_elemente, tip_cerinta, p = map(int, input().split())&lt;br /&gt;
    sir = list(map(int, input().split()))&lt;br /&gt;
    suma = sum(sir)&lt;br /&gt;
    min_val = min(sir[:p])&lt;br /&gt;
    max_val = max(sir[:p])&lt;br /&gt;
    if validare_date(nr_elemente, tip_cerinta, p, sir):&lt;br /&gt;
        print(&amp;quot;\nDatele de intrare corespund restricțiilor impuse.\n&amp;quot;)&lt;br /&gt;
        if tip_cerinta == 1:&lt;br /&gt;
            suma_cifre(min_val)&lt;br /&gt;
            print(suma)&lt;br /&gt;
        else:&lt;br /&gt;
            nr_divizori(max_val)&lt;br /&gt;
            print(suma)&lt;br /&gt;
    else:&lt;br /&gt;
        print(&amp;quot;Datele de intrare nu corespund restricțiilor impuse.&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Explicație ==&lt;br /&gt;
Acest cod definește trei funcții:&lt;br /&gt;
&lt;br /&gt;
: &amp;quot;validare_date&amp;quot; - care primește patru argumente și verifică dacă acestea respectă anumite restricții de valori și tipuri, returnând un flag boolean.&lt;br /&gt;
: &amp;quot;nr_divizori&amp;quot; - care primește un număr întreg &amp;quot;n&amp;quot; și calculează numărul său de divizori, afișând rezultatul.&lt;br /&gt;
: &amp;quot;suma_cifre&amp;quot; - care primește un număr întreg &amp;quot;min_val&amp;quot; și calculează suma cifrelor sale.&lt;br /&gt;
&lt;br /&gt;
În funcția principală &amp;quot;main&amp;quot;, utilizatorul este invitat să introducă trei numere întregi separate prin spațiu: &amp;quot;nr_elemente&amp;quot;, &amp;quot;tip_cerinta&amp;quot; și &amp;quot;p&amp;quot;, urmate de &amp;quot;nr_elemente&amp;quot; numere întregi separate prin spațiu și reprezentând elementele unei liste &amp;quot;sir&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Înainte de a apela funcțiile &amp;quot;nr_divizori&amp;quot; și &amp;quot;suma_cifre&amp;quot;, se verifică dacă datele de intrare sunt valide folosind funcția &amp;quot;validare_date&amp;quot;. Dacă datele de intrare sunt valide, se calculează și se afișează rezultatele în funcție de tipul cerinței (&amp;quot;tip_cerinta&amp;quot;). În caz contrar, se afișează un mesaj de eroare.&lt;/div&gt;</summary>
		<author><name>Robert Manc</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=0377_-_Difi_Min&amp;diff=4322</id>
		<title>0377 - Difi Min</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=0377_-_Difi_Min&amp;diff=4322"/>
		<updated>2023-04-25T10:24:08Z</updated>

		<summary type="html">&lt;p&gt;Robert Manc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cerinţa ==&lt;br /&gt;
Se citește numărul natural nenul numit &#039;&#039;&#039;numar&#039;&#039;&#039;. Determinați două numere naturale &#039;&#039;&#039;a&#039;&#039;&#039; , &#039;&#039;&#039;b&#039;&#039;&#039;, cu proprietatea că:&lt;br /&gt;
*&#039;&#039;&#039;a * b = n&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;a &amp;amp;les; b&#039;&#039;&#039;&lt;br /&gt;
* diferența &#039;&#039;&#039;b-a&#039;&#039;&#039; este minimă&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Programul citește de la tastatură un număr natural ”&#039;&#039;&#039;numar&#039;&#039;&#039;”.&lt;br /&gt;
== Date de ieşire ==&lt;br /&gt;
Programul afișează pe ecran numerele &#039;&#039;&#039;a b&#039;&#039;&#039;, separate prin exact un spațiu, cu semnificația din enunț.&lt;br /&gt;
== Restricții și precizări ==&lt;br /&gt;
* numar &amp;amp;isin; &amp;amp;Nu;&lt;br /&gt;
* 0 &amp;amp;les; numar &amp;amp;les; 1.000.000.000&lt;br /&gt;
== Exemplu ==&lt;br /&gt;
; Intrare&lt;br /&gt;
: 70&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele de intrare corespund restricțiilor impuse.&lt;br /&gt;
: 7 10&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
def validare_date(numar):&lt;br /&gt;
    flag = False&lt;br /&gt;
    if numar.isdigit():&lt;br /&gt;
        if 0 &amp;lt;= int(numar) &amp;lt;= 1_000_000_000:&lt;br /&gt;
            flag = True&lt;br /&gt;
    return flag&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def radical(numar):  # Această funcție calculează radicalul pătrat dintr-un număr întreg&lt;br /&gt;
    x = numar&lt;br /&gt;
    y = (x + 1) // 2&lt;br /&gt;
    while y &amp;lt; x:&lt;br /&gt;
        x = y&lt;br /&gt;
        y = (x + numar // x) // 2&lt;br /&gt;
    return x&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def difi_min(numar):  # Această funcție găsește cea mai mică pereche de numere întregi a și b astfel încât a * b = numar.&lt;br /&gt;
    a = sqrt(numar)  # Începe prin a calcula radicalul pătrat al numărului și apoi scade 1 din a până când numărul este divizibil cu a.&lt;br /&gt;
    while numar % a != 0:&lt;br /&gt;
        a -= 1&lt;br /&gt;
        b = numar // a  # La fiecare pas, calculează și valoarea corespunzătoare a lui b și le afișează pe ambele.&lt;br /&gt;
        print(a, b)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    numar = input()&lt;br /&gt;
    if validare_date(numar):&lt;br /&gt;
        print(&amp;quot;\nDatele de intrare corespund restricțiilor impuse.\n&amp;quot;)&lt;br /&gt;
        difi_min(int(numar))&lt;br /&gt;
    else:&lt;br /&gt;
        print(&amp;quot;Datele de intrare nu corespund restricțiilor impuse.&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Explicație ==&lt;br /&gt;
Acest cod definește trei funcții:&lt;br /&gt;
&lt;br /&gt;
: &amp;quot;validare_date&amp;quot; verifică dacă un număr dat este un întreg pozitiv mai mic sau egal cu 1.000.000.000.&lt;br /&gt;
: &amp;quot;radical&amp;quot; calculează radicalul pătrat dintr-un număr întreg.&lt;br /&gt;
: &amp;quot;difi_min&amp;quot; găsește cea mai mică pereche de numere întregi a și b astfel încât a * b = numar.&lt;br /&gt;
În funcția principală, se citește un număr de la tastatură, se verifică dacă acesta este valid utilizând funcția &amp;quot;validare_date&amp;quot; și, dacă da, se apelează funcția &amp;quot;difi_min&amp;quot; cu numărul dat ca argument. Dacă numărul nu este valid, se afișează un mesaj corespunzător.&lt;/div&gt;</summary>
		<author><name>Robert Manc</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=0377_-_Difi_Min&amp;diff=4321</id>
		<title>0377 - Difi Min</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=0377_-_Difi_Min&amp;diff=4321"/>
		<updated>2023-04-25T10:23:09Z</updated>

		<summary type="html">&lt;p&gt;Robert Manc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cerinţa ==&lt;br /&gt;
Se citește numărul natural nenul numit &#039;&#039;&#039;numar&#039;&#039;&#039;. Determinați două numere naturale &#039;&#039;&#039;a&#039;&#039;&#039; , &#039;&#039;&#039;b&#039;&#039;&#039;, cu proprietatea că:&lt;br /&gt;
*&#039;&#039;&#039;a * b = n&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;a &amp;amp;les; b&#039;&#039;&#039;&lt;br /&gt;
* diferența &#039;&#039;&#039;b-a&#039;&#039;&#039; este minimă&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Programul citește de la tastatură un număr natural ”&#039;&#039;&#039;numar&#039;&#039;&#039;”.&lt;br /&gt;
== Date de ieşire ==&lt;br /&gt;
Programul afișează pe ecran numerele &#039;&#039;&#039;a b&#039;&#039;&#039;, separate prin exact un spațiu, cu semnificația din enunț.&lt;br /&gt;
== Restricții și precizări ==&lt;br /&gt;
* numar &amp;amp;isin; &amp;amp;Nu;&lt;br /&gt;
* 0 &amp;amp;les; numar &amp;amp;les; 1.000.000.000&lt;br /&gt;
== Exemplu ==&lt;br /&gt;
; Intrare&lt;br /&gt;
: 70&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele de intrare corespund restricțiilor impuse.&lt;br /&gt;
: 7 10&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
def validare_date(numar):&lt;br /&gt;
    flag = False&lt;br /&gt;
    if numar.isdigit():&lt;br /&gt;
        if 0 &amp;lt;= int(numar) &amp;lt;= 1_000_000_000:&lt;br /&gt;
            flag = True&lt;br /&gt;
    return flag&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def radical(numar):  # Această funcție calculează radicalul pătrat dintr-un număr întreg&lt;br /&gt;
    x = numar&lt;br /&gt;
    y = (x + 1) // 2&lt;br /&gt;
    while y &amp;lt; x:&lt;br /&gt;
        x = y&lt;br /&gt;
        y = (x + numar // x) // 2&lt;br /&gt;
    return x&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def difi_min(numar):  # Această funcție găsește cea mai mică pereche de numere întregi a și b astfel încât a * b = numar.&lt;br /&gt;
    a = sqrt(numar)  # Începe prin a calcula radicalul pătrat al numărului și apoi scade 1 din a până când numărul este divizibil cu a.&lt;br /&gt;
    while numar % a != 0:&lt;br /&gt;
        a -= 1&lt;br /&gt;
        b = numar // a  # La fiecare pas, calculează și valoarea corespunzătoare a lui b și le afișează pe ambele.&lt;br /&gt;
        print(a, b)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    numar = input()&lt;br /&gt;
    if validare_date(numar):&lt;br /&gt;
        print(&amp;quot;\nDatele de intrare corespund restricțiilor impuse.\n&amp;quot;)&lt;br /&gt;
        difi_min(int(numar))&lt;br /&gt;
    else:&lt;br /&gt;
        print(&amp;quot;Datele de intrare nu corespund restricțiilor impuse.&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Explicație ==&lt;br /&gt;
Acest cod definește trei funcții:&lt;br /&gt;
&lt;br /&gt;
: &amp;quot;validare_date&amp;quot; verifică dacă un număr dat este un întreg pozitiv mai mic sau egal cu 1.000.000.000.&lt;br /&gt;
: &amp;quot;sqrt&amp;quot; calculează radicalul pătrat dintr-un număr întreg utilizând metoda lui Newton.&lt;br /&gt;
: &amp;quot;difi_min&amp;quot; găsește cea mai mică pereche de numere întregi a și b astfel încât a * b = numar.&lt;br /&gt;
În funcția principală, se citește un număr de la tastatură, se verifică dacă acesta este valid utilizând funcția &amp;quot;validare_date&amp;quot; și, dacă da, se apelează funcția &amp;quot;difi_min&amp;quot; cu numărul dat ca argument. Dacă numărul nu este valid, se afișează un mesaj corespunzător.&lt;/div&gt;</summary>
		<author><name>Robert Manc</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=1574_-_Prietene&amp;diff=4318</id>
		<title>1574 - Prietene</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=1574_-_Prietene&amp;diff=4318"/>
		<updated>2023-04-25T10:11:26Z</updated>

		<summary type="html">&lt;p&gt;Robert Manc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cerinţa ==&lt;br /&gt;
Se dau două numere naturale. Să se afle dacă aceste numere sunt prietene. Numerele prietene sunt perechile de numere în care fiecare număr în parte este suma tuturor divizorilor celuilalt număr, mai puțin acesta.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Programul citește de la tastatură două numere &#039;&#039;&#039;numar1&#039;&#039;&#039; și &#039;&#039;&#039;numar2&#039;&#039;&#039;.&lt;br /&gt;
== Date de ieşire ==&lt;br /&gt;
Programul va afișa pe ecran mesajul &#039;&#039;&#039;PRIETENE&#039;&#039;&#039; dacă cele două numere sunt prietene, respectiv &#039;&#039;&#039;NU SUNT PRIETENE&#039;&#039;&#039; dacă aceste numere nu sunt prietene.&lt;br /&gt;
== Restricții și precizări ==&lt;br /&gt;
* numar &amp;amp;isin; &amp;amp;Nu;&lt;br /&gt;
* 0 &amp;amp;les; numar1 &amp;amp;les; 100.000&lt;br /&gt;
* 0 &amp;amp;les; numar2 &amp;amp;les; 100.000&lt;br /&gt;
== Exemplu ==&lt;br /&gt;
; Intrare&lt;br /&gt;
: 220 284&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele de intrare corespund restricțiilor impuse.&lt;br /&gt;
: PRIETENE&lt;br /&gt;
== Explicație == &lt;br /&gt;
Divizorii lui &#039;&#039;&#039;220&#039;&#039;&#039; sunt &#039;&#039;&#039;1&#039;&#039;&#039;, &#039;&#039;&#039;2&#039;&#039;&#039;, &#039;&#039;&#039;4&#039;&#039;&#039;, &#039;&#039;&#039;5&#039;&#039;&#039;, &#039;&#039;&#039;10&#039;&#039;&#039;, &#039;&#039;&#039;11&#039;&#039;&#039;, &#039;&#039;&#039;20&#039;&#039;&#039;, &#039;&#039;&#039;22&#039;&#039;&#039;, &#039;&#039;&#039;44&#039;&#039;&#039;, &#039;&#039;&#039;55&#039;&#039;&#039; și &#039;&#039;&#039;110&#039;&#039;&#039;, iar suma acestora este &#039;&#039;&#039;284&#039;&#039;&#039;. Divizorii lui &#039;&#039;&#039;284&#039;&#039;&#039; sunt &#039;&#039;&#039;1&#039;&#039;&#039;, &#039;&#039;&#039;2&#039;&#039;&#039;, &#039;&#039;&#039;4&#039;&#039;&#039;, &#039;&#039;&#039;71&#039;&#039;&#039; și &#039;&#039;&#039;142&#039;&#039;&#039;, iar suma acestora este &#039;&#039;&#039;220&#039;&#039;&#039;.&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
def validare_date(numar1, numar2):&lt;br /&gt;
    flag = False&lt;br /&gt;
    if numar1.isdigit() and numar2.isdigit():&lt;br /&gt;
        if 0 &amp;lt;= int(numar1) &amp;lt;= 100_000 and 0 &amp;lt;= int(numar2) &amp;lt;= 100_000:&lt;br /&gt;
            flag = True&lt;br /&gt;
    return flag&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def prietene(numar1, numar2):&lt;br /&gt;
    suma_div_num1 = sum(i for i in range(1, numar1) if numar1 % i == 0)&lt;br /&gt;
    suma_div_num2 = sum(i for i in range(1, numar2) if numar2 % i == 0)&lt;br /&gt;
    if suma_div_num1 == numar2 and suma_div_num2 == numar1:&lt;br /&gt;
        print(&amp;quot;PRIETENE&amp;quot;)&lt;br /&gt;
    else:&lt;br /&gt;
        print(&amp;quot;NU SUNT PRIETENE&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    numar1, numar2 = input().split()&lt;br /&gt;
    if validare_date(numar1, numar2):&lt;br /&gt;
        print(&amp;quot;\nDatele de intrare corespund restricțiilor impuse.\n&amp;quot;)&lt;br /&gt;
        prietene(int(numar1), int(numar2))&lt;br /&gt;
    else:&lt;br /&gt;
        print(&amp;quot;Datele de intrare nu corespund restricțiilor impuse.&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Explicație ==&lt;br /&gt;
Acest program primește la intrare două numere naturale și verifică dacă ele sunt numere prietene. Pentru a valida datele de intrare, se verifică dacă cele două numere sunt numere întregi și dacă se încadrează în intervalul 0-100000.&lt;br /&gt;
&lt;br /&gt;
Funcția prietene(numar1, numar2) calculează suma divizorilor fiecărui număr și verifică dacă suma divizorilor primului număr este egală cu al doilea număr și invers. Dacă condiția este îndeplinită, programul afișează &amp;quot;PRIETENE&amp;quot;, în caz contrar afișează &amp;quot;NU SUNT PRIETENE&amp;quot;.&lt;/div&gt;</summary>
		<author><name>Robert Manc</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=0445_-_Pseudo_Perfect&amp;diff=4317</id>
		<title>0445 - Pseudo Perfect</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=0445_-_Pseudo_Perfect&amp;diff=4317"/>
		<updated>2023-04-25T10:09:12Z</updated>

		<summary type="html">&lt;p&gt;Robert Manc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cerinţa ==&lt;br /&gt;
Să se scrie un program care verifică dacă un număr natural citit de la tastatură este pseudoperfect. Un număr natural este pseudoperfect dacă este divizor al sumei divizorilor săi.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Programul citește de la tastatură un număr natural ”&#039;&#039;&#039;numar&#039;&#039;&#039;”.&lt;br /&gt;
== Date de ieşire ==&lt;br /&gt;
Programul afișează pe ecran mesajul &#039;&#039;&#039;DA&#039;&#039;&#039;, dacă &#039;&#039;&#039;numar&#039;&#039;&#039; este număr pseudoperfect, respectiv &#039;&#039;&#039;NU&#039;&#039;&#039;, în caz contrar&lt;br /&gt;
== Restricții și precizări ==&lt;br /&gt;
* numar &amp;amp;isin; &amp;amp;Nu;&lt;br /&gt;
* 0 &amp;amp;les; numar &amp;amp;les; 1.000.000.000&lt;br /&gt;
== Exemplu ==&lt;br /&gt;
; Intrare&lt;br /&gt;
: 120&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele de intrare corespund restricțiilor impuse.&lt;br /&gt;
: DA&lt;br /&gt;
== Explicație == &lt;br /&gt;
Suma divizorilor lui &#039;&#039;&#039;120&#039;&#039;&#039; este &#039;&#039;&#039;360&#039;&#039;&#039;, care este multiplu al lui &#039;&#039;&#039;120&#039;&#039;&#039;.&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
def validare_date(numar):&lt;br /&gt;
    flag = False&lt;br /&gt;
    if numar.isdigit():&lt;br /&gt;
        if 0 &amp;lt;= int(numar) &amp;lt;= 1_000_000_000:&lt;br /&gt;
            flag = True&lt;br /&gt;
    return flag&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def pseudo(numar):&lt;br /&gt;
    suma_divizorilor = 0&lt;br /&gt;
    for i in range(1, numar + 1):&lt;br /&gt;
        if numar % i == 0:&lt;br /&gt;
            suma_divizorilor += i&lt;br /&gt;
    if suma_divizorilor % numar == 0:&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;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    numar = input()&lt;br /&gt;
    if validare_date(numar):&lt;br /&gt;
        print(&amp;quot;\nDatele de intrare corespund restricțiilor impuse.\n&amp;quot;)&lt;br /&gt;
        pseudo(int(numar))&lt;br /&gt;
    else:&lt;br /&gt;
        print(&amp;quot;Datele de intrare nu corespund restricțiilor impuse.&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Explicație ==&lt;br /&gt;
Programul primește un număr de la utilizator și determină dacă acesta este &amp;quot;pseudo&amp;quot;. Un număr este considerat pseudo dacă suma divizorilor săi este un multiplu al numărului în sine.&lt;br /&gt;
&lt;br /&gt;
Funcția validare_date verifică dacă numărul introdus este un număr întreg valid și se află în intervalul [0, 1_000_000_000].&lt;br /&gt;
&lt;br /&gt;
Funcția pseudo primește un număr și calculează suma divizorilor săi. Dacă suma divizorilor este un multiplu al numărului în sine, atunci funcția afișează &amp;quot;DA&amp;quot;, altfel afișează &amp;quot;NU&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Programul afișează mesaje corespunzătoare dacă datele introduse nu corespund restricțiilor impuse sau dacă numărul este pseudo sau nu.&lt;/div&gt;</summary>
		<author><name>Robert Manc</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=0064_-_Numar_Perfect&amp;diff=4314</id>
		<title>0064 - Numar Perfect</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=0064_-_Numar_Perfect&amp;diff=4314"/>
		<updated>2023-04-25T10:07:51Z</updated>

		<summary type="html">&lt;p&gt;Robert Manc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cerinţa ==&lt;br /&gt;
Să se scrie un program care verifică dacă un număr natural citit de la tastatură este perfect. Un număr natural este perfect dacă dublul său este egal cu suma divizorilor săi.&lt;br /&gt;
== Date de intrare == &lt;br /&gt;
Programul citește de la tastatură numărul ”&#039;&#039;&#039;numar&#039;&#039;&#039;”&lt;br /&gt;
== Date de ieşire ==&lt;br /&gt;
Programul afișează pe ecran mesajul &#039;&#039;&#039;numar este perfect&#039;&#039;&#039;, dacă ”&#039;&#039;&#039;numar&#039;&#039;&#039;” este număr perfect, respectiv &#039;&#039;&#039;numar nu este perfect&#039;&#039;&#039;, în caz contrar.&lt;br /&gt;
== Restricții și precizări ==&lt;br /&gt;
* numar &amp;amp;isin; &amp;amp;Nu;&lt;br /&gt;
* 0 &amp;amp;les; numar &amp;amp;les; 2.000.000.000&lt;br /&gt;
== Exemplu ==&lt;br /&gt;
; Intrare&lt;br /&gt;
: 6&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele de intrare corespund restricțiilor impuse.&lt;br /&gt;
: 6 este perfect&lt;br /&gt;
== Explicație == &lt;br /&gt;
Divizorii lui &#039;&#039;&#039;6&#039;&#039;&#039; sunt &#039;&#039;&#039;1&#039;&#039;&#039;, &#039;&#039;&#039;2&#039;&#039;&#039;, &#039;&#039;&#039;3&#039;&#039;&#039;, &#039;&#039;&#039;6&#039;&#039;&#039;. Suma lor este &#039;&#039;&#039;12&#039;&#039;&#039;, iar &#039;&#039;&#039;2*6=12&#039;&#039;&#039;.&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
&lt;br /&gt;
def validare_date(numar):&lt;br /&gt;
    flag = False&lt;br /&gt;
    if numar.isdigit():&lt;br /&gt;
        if 0 &amp;lt;= int(numar) &amp;lt;= 2_000_000_000:&lt;br /&gt;
            flag = True&lt;br /&gt;
    return flag&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def perfect(numar):&lt;br /&gt;
    suma_divizorilor = 0&lt;br /&gt;
    for i in range(1, numar + 1):&lt;br /&gt;
        if numar % i == 0:&lt;br /&gt;
            suma_divizorilor += i&lt;br /&gt;
    if suma_divizorilor == numar * 2:&lt;br /&gt;
        print(numar, &amp;quot;este perfect&amp;quot;)&lt;br /&gt;
    else:&lt;br /&gt;
        print(numar, &amp;quot;nu este perfect&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    numar = input()&lt;br /&gt;
    if validare_date(numar):&lt;br /&gt;
        print(&amp;quot;\nDatele de intrare corespund restricțiilor impuse.\n&amp;quot;)&lt;br /&gt;
        perfect(int(numar))&lt;br /&gt;
    else:&lt;br /&gt;
        print(&amp;quot;Datele de intrare nu corespund restricțiilor impuse.&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Explicație ==&lt;br /&gt;
Codul verifică dacă un număr dat este perfect sau nu.&lt;br /&gt;
&lt;br /&gt;
Funcția validare_date verifică dacă numărul introdus este un întreg pozitiv și se încadrează între 0 și 2 miliarde.&lt;br /&gt;
&lt;br /&gt;
Funcția perfect primește un număr și calculează suma divizorilor săi, verificând apoi dacă suma este dublul numărului. Dacă este, afișează că numărul este perfect, altfel afișează că nu este perfect.&lt;br /&gt;
&lt;br /&gt;
În if __name__ == &#039;__main__&#039;, codul citește un număr de la tastatură, verifică dacă este valid folosind funcția validare_date și, dacă este, apelează funcția perfect.&lt;/div&gt;</summary>
		<author><name>Robert Manc</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=3272_-_Sum_Div_Ogl&amp;diff=4312</id>
		<title>3272 - Sum Div Ogl</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=3272_-_Sum_Div_Ogl&amp;diff=4312"/>
		<updated>2023-04-25T10:06:29Z</updated>

		<summary type="html">&lt;p&gt;Robert Manc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cerinţa ==&lt;br /&gt;
Se dau &#039;&#039;&#039;n&#039;&#039;&#039; numere naturale. Determinați suma divizorilor oglinditelor celor &#039;&#039;&#039;n&#039;&#039;&#039; numere.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Programul citește de la tastatură numărul &#039;&#039;&#039;n&#039;&#039;&#039;, iar apoi &#039;&#039;&#039;n&#039;&#039;&#039; numere naturale, separate prin spații.&lt;br /&gt;
== Date de ieşire ==&lt;br /&gt;
Programul va afișa pe ecran numărul &#039;&#039;&#039;suma&#039;&#039;&#039;, reprezentând suma cerută.&lt;br /&gt;
== Restricții și precizări ==&lt;br /&gt;
* numar &amp;amp;isin; &amp;amp;Nu;&lt;br /&gt;
* 0 &amp;amp;les; n &amp;amp;les; 1.000&lt;br /&gt;
* 0 &amp;amp;les; numar &amp;amp;les; 1.000.000.000&lt;br /&gt;
== Exemplu ==&lt;br /&gt;
; Intrare&lt;br /&gt;
: 3&lt;br /&gt;
: 12 23 30&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele de intrare corespund restricțiilor impuse.&lt;br /&gt;
: 99&lt;br /&gt;
== Explicație == &lt;br /&gt;
Oglinditul lui &#039;&#039;&#039;12&#039;&#039;&#039; este &#039;&#039;&#039;21&#039;&#039;&#039;; suma divizorilor săi este &#039;&#039;&#039;32&#039;&#039;&#039;. Oglinditul lui &#039;&#039;&#039;23&#039;&#039;&#039; este &#039;&#039;&#039;32&#039;&#039;&#039;; suma divizorilor săi este &#039;&#039;&#039;63&#039;&#039;&#039;. Oglinditul lui &#039;&#039;&#039;30&#039;&#039;&#039; este &#039;&#039;&#039;3&#039;&#039;&#039;; suma divizorilor săi este &#039;&#039;&#039;4&#039;&#039;&#039;.&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
def validare_date_numar(numar):&lt;br /&gt;
    flag = False&lt;br /&gt;
    if numar.isdigit():&lt;br /&gt;
        if 0 &amp;lt;= int(numar) &amp;lt;= 1_000_000_000:&lt;br /&gt;
            flag = True&lt;br /&gt;
    return flag&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def validare_date_numere(n):&lt;br /&gt;
    flag = False&lt;br /&gt;
    if 0 &amp;lt;= int(n) &amp;lt;= 1000:&lt;br /&gt;
        flag = True&lt;br /&gt;
    return flag&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def oglindit(numar):&lt;br /&gt;
    return int(str(numar)[::-1])&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def suma_divizori(numar):&lt;br /&gt;
    suma = 0&lt;br /&gt;
    for i in range(1, numar//2 + 1):&lt;br /&gt;
        if numar % i == 0:&lt;br /&gt;
            suma += i&lt;br /&gt;
    suma += numar  # adăugăm și numărul în sumă, deoarece este divizor al lui numar&lt;br /&gt;
    return suma&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def suma_divizori_oglindite(lista_numere):&lt;br /&gt;
    suma_totala = 0&lt;br /&gt;
    for numar in lista_numere:&lt;br /&gt;
        oglinditul = oglindit(numar)&lt;br /&gt;
        suma_divizori_oglindit = suma_divizori(oglinditul)&lt;br /&gt;
        suma_totala += suma_divizori_oglindit&lt;br /&gt;
    return suma_totala&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    n = int(input())&lt;br /&gt;
    if validare_date_numere(n):&lt;br /&gt;
        print(&amp;quot;\nDatele de intrare corespund restricțiilor impuse.\n&amp;quot;)&lt;br /&gt;
        lista_numere = []&lt;br /&gt;
        for i in range(n):&lt;br /&gt;
            while True:&lt;br /&gt;
                numar = input(f&amp;quot;Introduceți numărul {i + 1}: &amp;quot;)&lt;br /&gt;
                if validare_date_numar(numar):&lt;br /&gt;
                    lista_numere.append(int(numar))&lt;br /&gt;
                    break&lt;br /&gt;
                else:&lt;br /&gt;
                    print(&amp;quot;Numărul introdus nu corespunde restricțiilor impuse.&amp;quot;)&lt;br /&gt;
        print(f&amp;quot;\nSuma divizorilor oglinditelor este: {suma_divizori_oglindite(lista_numere)}&amp;quot;)&lt;br /&gt;
    else:&lt;br /&gt;
        print(&amp;quot;Datele de intrare nu corespund restricțiilor impuse.&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Explicație ==&lt;br /&gt;
Acest program calculează suma divizorilor oglinditelor a n numere date de la tastatură. Mai întâi, programul verifică dacă numărul de numere introduse este valid, folosind funcția validare_date_numere. Dacă da, utilizatorul este rugat să introducă cele n numere, iar acestea sunt stocate într-o listă. Pentru fiecare număr din listă, se calculează oglinditul folosind funcția oglindit și apoi se calculează suma divizorilor oglinditelor acestui număr, folosind funcția suma_divizori_oglindite. Suma totală a divizorilor oglinditelor este calculată prin adăugarea sumei divizorilor oglinditelor pentru fiecare număr din listă și este afișată la sfârșit. Funcțiile validare_date_numar și validare_date verifică dacă numerele sunt valide și respectă anumite restricții.&lt;/div&gt;</summary>
		<author><name>Robert Manc</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=0408_-_Divizorii_Oglinditului&amp;diff=4308</id>
		<title>0408 - Divizorii Oglinditului</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=0408_-_Divizorii_Oglinditului&amp;diff=4308"/>
		<updated>2023-04-25T10:04:45Z</updated>

		<summary type="html">&lt;p&gt;Robert Manc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cerinţa ==&lt;br /&gt;
Se dă un număr natural numit ”&#039;&#039;&#039;numar&#039;&#039;&#039;”. Să se determine numărul de divizori ai oglinditului lui ”&#039;&#039;&#039;numar&#039;&#039;&#039;”.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Programul citește de la tastatură un număr natural ”&#039;&#039;&#039;numar&#039;&#039;&#039;”.&lt;br /&gt;
== Date de ieşire ==&lt;br /&gt;
Programul afișează pe ecran &#039;&#039;&#039;numar_divizori&#039;&#039;&#039; , reprezentând rezultatul cerut.&lt;br /&gt;
== Restricții și precizări ==&lt;br /&gt;
* numar &amp;amp;isin; &amp;amp;Nu;&lt;br /&gt;
* 0 &amp;amp;les; numar &amp;amp;les; 1.000.000.000&lt;br /&gt;
== Exemplu ==&lt;br /&gt;
; Intrare&lt;br /&gt;
: 63&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele de intrare corespund restricțiilor impuse.&lt;br /&gt;
: 9&lt;br /&gt;
== Explicație == &lt;br /&gt;
Oglinditul lui &#039;&#039;&#039;63&#039;&#039;&#039; este &#039;&#039;&#039;36&#039;&#039;&#039;, care are &#039;&#039;&#039;9&#039;&#039;&#039; divizori.&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
def validare_date(numar):&lt;br /&gt;
    flag = False&lt;br /&gt;
    if numar.isdigit():&lt;br /&gt;
        if 0 &amp;lt;= int(numar) &amp;lt;= 1_000_000_000:&lt;br /&gt;
            flag = True&lt;br /&gt;
    return flag&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def numar_divizori_oglindit(n):&lt;br /&gt;
    oglindit = int(str(n)[::-1])&lt;br /&gt;
    numar_divizori = 0&lt;br /&gt;
    for i in range(1, oglindit+1):&lt;br /&gt;
        if oglindit % i == 0:&lt;br /&gt;
            numar_divizori += 1&lt;br /&gt;
    print(numar_divizori)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    numar = input()&lt;br /&gt;
    if validare_date(numar):&lt;br /&gt;
        print(&amp;quot;\nDatele de intrare corespund restricțiilor impuse.\n&amp;quot;)&lt;br /&gt;
        numar_divizori_oglindit(int(numar))&lt;br /&gt;
    else:&lt;br /&gt;
        print(&amp;quot;Datele de intrare nu corespund restricțiilor impuse.&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Explicație ==&lt;br /&gt;
Funcția validare_date(numar) primește un singur parametru numar și verifică dacă acesta este un număr întreg pozitiv și se află între 0 și 1_000_000_000. Dacă aceste condiții sunt îndeplinite, funcția returnează True, altfel returnează False.&lt;br /&gt;
&lt;br /&gt;
Funcția numar_divizori_oglindit(n) primește un singur parametru n și calculează numărul de divizori ai numărului oglindit al lui n. Mai întâi, se calculează numărul oglindit al lui n și se salvează în variabila oglindit. Apoi, se calculează numărul de divizori ai oglindit prin iterarea prin numerele de la 1 la oglindit și verificarea dacă acestea sunt divizori ai lui oglindit. Numărul de divizori este stocat în variabila numar_divizori. Rezultatul este afișat prin apelul funcției print().&lt;br /&gt;
&lt;br /&gt;
În funcția main(), utilizatorul introduce un număr, care este verificat folosind funcția validare_date(). Dacă numărul respectă restricțiile, se afișează un mesaj corespunzător și se calculează și se afișează numărul de divizori ai numărului oglindit al numărului dat, prin apelul funcției numar_divizori_oglindit(). Dacă numărul nu respectă restricțiile, se afișează un mesaj de eroare.&lt;/div&gt;</summary>
		<author><name>Robert Manc</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=0061_-_Afisare_Divizori_Comuni&amp;diff=4307</id>
		<title>0061 - Afisare Divizori Comuni</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=0061_-_Afisare_Divizori_Comuni&amp;diff=4307"/>
		<updated>2023-04-25T10:01:05Z</updated>

		<summary type="html">&lt;p&gt;Robert Manc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cerinţa ==&lt;br /&gt;
Să se scrie un program care afișează divizorii comuni ai două numere naturale citite de la tastatură&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Programul citește de la tastatură numerele &#039;&#039;&#039;numar1&#039;&#039;&#039; și &#039;&#039;&#039;numar2&#039;&#039;&#039;.&lt;br /&gt;
== Date de ieşire ==&lt;br /&gt;
Programul afișează pe ecran, în ordine crescătoare, divizorii comuni ai numerelor &#039;&#039;&#039;numar1&#039;&#039;&#039; și &#039;&#039;&#039;numar2&#039;&#039;&#039;, separați printr-un spațiu.&lt;br /&gt;
== Restricții și precizări ==&lt;br /&gt;
* numar &amp;amp;isin; &amp;amp;Nu;&lt;br /&gt;
* 0 &amp;lt; numar1, numar2 &amp;lt; 1.000.000.000&lt;br /&gt;
== Exemplu ==&lt;br /&gt;
; Intrare&lt;br /&gt;
: 24 36&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele de intrare corespund restricțiilor impuse.&lt;br /&gt;
: 1 2 3 4 6 12&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
def validare_date(numar1, numar2):&lt;br /&gt;
    flag = False&lt;br /&gt;
    if numar1.isdigit() and numar2.isdigit():&lt;br /&gt;
        if 0 &amp;lt; int(numar1) &amp;lt; int(numar2) &amp;lt;= 1_000_000_000:&lt;br /&gt;
            flag = True&lt;br /&gt;
    return flag&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def divizori_comuni(numar1, numar2):&lt;br /&gt;
    divizori = []&lt;br /&gt;
    for i in range(1, min(numar1, numar2) + 1):&lt;br /&gt;
        if numar1 % i == 0 and numar2 % i == 0:&lt;br /&gt;
            divizori.append(i)&lt;br /&gt;
    return divizori&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    numar1 = input()&lt;br /&gt;
    numar2 = input()&lt;br /&gt;
    if validare_date(numar1, numar2):&lt;br /&gt;
        print(&amp;quot;\nDatele de intrare corespund restricțiilor impuse.\n&amp;quot;)&lt;br /&gt;
        divizori = divizori_comuni(int(numar1), int(numar2))&lt;br /&gt;
        for divizor in divizori:&lt;br /&gt;
            print(divizor, end=&amp;quot; &amp;quot;)&lt;br /&gt;
    else:&lt;br /&gt;
        print(&amp;quot;Datele de intrare nu corespund restricțiilor impuse.&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Explicație ==&lt;br /&gt;
Programul citește două numere întregi de la utilizator și afișează divizorii comuni ai acestora. În primul rând, funcția validare_date() validează datele introduse de utilizator, verificând dacă acestea sunt numere întregi și dacă se încadrează în intervalul 1 - 1.000.000.000. Funcția divizori_comuni() primește cele două numere întregi și returnează o listă cu divizorii comuni ai celor două numere, prin parcurgerea tuturor numerelor întregi între 1 și cel mai mic dintre cele două numere și verificarea dacă acestea sunt divizori ai ambelor numere. Dacă datele de intrare nu sunt valide, programul afișează un mesaj corespunzător.&lt;/div&gt;</summary>
		<author><name>Robert Manc</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=3663_-_PPDP&amp;diff=4306</id>
		<title>3663 - PPDP</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=3663_-_PPDP&amp;diff=4306"/>
		<updated>2023-04-25T09:59:20Z</updated>

		<summary type="html">&lt;p&gt;Robert Manc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cerinţa ==&lt;br /&gt;
Se dă un număr natural numit ”&#039;&#039;&#039;numar&#039;&#039;&#039;”. Calculați pătratul celui mai mic divizor propriu al său.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Programul citește de la tastatură un număr natural numit ”&#039;&#039;&#039;numar&#039;&#039;&#039;”.&lt;br /&gt;
== Date de ieşire ==&lt;br /&gt;
Programul va afișa pe ecran numărul calculat.&lt;br /&gt;
== Restricții și precizări ==&lt;br /&gt;
* numar &amp;amp;isin; &amp;amp;Nu;&lt;br /&gt;
* 4 &amp;amp;les; numar &amp;amp;les; 1.000.000.000&lt;br /&gt;
* se garantează că ”&#039;&#039;&#039;numar&#039;&#039;&#039;” nu este prim&lt;br /&gt;
== Exemplu ==&lt;br /&gt;
; Intrare&lt;br /&gt;
: 12&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele de intrare corespund restricțiilor impuse.&lt;br /&gt;
: 4&lt;br /&gt;
== Explicație == &lt;br /&gt;
Cel mai mic divizor al lui &#039;&#039;&#039;12&#039;&#039;&#039; este &#039;&#039;&#039;2&#039;&#039;&#039; iar pătratul acestei valori este &#039;&#039;&#039;4&#039;&#039;&#039;.&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
def validare_date(numar):&lt;br /&gt;
    flag = False&lt;br /&gt;
    if numar.isdigit() and 4 &amp;lt;= int(numar) &amp;lt;= 1_000_000_000:&lt;br /&gt;
        flag = True&lt;br /&gt;
        if prim(int(numar)):&lt;br /&gt;
            flag = False&lt;br /&gt;
    return flag&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def prim(numar):&lt;br /&gt;
    if numar &amp;lt;= 1:&lt;br /&gt;
        return False&lt;br /&gt;
    for i in range(2, numar // 2 + 1):&lt;br /&gt;
        if numar % i == 0:&lt;br /&gt;
            return False&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def patrat_cel_mai_mic_divizor(numar):&lt;br /&gt;
    divizor = 2&lt;br /&gt;
    while numar % divizor != 0:&lt;br /&gt;
        divizor += 1&lt;br /&gt;
    return divizor**2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    numar = input()&lt;br /&gt;
    if validare_date(numar):&lt;br /&gt;
        print(&amp;quot;\nDatele de intrare corespund restricțiilor impuse.\n&amp;quot;)&lt;br /&gt;
        print(patrat_cel_mai_mic_divizor(int(numar)))&lt;br /&gt;
    else:&lt;br /&gt;
        print(&amp;quot;Datele de intrare nu corespund restricțiilor impuse.&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Explicație == &lt;br /&gt;
Programul primește un număr și verifică dacă acesta îndeplinește anumite condiții de validare, adică trebuie să fie un număr întreg cuprins între 4 și 1.000.000.000 și să nu fie prim. Dacă numărul nu îndeplinește aceste condiții, programul afișează un mesaj de eroare. În caz contrar, se calculează pătratul celui mai mic divizor al numărului și se afișează rezultatul. Pentru a găsi pătratul celui mai mic divizor, se caută cel mai mic divizor al numărului și se ridică acesta la pătrat.&lt;/div&gt;</summary>
		<author><name>Robert Manc</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=0389_-_Divizori_Pari_Interval&amp;diff=4305</id>
		<title>0389 - Divizori Pari Interval</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=0389_-_Divizori_Pari_Interval&amp;diff=4305"/>
		<updated>2023-04-25T09:57:46Z</updated>

		<summary type="html">&lt;p&gt;Robert Manc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cerinţa ==&lt;br /&gt;
Se dau două numere naturale &#039;&#039;&#039;numar1&#039;&#039;&#039; și &#039;&#039;&#039;numar2&#039;&#039;&#039;. Să se determine cel mai mic și cel mai mare număr din intervalul &#039;&#039;&#039;[numar1,numar2]&#039;&#039;&#039; cu număr maxim de divizori pari şi numărul maxim de divizori pari.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Programul citește de la tastatură numerele &#039;&#039;&#039;numar1&#039;&#039;&#039; și &#039;&#039;&#039;numar2&#039;&#039;&#039;.&lt;br /&gt;
== Date de ieşire ==&lt;br /&gt;
Programul afișează pe ecran numerele &#039;&#039;&#039;nr_divizori_pari&#039;&#039;&#039; &#039;&#039;&#039;min_numar&#039;&#039;&#039; &#039;&#039;&#039;max_numar&#039;&#039;&#039;, separate prin exact un spațiu , reprezentând numărul maxim de divizori pari ai numerelor din &#039;&#039;&#039;[numar1,numar2]&#039;&#039;&#039;, cel mai mic şi respectiv cel mai mare număr din interval cu număr maxim de divizori pari.&lt;br /&gt;
== Restricții și precizări ==&lt;br /&gt;
* numar &amp;amp;isin; &amp;amp;Nu;&lt;br /&gt;
* 0 &amp;amp;les; numar1 &amp;amp;les; numar2 &amp;amp;les; 1.000.000.000&lt;br /&gt;
* numar2 - numar1 &amp;amp;les; 1.000&lt;br /&gt;
== Exemplu ==&lt;br /&gt;
; Intrare&lt;br /&gt;
: 10 20&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele de intrare corespund restricțiilor impuse.&lt;br /&gt;
: 4 12 20&lt;br /&gt;
== Explicație == &lt;br /&gt;
Numărul maxim de divizori pari pentru numerele din intervalul &#039;&#039;&#039;[10,20]&#039;&#039;&#039; este &#039;&#039;&#039;4&#039;&#039;&#039;. Numerele din interval cu &#039;&#039;&#039;4&#039;&#039;&#039; divizori pari sunt &#039;&#039;&#039;12&#039;&#039;&#039;, &#039;&#039;&#039;16&#039;&#039;&#039; şi &#039;&#039;&#039;20&#039;&#039;&#039;.&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
def validare_date(numar1, numar2):&lt;br /&gt;
    flag = False&lt;br /&gt;
    if numar1.isdigit() and numar2.isdigit():&lt;br /&gt;
        if 0 &amp;lt; int(numar1) &amp;lt; int(numar2) &amp;lt;= 1_000_000_000 and int(numar2) - int(numar1) &amp;lt;= 1000:&lt;br /&gt;
            flag = True&lt;br /&gt;
&lt;br /&gt;
    return flag&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def numar_divizori_pari(divizori_pari):&lt;br /&gt;
    count = 0&lt;br /&gt;
    for divizor in range(1, divizori_pari+1):&lt;br /&gt;
        if divizori_pari % divizor == 0 and divizor % 2 == 0:&lt;br /&gt;
            count += 1&lt;br /&gt;
    return count&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def maxim_divizori_pari(numar1, numar2):&lt;br /&gt;
    max_divizori = 0&lt;br /&gt;
    min_numar = 0&lt;br /&gt;
    max_numar = 0&lt;br /&gt;
    for numar in range(int(numar1), int(numar2)+1):&lt;br /&gt;
        divizori_pari = numar_divizori_pari(numar)&lt;br /&gt;
        if divizori_pari &amp;gt; max_divizori:&lt;br /&gt;
            max_divizori = divizori_pari&lt;br /&gt;
            min_numar = numar&lt;br /&gt;
            max_numar = numar&lt;br /&gt;
        elif divizori_pari == max_divizori:&lt;br /&gt;
            max_numar = numar&lt;br /&gt;
    return max_divizori, min_numar, max_numar&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    numar1 = input()&lt;br /&gt;
    numar2 = input()&lt;br /&gt;
    if validare_date(numar1, numar2):&lt;br /&gt;
        nr_divizori_pari, min_numar, max_numar = maxim_divizori_pari(int(numar1), int(numar2))&lt;br /&gt;
        print(&amp;quot;\nDatele de intrare corespund restricțiilor impuse.\n&amp;quot;)&lt;br /&gt;
        print(f&amp;quot;{nr_divizori_pari} {min_numar} {max_numar}&amp;quot;)&lt;br /&gt;
    else:&lt;br /&gt;
        print(&amp;quot;Datele de intrare nu corespund restricțiilor impuse.&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Explicație ==&lt;br /&gt;
Acest program primește ca intrare două numere naturale (numar1 și numar2) și calculează numărul maxim de divizori pari ai unui număr din intervalul [numar1, numar2] și afișează numărul maxim de divizori pari și cele două numere care au acest număr maxim de divizori pari. Programul include funcțiile validare_date, numar_divizori_pari și maxim_divizori_pari.&lt;/div&gt;</summary>
		<author><name>Robert Manc</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=1568_-_Medie_Div&amp;diff=4304</id>
		<title>1568 - Medie Div</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=1568_-_Medie_Div&amp;diff=4304"/>
		<updated>2023-04-25T09:55:30Z</updated>

		<summary type="html">&lt;p&gt;Robert Manc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cerinţa ==&lt;br /&gt;
Se dă un număr natural numit ”&#039;&#039;&#039;numar&#039;&#039;&#039;”. Să se calculeze şi să se afişeze media aritmetică a tuturor divizorilor săi. Media va fi cu fix &#039;&#039;&#039;2&#039;&#039;&#039; zecimale dupa virgula.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Programul citește de la tastatură numărul natural ”&#039;&#039;&#039;numar&#039;&#039;&#039;”.&lt;br /&gt;
== Date de ieşire ==&lt;br /&gt;
Programul afișează pe ecran numărul ”&#039;&#039;&#039;media&#039;&#039;&#039;”, reprezentând media aritmetica.&lt;br /&gt;
== Restricții și precizări ==&lt;br /&gt;
* numar &amp;amp;isin; &amp;amp;Nu;&lt;br /&gt;
* 0 &amp;amp;les; numar &amp;amp;les; 1.000.000.000&lt;br /&gt;
== Exemplu ==&lt;br /&gt;
; Intrare&lt;br /&gt;
: 9&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele de intrare corespund restricțiilor impuse.&lt;br /&gt;
: 4.33&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
; Intrare&lt;br /&gt;
: 8&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele de intrare corespund restricțiilor impuse.&lt;br /&gt;
: 3.75&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
; Intrare&lt;br /&gt;
: Ana&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele de intrare nu corespund restricțiilor impuse.&lt;br /&gt;
== Explicație == &lt;br /&gt;
Divizorii lui &#039;&#039;&#039;9&#039;&#039;&#039; sunt: &#039;&#039;&#039;1&#039;&#039;&#039;, &#039;&#039;&#039;3&#039;&#039;&#039;, &#039;&#039;&#039;9&#039;&#039;&#039;. Media aritmetica este &#039;&#039;&#039;4.33&#039;&#039;&#039;.&amp;lt;br&amp;gt;&lt;br /&gt;
Divizorii lui &#039;&#039;&#039;8&#039;&#039;&#039; sunt: &#039;&#039;&#039;1&#039;&#039;&#039;, &#039;&#039;&#039;2&#039;&#039;&#039;, &#039;&#039;&#039;4&#039;&#039;&#039;, &#039;&#039;&#039;8&#039;&#039;&#039;. Media aritmetica este &#039;&#039;&#039;3.75&#039;&#039;&#039;&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
def validare_date(numar):&lt;br /&gt;
    flag = False&lt;br /&gt;
    if numar.isdigit():&lt;br /&gt;
        if 0 &amp;lt;= int(numar) &amp;lt;= 1_000_000_000:&lt;br /&gt;
            flag = True&lt;br /&gt;
    return flag&lt;br /&gt;
&lt;br /&gt;
def medie(numar):&lt;br /&gt;
    suma_divizorilor = numar&lt;br /&gt;
    numarul_divizorilor = 1  #inițializăm numarul_divizorilor cu 1 pentru că suma_divizorilor deja conține numărul însuși&lt;br /&gt;
    for i in range(1, numar // 2 + 1):&lt;br /&gt;
        if numar % i == 0:&lt;br /&gt;
            suma_divizorilor += i&lt;br /&gt;
            numarul_divizorilor += 1&lt;br /&gt;
    medie_divizori = suma_divizorilor / numarul_divizorilor&lt;br /&gt;
    print(medie_divizori)&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    numar = input()&lt;br /&gt;
    if validare_date(numar):&lt;br /&gt;
        print(&amp;quot;\nDatele de intrare corespund restricțiilor impuse.\n&amp;quot;)&lt;br /&gt;
        medie(int(numar))&lt;br /&gt;
    else:&lt;br /&gt;
        print(&amp;quot;Datele de intrare nu corespund restricțiilor impuse.&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Explicație == &lt;br /&gt;
În acest cod funcția de validare verifică dacă numărul este un întreg pozitiv între 0 și 1_000_000_000, iar funcția care calculează media divizorilor adună toți divizorii numărului dat și îi împarte la numărul total de divizori ai acestuia, afișând apoi rezultatul.&lt;/div&gt;</summary>
		<author><name>Robert Manc</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=0388_-_Numarul_Divizorilor_Pari&amp;diff=4303</id>
		<title>0388 - Numarul Divizorilor Pari</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=0388_-_Numarul_Divizorilor_Pari&amp;diff=4303"/>
		<updated>2023-04-25T09:52:29Z</updated>

		<summary type="html">&lt;p&gt;Robert Manc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cerinţa ==&lt;br /&gt;
Se dă un număr natural numit ”&#039;&#039;&#039;numar&#039;&#039;&#039;”. Să se determine câți divizori pari are acest număr.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Programul citește de la tastatură numărul natural ”&#039;&#039;&#039;numar&#039;&#039;&#039;”.&lt;br /&gt;
== Date de ieşire ==&lt;br /&gt;
Programul afișează pe ecran numărul ”&#039;&#039;&#039;numarul_divizorilor_pari&#039;&#039;&#039;”, reprezentând numărul divizorilor pari ai lui ”&#039;&#039;&#039;numar&#039;&#039;&#039;”.&lt;br /&gt;
== Restricții și precizări ==&lt;br /&gt;
* numar &amp;amp;isin; &amp;amp;Nu;&lt;br /&gt;
* 0 &amp;amp;les; numar &amp;amp;les; 1.000.000.000&lt;br /&gt;
== Exemplu ==&lt;br /&gt;
; Intrare&lt;br /&gt;
: 6&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele de intrare corespund restricțiilor impuse.&lt;br /&gt;
: 2&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
; Intrare&lt;br /&gt;
: 12&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele de intrare corespund restricțiilor impuse.&lt;br /&gt;
: 4&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
; Intrare&lt;br /&gt;
: -20&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele de intrare nu corespund restricțiilor impuse.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
== Explicație == &lt;br /&gt;
Divizorii pari ai lui &#039;&#039;&#039;6&#039;&#039;&#039; sunt &#039;&#039;&#039;2&#039;&#039;&#039; și &#039;&#039;&#039;6&#039;&#039;&#039;.&amp;lt;br&amp;gt;&lt;br /&gt;
Divizorii pari ai lui &#039;&#039;&#039;12&#039;&#039;&#039; sunt &#039;&#039;&#039;2&#039;&#039;&#039;, &#039;&#039;&#039;4&#039;&#039;&#039;, &#039;&#039;&#039;6&#039;&#039;&#039;, &#039;&#039;&#039;12&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
def validare_date(numar):&lt;br /&gt;
    flag = False&lt;br /&gt;
    if numar.isdigit():&lt;br /&gt;
        if 0 &amp;lt;= int(numar) &amp;lt;= 1_000_000_000:&lt;br /&gt;
            flag = True&lt;br /&gt;
    return flag&lt;br /&gt;
&lt;br /&gt;
def nr_divizori(numar):&lt;br /&gt;
    if numar % 2 == 0:&lt;br /&gt;
        numarul_divizorilor_pari = 1&lt;br /&gt;
    else:&lt;br /&gt;
        numarul_divizorilor_pari = 0&lt;br /&gt;
    for i in range(1, numar // 2 + 1):&lt;br /&gt;
        if numar % i == 0:&lt;br /&gt;
            if i % 2 == 0:&lt;br /&gt;
                numarul_divizorilor_pari += 1&lt;br /&gt;
    print(numarul_divizorilor_pari)&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    numar = input()&lt;br /&gt;
    if validare_date(numar):&lt;br /&gt;
        print(&amp;quot;\nDatele de intrare corespund restricțiilor impuse.\n&amp;quot;)&lt;br /&gt;
        nr_divizori(int(numar))&lt;br /&gt;
    else:&lt;br /&gt;
        print(&amp;quot;Datele de intrare nu corespund restricțiilor impuse.&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Explicație == &lt;br /&gt;
Codul calculează numărul de divizori pari ai unui număr întreg dat și verifică validitatea datelor de intrare. Se folosește o funcție pentru validare și o funcție pentru calculul numărului de divizori pari. La rulare se verifică dacă numărul dat de utilizator este valid și se apelează funcția pentru calculul numărului de divizori pari.&lt;/div&gt;</summary>
		<author><name>Robert Manc</name></author>
	</entry>
</feed>