<?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=Diana+Butuza</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=Diana+Butuza"/>
	<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/wiki/Special:Contributions/Diana_Butuza"/>
	<updated>2026-05-01T02:45:40Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.42.1</generator>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=Gazeta_Matematic%C4%83_nr_9_2012&amp;diff=7628</id>
		<title>Gazeta Matematică nr 9 2012</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=Gazeta_Matematic%C4%83_nr_9_2012&amp;diff=7628"/>
		<updated>2023-12-04T14:07:26Z</updated>

		<summary type="html">&lt;p&gt;Diana Butuza: Pagină nouă: &amp;#039;&amp;#039;&amp;#039;14380 (Vasile Ienuțaș)&amp;#039;&amp;#039;&amp;#039;  &amp;#039;&amp;#039;Determinați cifrele a și b știind că &amp;lt;math&amp;gt;\overline{\rm ab}=(a+b)(a+b-1)&amp;lt;/math&amp;gt;.&amp;#039;&amp;#039;  &amp;#039;&amp;#039;&amp;#039;14383 (Gheorghe Gherasim)&amp;#039;&amp;#039;&amp;#039;  &amp;#039;&amp;#039;Numerele naturale distincte a, b verifică &amp;lt;math&amp;gt;9 \cdot [\,a, b]\,=a \cdot b \cdot (\,a \cdot b)\,&amp;lt;/math&amp;gt;.&amp;#039;&amp;#039;  i) &amp;#039;&amp;#039;Arătați că a și b nu sunt prime între ele.&amp;#039;&amp;#039;  ii) &amp;#039;&amp;#039;Arătați că diferența numerelor este cel puțin 3.&amp;#039;&amp;#039;  &amp;#039;&amp;#039;([a, b] reprezintă cel mai mic multiplu comun al numerelor a și b, iar (a, b) este cel m...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;14380 (Vasile Ienuțaș)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Determinați cifrele a și b știind că &amp;lt;math&amp;gt;\overline{\rm ab}=(a+b)(a+b-1)&amp;lt;/math&amp;gt;.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;14383 (Gheorghe Gherasim)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Numerele naturale distincte a, b verifică &amp;lt;math&amp;gt;9 \cdot [\,a, b]\,=a \cdot b \cdot (\,a \cdot b)\,&amp;lt;/math&amp;gt;.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
i) &#039;&#039;Arătați că a și b nu sunt prime între ele.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
ii) &#039;&#039;Arătați că diferența numerelor este cel puțin 3.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;([a, b] reprezintă cel mai mic multiplu comun al numerelor a și b, iar (a, b) este cel mai mare divizor comun al numerelor a și b).&#039;&#039;&lt;/div&gt;</summary>
		<author><name>Diana Butuza</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=Gazeta_Matematic%C4%83&amp;diff=7626</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=7626"/>
		<updated>2023-12-04T14:00:49Z</updated>

		<summary type="html">&lt;p&gt;Diana Butuza: &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;2&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;
|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>Diana Butuza</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=14383&amp;diff=7625</id>
		<title>14383</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=14383&amp;diff=7625"/>
		<updated>2023-12-04T13:46:50Z</updated>

		<summary type="html">&lt;p&gt;Diana Butuza: Pagină nouă: &amp;#039;&amp;#039;&amp;#039;14383 (Gheorghe Gherasim)&amp;#039;&amp;#039;&amp;#039;  &amp;#039;&amp;#039;Numerele naturale distincte a, b verifică &amp;lt;math&amp;gt;9 \cdot [\,a, b]\,=a \cdot b \cdot (\,a \cdot b)\,&amp;lt;/math&amp;gt;.&amp;#039;&amp;#039;  i) &amp;#039;&amp;#039;Arătați că a și b nu sunt prime între ele.&amp;#039;&amp;#039;  ii) &amp;#039;&amp;#039;Arătați că diferența numerelor este cel puțin 3.&amp;#039;&amp;#039;  &amp;#039;&amp;#039;([a, b] reprezintă cel mai mic multiplu comun al numerelor a și b, iar (a, b) este cel mai mare divizor comun al numerelor a și b).&amp;#039;&amp;#039;  &amp;#039;&amp;#039;&amp;#039;Soluție.&amp;#039;&amp;#039;&amp;#039;  i) Se știe că &amp;lt;math&amp;gt;a \cdot b= [\,a, b]\, \cdot (\,a, b)...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;14383 (Gheorghe Gherasim)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Numerele naturale distincte a, b verifică &amp;lt;math&amp;gt;9 \cdot [\,a, b]\,=a \cdot b \cdot (\,a \cdot b)\,&amp;lt;/math&amp;gt;.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
i) &#039;&#039;Arătați că a și b nu sunt prime între ele.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
ii) &#039;&#039;Arătați că diferența numerelor este cel puțin 3.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;([a, b] reprezintă cel mai mic multiplu comun al numerelor a și b, iar (a, b) este cel mai mare divizor comun al numerelor a și b).&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Soluție.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
i) Se știe că &amp;lt;math&amp;gt;a \cdot b= [\,a, b]\, \cdot (\,a, b)\,&amp;lt;/math&amp;gt; și relația devine &amp;lt;math&amp;gt;9 \cdot [\,a, b]\,=[\,a, b]\, \cdot {\{(\,a, b)\,\}}^2&amp;lt;/math&amp;gt;. De aici obținem &amp;lt;math&amp;gt;{\{(\,a, b)\,\}}^2=9&amp;lt;/math&amp;gt;, de unde &amp;lt;math&amp;gt;(\,a, b)\,=3&amp;lt;/math&amp;gt;, ceea ce arată că a și b nu sunt prime între ele.&lt;br /&gt;
&lt;br /&gt;
ii) Din &amp;lt;math&amp;gt;(\,a, b)\,=3&amp;lt;/math&amp;gt; rezultă &amp;lt;math&amp;gt;a=3x&amp;lt;/math&amp;gt; și &amp;lt;math&amp;gt;b=3y&amp;lt;/math&amp;gt; cu &amp;lt;math&amp;gt;(\,x, y)\,=1&amp;lt;/math&amp;gt;. Deoarece &amp;lt;math&amp;gt;a&amp;lt;b&amp;lt;/math&amp;gt; avem &amp;lt;math&amp;gt;x&amp;lt;y&amp;lt;/math&amp;gt;. Cum x și y sunt numere naturale avem &amp;lt;math&amp;gt;y-x \geq 1&amp;lt;/math&amp;gt;. Atunci &amp;lt;math&amp;gt;b-a=3(\,y-x)\, \geq 3 \cdot 1=3&amp;lt;/math&amp;gt;, de unde &amp;lt;math&amp;gt;b \geq a+3&amp;lt;/math&amp;gt;.&lt;/div&gt;</summary>
		<author><name>Diana Butuza</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=14380&amp;diff=7613</id>
		<title>14380</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=14380&amp;diff=7613"/>
		<updated>2023-12-04T12:57:47Z</updated>

		<summary type="html">&lt;p&gt;Diana Butuza: Pagină nouă: &amp;#039;&amp;#039;&amp;#039;14380 (Vasile Ienuțaș)&amp;#039;&amp;#039;&amp;#039;  &amp;#039;&amp;#039;Determinați cifrele a și b știind că &amp;lt;math&amp;gt;\overline{\rm ab}=(a+b)(a+b-1)&amp;lt;/math&amp;gt;.&amp;#039;&amp;#039;  &amp;#039;&amp;#039;&amp;#039;Soluție.&amp;#039;&amp;#039;&amp;#039;  Observăm că membrul stâng al egalității reprezintă produsul a două numere consecutive. Ultima cifră a unui produs de două numere consecutive poate fi 0, 2 sau 6 și atunci &amp;lt;math&amp;gt;b\in\{0,2,6\}&amp;lt;/math&amp;gt;. Prin încercări găsim soluția unică &amp;lt;math&amp;gt;\overline{\rm ab}=72&amp;lt;/math&amp;gt;.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;14380 (Vasile Ienuțaș)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Determinați cifrele a și b știind că &amp;lt;math&amp;gt;\overline{\rm ab}=(a+b)(a+b-1)&amp;lt;/math&amp;gt;.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Soluție.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Observăm că membrul stâng al egalității reprezintă produsul a două numere consecutive. Ultima cifră a unui produs de două numere consecutive poate fi 0, 2 sau 6 și atunci &amp;lt;math&amp;gt;b\in\{0,2,6\}&amp;lt;/math&amp;gt;. Prin încercări găsim soluția unică &amp;lt;math&amp;gt;\overline{\rm ab}=72&amp;lt;/math&amp;gt;.&lt;/div&gt;</summary>
		<author><name>Diana Butuza</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=3308_-_N_Div_Tri&amp;diff=6236</id>
		<title>3308 - N Div Tri</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=3308_-_N_Div_Tri&amp;diff=6236"/>
		<updated>2023-05-09T12:24:30Z</updated>

		<summary type="html">&lt;p&gt;Diana Butuza: /* Cerinţa */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cerinţa ==&lt;br /&gt;
Șirul numerelor triunghiulare e obținut prin adunarea numerelor naturale. Deci al șaptelea număr triunghiular e &#039;&#039;&#039;1 + 2 + 3 + 4 + 5 + 6 + 7 = 28&#039;&#039;&#039;. Primii &#039;&#039;&#039;10&#039;&#039;&#039; termeni din șir sunt: &#039;&#039;&#039;1, 3, 6, 10, 15, 21, 28, 36, 45, 55, ...&#039;&#039;&#039;&lt;br /&gt;
Să listăm toți divizorii primelor &#039;&#039;&#039;7&#039;&#039;&#039; numere triunghiulare:&lt;br /&gt;
    1: 1&lt;br /&gt;
    3: 1,3&lt;br /&gt;
    6: 1,2,3,6&lt;br /&gt;
   10: 1,2,5,10&lt;br /&gt;
   15: 1,3,5,15&lt;br /&gt;
   21: 1,3,7,21&lt;br /&gt;
   28: 1,2,4,7,14,28&lt;br /&gt;
&lt;br /&gt;
Se poate observa că &#039;&#039;&#039;28&#039;&#039;&#039; e primul număr triunghiular care are mai mult de &#039;&#039;&#039;5&#039;&#039;&#039; divizori.&lt;br /&gt;
Se dă un număr natural &#039;&#039;&#039;n&#039;&#039;&#039;. Să se scrie un program care determină &#039;&#039;&#039;primul număr triunghiular&#039;&#039;&#039; cu mai mult de &#039;&#039;&#039;n&#039;&#039;&#039; divizori.&lt;br /&gt;
&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Programul citește de la tastatură numărul natural &#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;x&#039;&#039;&#039;, reprezentând primul număr triunghiular care are mai mult de &#039;&#039;&#039;n&#039;&#039;&#039; divizori.&lt;br /&gt;
== Restricții și precizări ==&lt;br /&gt;
*1 ≤ n ≤ 1000&lt;br /&gt;
== Exemplu ==&lt;br /&gt;
; Intrare&lt;br /&gt;
:3&lt;br /&gt;
; Ieșire&lt;br /&gt;
:6&lt;br /&gt;
== Explicație == &lt;br /&gt;
Primul număr trunghiular care are mai mult de &#039;&#039;&#039;3&#039;&#039;&#039; divizori este &#039;&#039;&#039;6&#039;&#039;&#039;.&lt;br /&gt;
== Exemplu 2 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
:1&lt;br /&gt;
; Ieșire&lt;br /&gt;
:3&lt;br /&gt;
== Explicație == &lt;br /&gt;
Primul număr trunghiular care are mai mult de un divizor este &#039;&#039;&#039;3&#039;&#039;&#039;.&lt;br /&gt;
== Exemplu 3 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
:133&lt;br /&gt;
; Ieșire&lt;br /&gt;
:437580&lt;br /&gt;
== Explicație == &lt;br /&gt;
Primul număr trunghiular care are mai mult de &#039;&#039;&#039;133&#039;&#039;&#039; de divizori este &#039;&#039;&#039;437580&#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 numar_divizori(n):&lt;br /&gt;
    numar = 0&lt;br /&gt;
    for i in range(1, int(n**0.5)+1):&lt;br /&gt;
        if n % i == 0:&lt;br /&gt;
            if n/i == i:&lt;br /&gt;
                numar += 1&lt;br /&gt;
            else:&lt;br /&gt;
                numar += 2&lt;br /&gt;
    return numar&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def validare_date(n):&lt;br /&gt;
    if n.isdigit() and 1 &amp;lt;= int(n) &amp;lt;= 1000:&lt;br /&gt;
        print(&amp;quot;\nDatele de intrare corespund restricțiilor impuse.\n&amp;quot;)&lt;br /&gt;
        return True&lt;br /&gt;
    else:&lt;br /&gt;
        print(&amp;quot;Datele de intrare nu corespund restricțiilor impuse.&amp;quot;)&lt;br /&gt;
        return False&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    n = input(&amp;quot;Introduceti n: &amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    if validare_date(n):&lt;br /&gt;
        numar = 1&lt;br /&gt;
        index = 2&lt;br /&gt;
&lt;br /&gt;
        while numar_divizori(numar) &amp;lt;= int(n):&lt;br /&gt;
            numar += index&lt;br /&gt;
            index += 1&lt;br /&gt;
&lt;br /&gt;
        print(&amp;quot;Primul număr triunghiular cu mai mult de&amp;quot;, n, &amp;quot;divizori este:&amp;quot;, numar)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Explicație rezolvare==&lt;br /&gt;
Acest program găsește primul număr triunghiular care are mai mult de &#039;&#039;&#039;n&#039;&#039;&#039; divizori. Folosind o buclă &#039;&#039;&#039;while&#039;&#039;&#039;, programul calculează numerele triunghiulare și numără divizorii acestora până când se găsește primul număr triunghiular care are mai mult de &#039;&#039;&#039;n&#039;&#039;&#039; divizori. Pentru a se asigura că datele de intrare sunt valide, programul include o funcție care verifică dacă &#039;&#039;&#039;n&#039;&#039;&#039; se află în intervalul specificat.&lt;/div&gt;</summary>
		<author><name>Diana Butuza</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=0443_-_Divizori_Primi&amp;diff=6235</id>
		<title>0443 - Divizori Primi</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=0443_-_Divizori_Primi&amp;diff=6235"/>
		<updated>2023-05-09T12:01:48Z</updated>

		<summary type="html">&lt;p&gt;Diana Butuza: /* Explicație */&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. Calculaţi suma obținută prin adunarea primului divizor prim al fiecărui număr citit.&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;S&#039;&#039;&#039;, reprezentând suma cerută.&lt;br /&gt;
== Restricții și precizări ==&lt;br /&gt;
*&#039;&#039;&#039;1 ≤ n ≤ 1000&#039;&#039;&#039;&lt;br /&gt;
*cele &#039;&#039;&#039;n&#039;&#039;&#039; numere citite vor fi mai mari decât &#039;&#039;&#039;1&#039;&#039;&#039; și mai mici decât &#039;&#039;&#039;1.000.000.000&#039;&#039;&#039;&lt;br /&gt;
== Exemplu ==&lt;br /&gt;
; Intrare&lt;br /&gt;
:5&lt;br /&gt;
15 13 39 49 25&lt;br /&gt;
; Ieșire&lt;br /&gt;
:31&lt;br /&gt;
== Explicație == &lt;br /&gt;
Pentru numerele date, primul divizor prim este &#039;&#039;&#039;3 13 3 7 5&#039;&#039;&#039;, cu suma &#039;&#039;&#039;31&#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;
import math&lt;br /&gt;
&lt;br /&gt;
def prim(n):&lt;br /&gt;
    d = 2&lt;br /&gt;
    p = 0&lt;br /&gt;
    while n &amp;gt; 1:&lt;br /&gt;
        p = 0&lt;br /&gt;
        while n % d == 0:&lt;br /&gt;
            p += 1&lt;br /&gt;
            n //= d&lt;br /&gt;
        if p &amp;gt; 0:&lt;br /&gt;
            return d&lt;br /&gt;
        d += 1&lt;br /&gt;
        if d * d &amp;gt; n:&lt;br /&gt;
            d = n&lt;br /&gt;
    return n&lt;br /&gt;
&lt;br /&gt;
def validare_date():&lt;br /&gt;
    n = 0&lt;br /&gt;
    while n &amp;lt;= 0:&lt;br /&gt;
        try:&lt;br /&gt;
            n = int(input(&amp;quot;Introduceti n: &amp;quot;))&lt;br /&gt;
            if n &amp;lt;= 0:&lt;br /&gt;
                print(&amp;quot;n trebuie sa fie un numar intreg pozitiv.&amp;quot;)&lt;br /&gt;
        except ValueError:&lt;br /&gt;
            print(&amp;quot;n trebuie sa fie un numar intreg pozitiv.&amp;quot;)&lt;br /&gt;
    return n&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    if validare_date():&lt;br /&gt;
        print(&amp;quot;\nDatele de intrare corespund restricțiilor impuse.\n&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;
    n = validare_date()&lt;br /&gt;
    s = 0&lt;br /&gt;
    for i in range(n):&lt;br /&gt;
        x = 0&lt;br /&gt;
        while x &amp;lt;= 0:&lt;br /&gt;
            try:&lt;br /&gt;
                x = int(input(f&amp;quot;Introduceti x[{i+1}]: &amp;quot;))&lt;br /&gt;
                if x &amp;lt;= 0:&lt;br /&gt;
                    print(&amp;quot;x trebuie sa fie un numar intreg pozitiv.&amp;quot;)&lt;br /&gt;
            except ValueError:&lt;br /&gt;
                print(&amp;quot;x trebuie sa fie un numar intreg pozitiv.&amp;quot;)&lt;br /&gt;
        s += prim(x)&lt;br /&gt;
    print(f&amp;quot;Suma divizorilor primi este: {s}&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Explicație rezolvare==&lt;br /&gt;
Acest program calculează suma divizorilor primi ai unui set de numere introduse de utilizator. Folosește o funcție pentru a verifica dacă intrarea este validă și o altă funcție pentru a găsi cel mai mic divizor prim al unui număr. Programul calculează suma divizorilor primi pentru fiecare număr introdus de utilizator și le adună pentru a obține o valoare totală, pe care o afișează la final.&lt;/div&gt;</summary>
		<author><name>Diana Butuza</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=0462_-_Div_Prim_Max&amp;diff=6234</id>
		<title>0462 - Div Prim Max</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=0462_-_Div_Prim_Max&amp;diff=6234"/>
		<updated>2023-05-09T11:57:51Z</updated>

		<summary type="html">&lt;p&gt;Diana Butuza: /* Rezolvare */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cerinţa ==&lt;br /&gt;
Se citesc numere de la tastatură până când se introduc două numere egale. Să se determine numărul citit cu număr maxim de divizori primi.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Programul citește de la tastatură numere întregi. Citirea se încheie când se introduc două numere egale.&lt;br /&gt;
== Date de ieşire ==&lt;br /&gt;
Programul afișează pe ecran numerele &#039;&#039;&#039;M NRDIV&#039;&#039;&#039;, separate printr-un spațiu, reprezentând numărul citit cu număr maxim de divizori primi și numărul de divizori primi ai săi.&lt;br /&gt;
== Restricții și precizări ==&lt;br /&gt;
*numerele citite sunt numere naturale mai mici decât &#039;&#039;&#039;1.000.000.000&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;dacă există mai multe numere cu număr maxim de divizori primi, se va afişa cel mai mare dintre ele&#039;&#039;&#039;&lt;br /&gt;
== Exemplu ==&lt;br /&gt;
; Intrare&lt;br /&gt;
:15 30 24 17 84 42 108 20 20&lt;br /&gt;
; Ieșire&lt;br /&gt;
:84 3&lt;br /&gt;
==Explicație==&lt;br /&gt;
Numerele &#039;&#039;&#039;30 84 42&#039;&#039;&#039; au câte &#039;&#039;&#039;3&#039;&#039;&#039; divizori primi, și nu există printre numerele date numere cu mai mulți divizori primi. Dintre acestea, cel mai mare este &#039;&#039;&#039;84&#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;
def nrdiv(x):&lt;br /&gt;
    d = 2&lt;br /&gt;
    cnt = 0&lt;br /&gt;
    while x &amp;gt; 1:&lt;br /&gt;
        p = 0&lt;br /&gt;
        while x % d == 0:&lt;br /&gt;
            p += 1&lt;br /&gt;
            x //= d&lt;br /&gt;
        if p &amp;gt; 0:&lt;br /&gt;
            cnt += 1&lt;br /&gt;
        d += 1&lt;br /&gt;
        if d * d &amp;gt; x:&lt;br /&gt;
            d = x&lt;br /&gt;
    return cnt&lt;br /&gt;
&lt;br /&gt;
def validare_date(numar):&lt;br /&gt;
    while True:&lt;br /&gt;
        try:&lt;br /&gt;
            n = int(input(f&amp;quot;Introduceți {numar} număr: &amp;quot;))&lt;br /&gt;
            if n &amp;lt;= 0:&lt;br /&gt;
                raise ValueError(&amp;quot;Numărul trebuie să fie pozitiv.&amp;quot;)&lt;br /&gt;
            return n&lt;br /&gt;
        except ValueError as e:&lt;br /&gt;
            print(f&amp;quot;Input invalid: {e}&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    a = validare_date(&amp;quot;primul&amp;quot;)&lt;br /&gt;
    nmax = a&lt;br /&gt;
    max_div = nrdiv(a)&lt;br /&gt;
    while True:&lt;br /&gt;
        b = validare_date(&amp;quot;următorul&amp;quot;)&lt;br /&gt;
        if a == b:&lt;br /&gt;
            break&lt;br /&gt;
        div_b = nrdiv(b)&lt;br /&gt;
        if div_b &amp;gt; max_div:&lt;br /&gt;
            max_div = div_b&lt;br /&gt;
            nmax = b&lt;br /&gt;
        elif div_b == max_div and b &amp;gt; nmax:&lt;br /&gt;
            nmax = b&lt;br /&gt;
        a = b&lt;br /&gt;
    print(f&amp;quot;Numărul cu cei mai multi divizori este: {nmax} cu {max_div} divizori.&amp;quot;)&lt;br /&gt;
    print(&amp;quot;Datele de intrare corespund restricțiilor impuse.&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Explicație rezolvare==&lt;br /&gt;
Pentru a rezolva problema, trebuie să parcurgem secvența dată și să numărăm divizorii fiecărui element. Dacă numărul de divizori al unui element este mai mare decât cel al celorlalte elemente întâlnite până în acel moment, actualizăm numărul maxim de divizori și numărul corespunzător. Dacă numărul de divizori al elementului curent este egal cu numărul maxim de divizori întâlnit până acum, comparam elementul curent cu cel mai mare număr găsit până acum și actualizăm numărul corespunzător dacă este cazul. Pentru a număra divizorii unui număr, parcurgem toate numerele mai mici sau egale cu rădăcina pătrată a numărului respectiv și verificăm dacă sunt divizori sau nu. Pentru a gestiona citirea datelor de intrare, folosim o funcție de validare a datelor care verifică dacă valorile introduse sunt numere întregi pozitive.&lt;/div&gt;</summary>
		<author><name>Diana Butuza</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=1780_-_Fractie&amp;diff=6233</id>
		<title>1780 - Fractie</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=1780_-_Fractie&amp;diff=6233"/>
		<updated>2023-05-09T11:50:54Z</updated>

		<summary type="html">&lt;p&gt;Diana Butuza: /* Cerinţa */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cerinţa ==&lt;br /&gt;
Se dau două numere naturale &#039;&#039;&#039;n&#039;&#039;&#039; și &#039;&#039;&#039;m&#039;&#039;&#039;, &#039;&#039;&#039;m&#039;&#039;&#039; fiind prim. Să se afle cel mai mare număr natural &#039;&#039;&#039;x&#039;&#039;&#039;, astfel încât numărul &#039;&#039;&#039;n!/mx&#039;&#039;&#039; să fie natural.&lt;br /&gt;
&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Programul citește de la tastatură numerele &#039;&#039;&#039;n&#039;&#039;&#039; si &#039;&#039;&#039;m&#039;&#039;&#039;.&lt;br /&gt;
== Date de ieşire ==&lt;br /&gt;
Programul va afișa pe ecran numarul &#039;&#039;&#039;x&#039;&#039;&#039;.&lt;br /&gt;
== Restricții și precizări ==&lt;br /&gt;
*&#039;&#039;&#039;2 ≤ m ≤ n ≤ 10000&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;m&#039;&#039;&#039; este prim.&lt;br /&gt;
== Exemplu ==&lt;br /&gt;
; Intrare&lt;br /&gt;
:5 5&lt;br /&gt;
; Ieșire&lt;br /&gt;
:1&lt;br /&gt;
==Explicație==&lt;br /&gt;
&#039;&#039;&#039;5! = 120. 60 = 5 * 2 * 2 * 2 * 3&#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, m):&lt;br /&gt;
    # Verifică dacă n și m sunt numere întregi pozitive&lt;br /&gt;
    if isinstance(n, int) and isinstance(m, int) and n &amp;gt; 0 and m &amp;gt; 0:&lt;br /&gt;
        return True&lt;br /&gt;
    else:&lt;br /&gt;
        return False&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    # Citește datele de intrare de la utilizator&lt;br /&gt;
    n, m = map(int, input().split())&lt;br /&gt;
&lt;br /&gt;
    # Validează datele de intrare&lt;br /&gt;
    if validare_date(n, m):&lt;br /&gt;
        # Efectuează aceeași calculație ca în codul original&lt;br /&gt;
        p = 0&lt;br /&gt;
        for i in range(1, n+1):&lt;br /&gt;
            aux = i&lt;br /&gt;
            if aux % m == 0:&lt;br /&gt;
                while aux % m == 0:&lt;br /&gt;
                    p += 1&lt;br /&gt;
                    aux = aux // m&lt;br /&gt;
        print(p)&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;/div&gt;</summary>
		<author><name>Diana Butuza</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=0435_-_Factori_Primi&amp;diff=6231</id>
		<title>0435 - Factori Primi</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=0435_-_Factori_Primi&amp;diff=6231"/>
		<updated>2023-05-08T15:10:17Z</updated>

		<summary type="html">&lt;p&gt;Diana Butuza: /* Rezolvare */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cerinţa ==&lt;br /&gt;
Se dau două numere naturale nenule. Să se verifice dacă cele două numere au exact aceiași factor primi, indiferent de puterea acestora.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Programul citește de la tastatură numerele &#039;&#039;&#039;n&#039;&#039;&#039; și &#039;&#039;&#039;m&#039;&#039;&#039;.&lt;br /&gt;
== Date de ieşire ==&lt;br /&gt;
Programul afișează pe ecran mesajul &#039;&#039;&#039;DA&#039;&#039;&#039;, dacă cele două numere au exact aceiași factori primi, respectiv &#039;&#039;&#039;NU&#039;&#039;&#039; în caz contrar.&lt;br /&gt;
== Restricții și precizări ==&lt;br /&gt;
*cele două numere citite vor fi mai mici decât 2*30&lt;br /&gt;
== Exemplu ==&lt;br /&gt;
; Intrare&lt;br /&gt;
:72 48&lt;br /&gt;
; Ieșire&lt;br /&gt;
:DA&lt;br /&gt;
==Explicație==&lt;br /&gt;
&#039;&#039;&#039;72&#039;&#039;&#039; și &#039;&#039;&#039;48&#039;&#039;&#039; au exact aceiași factori primi: &#039;&#039;&#039;2 3&#039;&#039;&#039;.&lt;br /&gt;
==Exemplu 2==&lt;br /&gt;
; Intrare&lt;br /&gt;
:72 30&lt;br /&gt;
; Ieșire&lt;br /&gt;
:NU&lt;br /&gt;
==Explicație==&lt;br /&gt;
Factorii primi ai lui &#039;&#039;&#039;72&#039;&#039;&#039; sunt &#039;&#039;&#039;2 3&#039;&#039;&#039;, iar factorii primi ai lui &#039;&#039;&#039;30&#039;&#039;&#039; sunt &#039;&#039;&#039;2 3 5&#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, m):&lt;br /&gt;
    if n &amp;lt;= 0 or m &amp;lt;= 0:&lt;br /&gt;
        print(&amp;quot;Datele de intrare nu corespund restricțiilor impuse.&amp;quot;)&lt;br /&gt;
        return False&lt;br /&gt;
    else:&lt;br /&gt;
        print(&amp;quot;Datele de intrare corespund restricțiilor impuse.&amp;quot;)&lt;br /&gt;
        return True&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    n = int(input(&amp;quot;Introduceți primul număr: &amp;quot;))&lt;br /&gt;
    m = int(input(&amp;quot;Introduceți al doilea număr: &amp;quot;))&lt;br /&gt;
&lt;br /&gt;
    if validare_date(n, m):&lt;br /&gt;
        aceeasi_factori = True&lt;br /&gt;
        d = 2&lt;br /&gt;
        while n &amp;gt; 1:&lt;br /&gt;
            if n % d == 0:&lt;br /&gt;
                if m % d != 0:&lt;br /&gt;
                    aceeasi_factori = False&lt;br /&gt;
                while n % d == 0:&lt;br /&gt;
                    n /= d&lt;br /&gt;
                while m % d == 0:&lt;br /&gt;
                    m /= d&lt;br /&gt;
            d += 1&lt;br /&gt;
            if d * d &amp;gt; n:&lt;br /&gt;
                d = n&lt;br /&gt;
        if aceeasi_factori and m == 1:&lt;br /&gt;
            print(&amp;quot;DA&amp;quot;)&lt;br /&gt;
        else:&lt;br /&gt;
            print(&amp;quot;NU&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Explicație rezolvare==&lt;br /&gt;
În această problemă se verifică dacă două numere naturale au aceeași factori primi. Codul primește cele două numere de la tastatură, apoi verifică dacă datele de intrare sunt valide (ambele numere trebuie să fie pozitive). Dacă datele sunt valide, codul caută factorii primi ai primului număr și verifică dacă aceeași factori apar și în al doilea număr. Dacă toți factorii primi ai primului număr apar și în al doilea număr, iar al doilea număr nu are alți factori primi, atunci cele două numere au aceeași factori primi. La sfârșit, codul afișează dacă cele două numere au aceeași factori primi sau nu.&lt;/div&gt;</summary>
		<author><name>Diana Butuza</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=0435_-_Factori_Primi&amp;diff=6230</id>
		<title>0435 - Factori Primi</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=0435_-_Factori_Primi&amp;diff=6230"/>
		<updated>2023-05-08T15:09:44Z</updated>

		<summary type="html">&lt;p&gt;Diana Butuza: /* Explicație rezolvare */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cerinţa ==&lt;br /&gt;
Se dau două numere naturale nenule. Să se verifice dacă cele două numere au exact aceiași factor primi, indiferent de puterea acestora.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Programul citește de la tastatură numerele &#039;&#039;&#039;n&#039;&#039;&#039; și &#039;&#039;&#039;m&#039;&#039;&#039;.&lt;br /&gt;
== Date de ieşire ==&lt;br /&gt;
Programul afișează pe ecran mesajul &#039;&#039;&#039;DA&#039;&#039;&#039;, dacă cele două numere au exact aceiași factori primi, respectiv &#039;&#039;&#039;NU&#039;&#039;&#039; în caz contrar.&lt;br /&gt;
== Restricții și precizări ==&lt;br /&gt;
*cele două numere citite vor fi mai mici decât 2*30&lt;br /&gt;
== Exemplu ==&lt;br /&gt;
; Intrare&lt;br /&gt;
:72 48&lt;br /&gt;
; Ieșire&lt;br /&gt;
:DA&lt;br /&gt;
==Explicație==&lt;br /&gt;
&#039;&#039;&#039;72&#039;&#039;&#039; și &#039;&#039;&#039;48&#039;&#039;&#039; au exact aceiași factori primi: &#039;&#039;&#039;2 3&#039;&#039;&#039;.&lt;br /&gt;
==Exemplu 2==&lt;br /&gt;
; Intrare&lt;br /&gt;
:72 30&lt;br /&gt;
; Ieșire&lt;br /&gt;
:NU&lt;br /&gt;
==Explicație==&lt;br /&gt;
Factorii primi ai lui &#039;&#039;&#039;72&#039;&#039;&#039; sunt &#039;&#039;&#039;2 3&#039;&#039;&#039;, iar factorii primi ai lui &#039;&#039;&#039;30&#039;&#039;&#039; sunt &#039;&#039;&#039;2 3 5&#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, m):&lt;br /&gt;
    if n &amp;lt;= 0 or m &amp;lt;= 0:&lt;br /&gt;
        print(&amp;quot;Datele de intrare nu corespund restricțiilor impuse.&amp;quot;)&lt;br /&gt;
        return False&lt;br /&gt;
    else:&lt;br /&gt;
        print(&amp;quot;Datele de intrare corespund restricțiilor impuse.&amp;quot;)&lt;br /&gt;
        return True&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    n = int(input(&amp;quot;Introduceți primul număr: &amp;quot;))&lt;br /&gt;
    m = int(input(&amp;quot;Introduceți al doilea număr: &amp;quot;))&lt;br /&gt;
&lt;br /&gt;
    if validare_date(n, m):&lt;br /&gt;
        aceiasi_factori = True&lt;br /&gt;
        d = 2&lt;br /&gt;
        while n &amp;gt; 1:&lt;br /&gt;
            if n % d == 0:&lt;br /&gt;
                if m % d != 0:&lt;br /&gt;
                    aceiasi_factori = False&lt;br /&gt;
                while n % d == 0:&lt;br /&gt;
                    n /= d&lt;br /&gt;
                while m % d == 0:&lt;br /&gt;
                    m /= d&lt;br /&gt;
            d += 1&lt;br /&gt;
            if d * d &amp;gt; n:&lt;br /&gt;
                d = n&lt;br /&gt;
        if aceiasi_factori and m == 1:&lt;br /&gt;
            print(&amp;quot;DA&amp;quot;)&lt;br /&gt;
        else:&lt;br /&gt;
            print(&amp;quot;NU&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
==Explicație rezolvare==&lt;br /&gt;
În această problemă se verifică dacă două numere naturale au aceeași factori primi. Codul primește cele două numere de la tastatură, apoi verifică dacă datele de intrare sunt valide (ambele numere trebuie să fie pozitive). Dacă datele sunt valide, codul caută factorii primi ai primului număr și verifică dacă aceeași factori apar și în al doilea număr. Dacă toți factorii primi ai primului număr apar și în al doilea număr, iar al doilea număr nu are alți factori primi, atunci cele două numere au aceeași factori primi. La sfârșit, codul afișează dacă cele două numere au aceeași factori primi sau nu.&lt;/div&gt;</summary>
		<author><name>Diana Butuza</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=2913_-_Proth_Number&amp;diff=6229</id>
		<title>2913 - Proth Number</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=2913_-_Proth_Number&amp;diff=6229"/>
		<updated>2023-05-08T14:27:22Z</updated>

		<summary type="html">&lt;p&gt;Diana Butuza: /* Exemplu */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cerinţa ==&lt;br /&gt;
Un număr natural n se numește număr Proth dacă este de forma &#039;&#039;&#039;n=k*2p+1&#039;&#039;&#039;, unde &#039;&#039;&#039;k&#039;&#039;&#039; și &#039;&#039;&#039;p&#039;&#039;&#039; sunt numere naturale, &#039;&#039;&#039;k&#039;&#039;&#039; este impar și &#039;&#039;&#039;k &amp;lt; 2p&#039;&#039;&#039;.&lt;br /&gt;
Să se scrie un program care citește un număr natural și verifică dacă este număr Proth.&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 mesajul &#039;&#039;&#039;DA&#039;&#039;&#039; dacă &#039;&#039;&#039;n&#039;&#039;&#039; este număr Proth, 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;1 ≤ n ≤ 1.000.000.000&#039;&#039;&#039;&lt;br /&gt;
== Exemplu ==&lt;br /&gt;
; Intrare&lt;br /&gt;
: 25&lt;br /&gt;
; Ieșire&lt;br /&gt;
: 25 este numar Proth.&lt;br /&gt;
&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
def validare_date(n):&lt;br /&gt;
    if not 1 &amp;lt;= n &amp;lt;= 1000000000:&lt;br /&gt;
        print(&amp;quot;Numarul trebuie sa fie intre 1 si 1000000000.&amp;quot;)&lt;br /&gt;
        return False&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
def este_numar_proth(n):&lt;br /&gt;
    if not validare_date(n):&lt;br /&gt;
        return False&lt;br /&gt;
&lt;br /&gt;
    k = 1&lt;br /&gt;
    while k &amp;lt; n:&lt;br /&gt;
        p = (n - 1) // (2**k)&lt;br /&gt;
        if 2**k * p + 1 == n and p % 2 == 1:&lt;br /&gt;
            return True&lt;br /&gt;
        k += 1&lt;br /&gt;
&lt;br /&gt;
    return False&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    n = int(input(&amp;quot;Introduceti numarul n: &amp;quot;))&lt;br /&gt;
    if validare_date(n):&lt;br /&gt;
        print(&amp;quot;\nDatele de intrare corespund restricțiilor impuse.\n&amp;quot;)&lt;br /&gt;
        if este_numar_proth(n):&lt;br /&gt;
            print(f&amp;quot;{n} este numar Proth.&amp;quot;)&lt;br /&gt;
        else:&lt;br /&gt;
            print(f&amp;quot;{n} nu este numar Proth.&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;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
==Explicație rezolvare==&lt;br /&gt;
Acest cod este un program scris în Python care verifică dacă un număr dat este un număr Proth. Programul definește două funcții, una care validează numărul dat și alta care verifică dacă numărul este un număr Proth. Programul verifică dacă numărul dat este valid, iar dacă este, afișează un mesaj de confirmare și verifică dacă numărul este un număr Proth. Dacă numărul este un număr Proth, programul afișează un mesaj care confirmă acest lucru, altfel afișează un mesaj care indică faptul că numărul nu este un număr Proth. Dacă numărul dat nu este valid, programul afișează un mesaj care indică acest lucru.&lt;/div&gt;</summary>
		<author><name>Diana Butuza</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=2324_-_Prim_002&amp;diff=6228</id>
		<title>2324 - Prim 002</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=2324_-_Prim_002&amp;diff=6228"/>
		<updated>2023-05-08T14:21:04Z</updated>

		<summary type="html">&lt;p&gt;Diana Butuza: /* Explicație rezolvare */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cerinţa ==&lt;br /&gt;
Anul &#039;&#039;&#039;2017&#039;&#039;&#039; tocmai s-a încheiat, iar nostalgicii suferă în tăcere deoarece acesta era număr prim. Dorel, un personaj întreprinzător, s-a gândit să afle pentru un număr natural n dat, care este cel mai mare divizor prim al acestuia.&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 cel mai mare divizor prim al lui &#039;&#039;&#039;n&#039;&#039;&#039;.&lt;br /&gt;
== Restricții și precizări ==&lt;br /&gt;
*&#039;&#039;&#039;1 ≤ n ≤ 10^14&#039;&#039;&#039;&lt;br /&gt;
== Exemplu ==&lt;br /&gt;
; Intrare&lt;br /&gt;
: 2018&lt;br /&gt;
; Ieșire&lt;br /&gt;
:1009&lt;br /&gt;
== Explicație == &lt;br /&gt;
Divizorii lui &#039;&#039;&#039;2018&#039;&#039;&#039; sunt &#039;&#039;&#039;1, 2, 1009, 2018,&#039;&#039;&#039; iar cel mai mare divizor prim este &#039;&#039;&#039;1009&#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;
    &amp;quot;&amp;quot;&amp;quot;Verifică dacă n se încadrează în intervalul [1, 10^14].&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    return 1 &amp;lt;= n &amp;lt;= 10**14&lt;br /&gt;
&lt;br /&gt;
def este_prim(n):&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;Verifică dacă n este un număr prim.&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    if n &amp;lt; 2:&lt;br /&gt;
        return False&lt;br /&gt;
    for i in range(2, int(n**0.5)+1):&lt;br /&gt;
        if n % i == 0:&lt;br /&gt;
            return False&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    n = int(input(&amp;quot;Introduceți numărul n: &amp;quot;))&lt;br /&gt;
    if not validare_date(n):&lt;br /&gt;
        print(&amp;quot;Numărul introdus nu se încadrează în intervalul [1, 10^14].&amp;quot;)&lt;br /&gt;
        exit()&lt;br /&gt;
        &lt;br /&gt;
    if este_prim(n):&lt;br /&gt;
        print(n, &amp;quot;este un număr prim.&amp;quot;)&lt;br /&gt;
    else:&lt;br /&gt;
        d = 2&lt;br /&gt;
        max_div_prim = 1&lt;br /&gt;
        while n &amp;gt; 1:&lt;br /&gt;
            if n % d == 0:&lt;br /&gt;
                n //= d&lt;br /&gt;
                if este_prim(d):&lt;br /&gt;
                    max_div_prim = d&lt;br /&gt;
            else:&lt;br /&gt;
                d += 1&lt;br /&gt;
        print(&amp;quot;Cel mai mare divizor prim al lui&amp;quot;, n, &amp;quot;este&amp;quot;, max_div_prim)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
==Explicație rezolvare==&lt;br /&gt;
Înainte de a începe căutarea divizorului prim, se verifică dacă numărul dat se încadrează în intervalul [1, 10^14], utilizând funcția &#039;&#039;&#039;validare_date&#039;&#039;&#039;. Dacă numărul introdus nu se încadrează în acest interval, programul afișează un mesaj de eroare și se oprește cu ajutorul funcției &#039;&#039;&#039;exit()&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
În caz contrar, se verifică dacă numărul este prim utilizând funcția &#039;&#039;&#039;este_prim&#039;&#039;&#039;. Dacă numărul este prim, se afișează un mesaj corespunzător.&lt;br /&gt;
&lt;br /&gt;
Dacă numărul nu este prim, se caută cel mai mare divizor prim al numărului prin intermediul unui buclă while. Începând cu divizorul 2, se verifică dacă numărul dat se divide cu acesta. Dacă da, se împarte numărul la acest divizor și se verifică dacă divizorul este prim. Dacă da, divizorul este reținut ca și cel mai mare divizor prim găsit până în acel moment.&lt;br /&gt;
&lt;br /&gt;
În caz contrar, se trece la următorul divizor. Procesul se repetă până când numărul dat ajunge la 1. La final, programul afișează cel mai mare divizor prim găsit, sau 1 dacă nu a fost găsit niciun divizor prim.&lt;/div&gt;</summary>
		<author><name>Diana Butuza</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=4295_-_Factor_Exp_Max&amp;diff=6227</id>
		<title>4295 - Factor Exp Max</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=4295_-_Factor_Exp_Max&amp;diff=6227"/>
		<updated>2023-05-08T14:10:20Z</updated>

		<summary type="html">&lt;p&gt;Diana Butuza: /* Explicație rezolvare */&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;. Să se determine factorul prim din descompunerea lui &#039;&#039;&#039;n&#039;&#039;&#039; care apare la puterea cea mai mare. Dacă există mai mulți factori care apar la putere maximă, se va afișa cel mai mare dintre ei.&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 factorul prim cerut.&lt;br /&gt;
== Restricții și precizări ==&lt;br /&gt;
*&#039;&#039;&#039;n&#039;&#039;&#039; este un număr natural strict mai mare decât &#039;&#039;&#039;1&#039;&#039;&#039; și are cel mult &#039;&#039;&#039;12&#039;&#039;&#039; cifre (este de tip &#039;&#039;&#039;long long&#039;&#039;&#039;)&lt;br /&gt;
== Exemplu ==&lt;br /&gt;
; Intrare&lt;br /&gt;
: 7623&lt;br /&gt;
; Ieșire&lt;br /&gt;
: 11&lt;br /&gt;
== Explicație == &lt;br /&gt;
Descompunerea lui &#039;&#039;&#039;n=7623&#039;&#039;&#039; în factori este &#039;&#039;&#039;32 * 71 * 112&#039;&#039;&#039;. Sunt doi factori de exponent maxim &#039;&#039;&#039;2&#039;&#039;&#039;, din care cel mai mare este &#039;&#039;&#039;11&#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;
def validare_date(n):&lt;br /&gt;
    try:&lt;br /&gt;
        n = int(n)&lt;br /&gt;
        if n &amp;gt; 1 and n &amp;lt; 10**12:&lt;br /&gt;
            return n&lt;br /&gt;
        else:&lt;br /&gt;
            print(&amp;quot;Numarul trebuie sa fie un numar natural mai mare decat 1 si mai mic decat 10^12.&amp;quot;)&lt;br /&gt;
            return None&lt;br /&gt;
    except ValueError:&lt;br /&gt;
        print(&amp;quot;Nu ati introdus un numar natural valid.&amp;quot;)&lt;br /&gt;
        return None&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    n = input(&amp;quot;Introduceti numarul n: &amp;quot;)&lt;br /&gt;
    n = validare_date(n)&lt;br /&gt;
&lt;br /&gt;
    if n:&lt;br /&gt;
        i = 2&lt;br /&gt;
        factori = {}&lt;br /&gt;
        while i &amp;lt;= math.sqrt(n):&lt;br /&gt;
            p = 0&lt;br /&gt;
            while n % i == 0:&lt;br /&gt;
                p += 1&lt;br /&gt;
                n //= i&lt;br /&gt;
            if p &amp;gt; 0:&lt;br /&gt;
                factori[i] = p&lt;br /&gt;
            i += 1&lt;br /&gt;
        if n &amp;gt; 1:&lt;br /&gt;
            factori[n] = 1&lt;br /&gt;
&lt;br /&gt;
        max_putere = max(factori.values())&lt;br /&gt;
        factor_max_putere = max([f for f in factori.keys() if factori[f] == max_putere])&lt;br /&gt;
        print(factor_max_putere)&lt;br /&gt;
&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;
  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
==Explicație rezolvare==&lt;br /&gt;
Am implementat o soluție în Python pentru a găsi cel mai mare factor prim al unui număr natural dat. Am folosit o funcție de validare a datelor de intrare pentru a verifica dacă numărul dat este un număr natural între 2 și 10^12. Am parcurs apoi factorii primi ai numărului dat și am folosit un dicționar pentru a stoca puterile fiecărui factor prim. Am aflat factorul prim cu cea mai mare putere și l-am afișat. Dacă numărul de intrare nu a trecut validarea, am afișat un mesaj corespunzător.&lt;/div&gt;</summary>
		<author><name>Diana Butuza</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=0967_-_Cifre_8&amp;diff=6226</id>
		<title>0967 - Cifre 8</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=0967_-_Cifre_8&amp;diff=6226"/>
		<updated>2023-05-08T13:51:23Z</updated>

		<summary type="html">&lt;p&gt;Diana Butuza: /* Rezolvare */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cerinţa ==&lt;br /&gt;
Scrieţi un program care să citească numerele &#039;&#039;&#039;c&#039;&#039;&#039;, &#039;&#039;&#039;n&#039;&#039;&#039; şi şirul &#039;&#039;&#039;s&#039;&#039;&#039;, şi să determine:&lt;br /&gt;
a) suma tuturor numerelor din şirul &#039;&#039;&#039;s&#039;&#039;&#039; care au proprietatea că sunt numere prime&lt;br /&gt;
b) numărul de apariţii ale cifrei &#039;&#039;&#039;c&#039;&#039;&#039; în scrierea zecimală a tuturor numerelor din şirul &#039;&#039;&#039;s&#039;&#039;&#039;&lt;br /&gt;
c) numărul minim de numere din şirul &#039;&#039;&#039;v&#039;&#039;&#039;&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Programul citește de la tastatură numerele &#039;&#039;&#039;n c&#039;&#039;&#039;, iar apoi cele &#039;&#039;&#039;n&#039;&#039;&#039; elemente ale șirului &#039;&#039;&#039;s&#039;&#039;&#039;.&lt;br /&gt;
== Date de ieşire ==&lt;br /&gt;
Programul va afișa pe ecran trei numere, câte unul pe o linie, reprezentând în ordine:&lt;br /&gt;
*suma tuturor numerelor din şirul &#039;&#039;&#039;s&#039;&#039;&#039; care au proprietatea că sunt numere prime&lt;br /&gt;
*numărul de apariţii ale cifrei &#039;&#039;&#039;c&#039;&#039;&#039; în scrierea zecimală a tuturor numerelor din şirul &#039;&#039;&#039;s&#039;&#039;&#039;&lt;br /&gt;
*numărul minim de valori din şirul &#039;&#039;&#039;v&#039;&#039;&#039;&lt;br /&gt;
== Restricții și precizări ==&lt;br /&gt;
*Numerele &#039;&#039;&#039;n&#039;&#039;&#039; şi &#039;&#039;&#039;c&#039;&#039;&#039; sunt naturale&lt;br /&gt;
*&#039;&#039;&#039;2 ≤ n ≤ 10000&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;0 ≤ c ≤ 9&#039;&#039;&#039;&lt;br /&gt;
*toate cele &#039;&#039;&#039;n&#039;&#039;&#039; numere naturale din şirul &#039;&#039;&#039;s&#039;&#039;&#039; sunt mai mici sau egale cu &#039;&#039;&#039;30000&#039;&#039;&#039;&lt;br /&gt;
*pentru rezolvarea cerinţei a) se acordă &#039;&#039;&#039;40%&#039;&#039;&#039; din punctaj, pentru cerinţa b) &#039;&#039;&#039;20%&#039;&#039;&#039; din punctaj şi pentru cerinţa c) &#039;&#039;&#039;40%&#039;&#039;&#039; din punctaj.&lt;br /&gt;
== Exemplu ==&lt;br /&gt;
; Intrare&lt;br /&gt;
: 10 9&lt;br /&gt;
: 1943 31 19 1199 34 941 7971 131 223 6&lt;br /&gt;
; Ieșire&lt;br /&gt;
: 1345&lt;br /&gt;
: 6 &lt;br /&gt;
: 4&lt;br /&gt;
&lt;br /&gt;
== Explicație == &lt;br /&gt;
a) numerele prime din şirul &#039;&#039;&#039;s&#039;&#039;&#039; sunt: &#039;&#039;&#039;31, 19, 941, 131 şi 223&#039;&#039;&#039;. Suma acestora este &#039;&#039;&#039;1345&#039;&#039;&#039;.&lt;br /&gt;
b) cifra &#039;&#039;&#039;c=9&#039;&#039;&#039; apare de &#039;&#039;&#039;6&#039;&#039;&#039; ori în scrierea numerelor din &#039;&#039;&#039;s&#039;&#039;&#039;.&lt;br /&gt;
c) cifrele impare ale unităţilor numerelor din &#039;&#039;&#039;s&#039;&#039;&#039; sunt, în ordine crescătoare: &#039;&#039;&#039;1, 1, 1, 1, 3, 3, 9, 9&#039;&#039;&#039;. Se pot forma minimum &#039;&#039;&#039;4&#039;&#039;&#039; numere cu toate cifrele identice: &#039;&#039;&#039;11, 11, 33, 99&#039;&#039;&#039;, fiecare număr din noul şir având numărul maxim posibil de cifre, adică &#039;&#039;&#039;2&#039;&#039;&#039;. Numărul minim de termeni ai şirului este egal cu &#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 este_prim(numar):&lt;br /&gt;
    if numar &amp;lt; 2:&lt;br /&gt;
        return False&lt;br /&gt;
    for i in range(2, int(numar ** 0.5) + 1):&lt;br /&gt;
        if numar % i == 0:&lt;br /&gt;
            return False&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
def aparitii_cifra(numar, cifra):&lt;br /&gt;
    aparitii = 0&lt;br /&gt;
    while numar &amp;gt; 0:&lt;br /&gt;
        if numar % 10 == cifra:&lt;br /&gt;
            aparitii += 1&lt;br /&gt;
        numar //= 10&lt;br /&gt;
    return aparitii&lt;br /&gt;
&lt;br /&gt;
def minim_numere(sir):&lt;br /&gt;
    frecventa = {}&lt;br /&gt;
    for numar in sir:&lt;br /&gt;
        if numar not in frecventa:&lt;br /&gt;
            frecventa[numar] = 4&lt;br /&gt;
        else:&lt;br /&gt;
            frecventa[numar] += 1&lt;br /&gt;
    return min(frecventa.values())&lt;br /&gt;
&lt;br /&gt;
def validare_date(n, c, s):&lt;br /&gt;
    if not (2 &amp;lt;= n &amp;lt;= 10000):&lt;br /&gt;
        return False&lt;br /&gt;
    if not (0 &amp;lt;= c &amp;lt;= 9):&lt;br /&gt;
        return False&lt;br /&gt;
    if not all(1 &amp;lt;= x &amp;lt;= 30000 for x in s):&lt;br /&gt;
        return False&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    n, c = map(int, input().split())&lt;br /&gt;
    s = list(map(int, input().split()))&lt;br /&gt;
&lt;br /&gt;
    if not validare_date(n, c, s):&lt;br /&gt;
        print(&amp;quot;Datele de intrare nu corespund restricțiilor impuse.&amp;quot;)&lt;br /&gt;
    else:&lt;br /&gt;
        suma_prime = 0&lt;br /&gt;
        aparitii_cifra_c = 0&lt;br /&gt;
&lt;br /&gt;
        for numar in s:&lt;br /&gt;
            if este_prim(numar):&lt;br /&gt;
                suma_prime += numar&lt;br /&gt;
            aparitii_cifra_c += aparitii_cifra(numar, c)&lt;br /&gt;
&lt;br /&gt;
        nr_minim_numere = minim_numere(s)&lt;br /&gt;
&lt;br /&gt;
        print(suma_prime)&lt;br /&gt;
        print(aparitii_cifra_c)&lt;br /&gt;
        print(nr_minim_numere)&lt;br /&gt;
&lt;br /&gt;
        print(&amp;quot;Datele de intrare corespund restricțiilor impuse.&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Explicație rezolvare==&lt;br /&gt;
Acesta este un program care primește o listă de numere și o cifră, efectuează anumite calcule pe baza acestor date și afișează rezultatele. Programul verifică dacă datele de intrare sunt valide și afișează un mesaj corespunzător.&lt;/div&gt;</summary>
		<author><name>Diana Butuza</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=1316_-_Prim_Aproape_Prim_-_Patrat_Prim_-_Compus&amp;diff=6225</id>
		<title>1316 - Prim Aproape Prim - Patrat Prim - Compus</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=1316_-_Prim_Aproape_Prim_-_Patrat_Prim_-_Compus&amp;diff=6225"/>
		<updated>2023-05-08T13:35:41Z</updated>

		<summary type="html">&lt;p&gt;Diana Butuza: /* Explicație rezolvare */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cerinţa ==&lt;br /&gt;
*Un număr natural nenul este &#039;&#039;&#039;prim&#039;&#039;&#039;, dacă are exact doi divizori (ex. &#039;&#039;&#039;7&#039;&#039;&#039;).&lt;br /&gt;
*Un număr natural nenul se va numi &#039;&#039;&#039;pătrat prim&#039;&#039;&#039;, dacă este pătratul unui număr prim (ex. &#039;&#039;&#039;49 = 7 * 7&#039;&#039;&#039;).&lt;br /&gt;
*Un număr natural nenul se va numi &#039;&#039;&#039;aproape prim&#039;&#039;&#039;, dacă este produsul a două numere prime distincte (ex. &#039;&#039;&#039;10 = 2 * 5&#039;&#039;&#039;).&lt;br /&gt;
*Un număr natural nenul ce nu se încadrează în niciuna din cazurile de mai sus, se numeşte &#039;&#039;&#039;compus&#039;&#039;&#039; (ex. &#039;&#039;&#039;8=2*2*2, 100=2*2*5*5&#039;&#039;&#039;).&lt;br /&gt;
Se citeşte un număr natural &#039;&#039;&#039;n&#039;&#039;&#039;. Să se identifice din ce categorie de mai sus face parte.&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 unul dintre mesajele: &#039;&#039;&#039;prim&#039;&#039;&#039;, &#039;&#039;&#039;aproape prim&#039;&#039;&#039;, &#039;&#039;&#039;patrat prim&#039;&#039;&#039; sau &#039;&#039;&#039;compus&#039;&#039;&#039;.&lt;br /&gt;
== Restricții și precizări ==&lt;br /&gt;
* &#039;&#039;&#039;1 &amp;lt; n ≤ 2.000.000.000&#039;&#039;&#039;&lt;br /&gt;
== Exemplu ==&lt;br /&gt;
; Intrare&lt;br /&gt;
: 20&lt;br /&gt;
; Ieșire&lt;br /&gt;
: compus&lt;br /&gt;
== Explicație == &lt;br /&gt;
Numărul &#039;&#039;&#039;20=2*2*5&#039;&#039;&#039;, deci este număr compus.&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;
def prim(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;
    if cnt == 2:&lt;br /&gt;
        return 1&lt;br /&gt;
    elif cnt == 4:&lt;br /&gt;
        return 2&lt;br /&gt;
    else:&lt;br /&gt;
        return 0&lt;br /&gt;
&lt;br /&gt;
def validare_date(prompt):&lt;br /&gt;
    while True:&lt;br /&gt;
        try:&lt;br /&gt;
            value = int(input(prompt))&lt;br /&gt;
            if value &amp;lt;= 0:&lt;br /&gt;
                print(&amp;quot;Introduceti un numar intreg pozitiv.&amp;quot;)&lt;br /&gt;
            else:&lt;br /&gt;
                return value&lt;br /&gt;
        except ValueError:&lt;br /&gt;
            print(&amp;quot;Introduceti un numar intreg pozitiv.&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    n = validare_date(&amp;quot;Introduceti un numar intreg pozitiv: &amp;quot;)&lt;br /&gt;
    i = int(math.sqrt(n))&lt;br /&gt;
    if prim(n) == 1:&lt;br /&gt;
        print(&amp;quot;prim&amp;quot;)&lt;br /&gt;
    elif prim(n) == 2:&lt;br /&gt;
        print(&amp;quot;aproape prim&amp;quot;)&lt;br /&gt;
    elif i * i == n and prim(i) == 1:&lt;br /&gt;
        print(&amp;quot;patrat prim&amp;quot;)&lt;br /&gt;
    else:&lt;br /&gt;
        print(&amp;quot;compus&amp;quot;)&lt;br /&gt;
    print(&amp;quot;Datele de intrare corespund restrictiilor impuse.&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
==Explicație rezolvare==&lt;br /&gt;
Acest program determină dacă un număr dat este prim, aproape prim sau compus.&lt;br /&gt;
&lt;br /&gt;
Pentru a verifica dacă numărul este prim, se apelează funcția &#039;&#039;&#039;prim(n)&#039;&#039;&#039;, care primește ca argument numărul dat &#039;&#039;&#039;n&#039;&#039;&#039;. În interiorul funcției, se calculează numărul de divizori ai lui &#039;&#039;&#039;n&#039;&#039;&#039; prin parcurgerea tuturor numerelor întregi până la radicalul pătrat al lui &#039;&#039;&#039;n&#039;&#039;&#039;. Dacă numărul de divizori ai lui &#039;&#039;&#039;n&#039;&#039;&#039; este 2, atunci &#039;&#039;&#039;n&#039;&#039;&#039; este un număr prim.&lt;br /&gt;
&lt;br /&gt;
Dacă numărul de divizori ai lui &#039;&#039;&#039;n&#039;&#039;&#039; este 4, atunci &#039;&#039;&#039;n&#039;&#039;&#039; este considerat aproape prim.&lt;br /&gt;
&lt;br /&gt;
Dacă &#039;&#039;&#039;n&#039;&#039;&#039; este un pătrat perfect și radicalul pătrat al lui &#039;&#039;&#039;n&#039;&#039;&#039; este prim, atunci &#039;&#039;&#039;n&#039;&#039;&#039; este considerat patrat prim.&lt;br /&gt;
&lt;br /&gt;
Dacă niciuna dintre condițiile de mai sus nu este îndeplinită, atunci &#039;&#039;&#039;n&#039;&#039;&#039; este considerat un număr compus.&lt;br /&gt;
&lt;br /&gt;
Funcția &#039;&#039;&#039;validare_date(prompt)&#039;&#039;&#039; este folosită pentru a valida input-ul primit de la utilizator. Această funcție cere introducerea unui număr întreg pozitiv și afișează un mesaj de eroare dacă input-ul nu este un număr întreg pozitiv.&lt;br /&gt;
&lt;br /&gt;
În cadrul programului principal, se citește input-ul utilizatorului folosind funcția &#039;&#039;&#039;validare_date(prompt)&#039;&#039;&#039; și se determină tipul de număr folosind funcția &#039;&#039;&#039;prim(n)&#039;&#039;&#039;. Programul afișează apoi tipul numărului și un mesaj care confirmă faptul că input-ul corespunde restricțiilor impuse.&lt;/div&gt;</summary>
		<author><name>Diana Butuza</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=0380_-_A_Prim_1&amp;diff=6224</id>
		<title>0380 - A Prim 1</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=0380_-_A_Prim_1&amp;diff=6224"/>
		<updated>2023-05-08T13:34:55Z</updated>

		<summary type="html">&lt;p&gt;Diana Butuza: /* Explicație rezolvare */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cerinţa ==&lt;br /&gt;
Se citește un număr natural și apoi &#039;&#039;&#039;n&#039;&#039;&#039; numere naturale. Să se determine câte dintre ele sunt aproape 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;, și apoi &#039;&#039;&#039;n&#039;&#039;&#039; numere naturale.&lt;br /&gt;
== Date de ieşire ==&lt;br /&gt;
Programul afișează pe ecran numărul &#039;&#039;&#039;C&#039;&#039;&#039;, reprezentând câte dintre numerele citite sunt aproape prime.&lt;br /&gt;
== Restricții și precizări ==&lt;br /&gt;
* &#039;&#039;&#039;1 ≤ n ≤ 100&#039;&#039;&#039;&lt;br /&gt;
*cele n numere citite sunt cuprinse între &#039;&#039;&#039;1&#039;&#039;&#039; și &#039;&#039;&#039;1.000.000.000&#039;&#039;&#039;&lt;br /&gt;
== Exemplu ==&lt;br /&gt;
; Intrare&lt;br /&gt;
: 6&lt;br /&gt;
35 55 12 6 25 50&lt;br /&gt;
; Ieșire&lt;br /&gt;
: 3&lt;br /&gt;
&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
def validare_date(n, arr):&lt;br /&gt;
    if not 1 &amp;lt;= n &amp;lt;= 10**5:&lt;br /&gt;
        return False&lt;br /&gt;
    for a in arr:&lt;br /&gt;
        if not 1 &amp;lt;= a &amp;lt;= 10**9:&lt;br /&gt;
            return False&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    n = int(input())&lt;br /&gt;
    arr = list(map(int, input().split()))&lt;br /&gt;
&lt;br /&gt;
    if validare_date(n, arr):&lt;br /&gt;
        print(&amp;quot;\nDatele de intrare corespund restrictiilor impuse.\n&amp;quot;)&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;
    C = 0&lt;br /&gt;
    for i in range(n):&lt;br /&gt;
        x = arr[i]&lt;br /&gt;
        d = 2&lt;br /&gt;
        cn = 1&lt;br /&gt;
        while x &amp;gt; 1:&lt;br /&gt;
            p = 0&lt;br /&gt;
            while x % d == 0:&lt;br /&gt;
                p += 1&lt;br /&gt;
                x //= d&lt;br /&gt;
            d += 1&lt;br /&gt;
            cn *= (p + 1)&lt;br /&gt;
            if d * d &amp;gt; x:&lt;br /&gt;
                d = x&lt;br /&gt;
        if cn == 4:&lt;br /&gt;
            C += 1&lt;br /&gt;
&lt;br /&gt;
    print(C)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
==Explicație rezolvare==&lt;br /&gt;
În acest program, se dă un număr întreg &#039;&#039;&#039;n&#039;&#039;&#039; și un șir de &#039;&#039;&#039;n&#039;&#039;&#039; numere întregi &#039;&#039;&#039;arr&#039;&#039;&#039;. Scopul programului este de a găsi numărul de numere din șirul &#039;&#039;&#039;arr&#039;&#039;&#039; care au exact patru divizori.&lt;br /&gt;
&lt;br /&gt;
Pentru a rezolva această problemă, se parcurge fiecare element din șirul &#039;&#039;&#039;arr&#039;&#039;&#039;. Pentru fiecare element &#039;&#039;&#039;x&#039;&#039;&#039; se calculează numărul de divizori folosind un algoritm care împarte numărul la toți divizorii săi, numărând fiecare divizor de câte ori apare. Dacă numărul total de divizori este patru, atunci elementul este adăugat la numărul total de numere cu patru divizori găsite până acum.&lt;br /&gt;
&lt;br /&gt;
Pentru a verifica dacă datele de intrare sunt valide, se folosește o funcție numită &#039;&#039;&#039;validare_date&#039;&#039;&#039; care verifică dacă numărul &#039;&#039;&#039;n&#039;&#039;&#039; și toate elementele din &#039;&#039;&#039;arr&#039;&#039;&#039; sunt în limitele specificate. Dacă datele de intrare sunt invalide, programul se oprește și afișează un mesaj de eroare. În caz contrar, programul continuă și afișează un mesaj de confirmare.&lt;/div&gt;</summary>
		<author><name>Diana Butuza</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=0223_-_Min_Cols_1&amp;diff=5764</id>
		<title>0223 - Min Cols 1</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=0223_-_Min_Cols_1&amp;diff=5764"/>
		<updated>2023-05-02T18:57:07Z</updated>

		<summary type="html">&lt;p&gt;Diana Butuza: /* Rezolvare */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Enunț ==&lt;br /&gt;
Se consideră un tablou bidimensional cu &#039;&#039;&#039;n&#039;&#039;&#039; linii şi &#039;&#039;&#039;n&#039;&#039;&#039; coloane ce conţine numere naturale cu cel mult două cifre fiecare.&lt;br /&gt;
== Cerinţa ==&lt;br /&gt;
Să se determine ultima cifră a produsului elementelor de pe diagonala secundară cu proprietatea că sunt minime pe coloanele lor.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Fişierul de intrare &#039;&#039;&#039;mincols1.in&#039;&#039;&#039; conţine pe prima linie numărul &#039;&#039;&#039;n&#039;&#039;&#039;, iar pe următoarele &#039;&#039;&#039;n&#039;&#039;&#039; linii câte &#039;&#039;&#039;n&#039;&#039;&#039; numere naturale separate prin spaţii, reprezentând elementele tabloului.&lt;br /&gt;
== Date de ieşire ==&lt;br /&gt;
Dacă datele sunt introduse corect,în fişierul de ieşire &#039;&#039;&#039;mincols1.out&#039;&#039;&#039; se va afișa :&#039;&#039;&#039;&amp;quot;Datele sunt introduse corect.&amp;quot;&#039;&#039;&#039;,apoi pe un rând nou va conţine un singur număr, reprezentând valoarea cerută.În cazul contrar,se va afișa pe ecran &#039;&#039;&#039;&amp;quot;Datele nu corespund restricțiilor impuse.&amp;quot;&#039;&#039;&#039;.&lt;br /&gt;
== Restricții și precizări ==&lt;br /&gt;
* 2 &amp;amp;les; n &amp;amp;les; 30&lt;br /&gt;
* dacă în matrice nu există asemenea elemente, se va afișa mesajul &#039;&#039;&#039;NU EXISTA&#039;&#039;&#039;&lt;br /&gt;
== Exemplu ==&lt;br /&gt;
; mincols1.in&lt;br /&gt;
: 4&lt;br /&gt;
: 3 4 90 10&lt;br /&gt;
: 25 2 7 9&lt;br /&gt;
: 18 3 10 4&lt;br /&gt;
: 3 7 20 3&lt;br /&gt;
; mincols1.out&lt;br /&gt;
: Datele sunt introduse corect.&lt;br /&gt;
: 1&lt;br /&gt;
== Explicație == &lt;br /&gt;
Dintre valorile de pe diagonala secundară, sunt minime pe coloanele lor &#039;&#039;&#039;7&#039;&#039;&#039; şi &#039;&#039;&#039;3&#039;&#039;&#039;. Produsul lor este &#039;&#039;&#039;21&#039;&#039;&#039;, iar ultima cifră 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;
&lt;br /&gt;
# Funcție care verifică dacă datele de intrare respectă condițiile problemei.&lt;br /&gt;
def validare(n, a):&lt;br /&gt;
&lt;br /&gt;
    if n &amp;lt; 2 or n &amp;gt; 30:&lt;br /&gt;
        return False&lt;br /&gt;
    for i in range(n):&lt;br /&gt;
        for j in range(n):&lt;br /&gt;
            if a[i][j] &amp;lt; 0 or a[i][j] &amp;gt; 99:&lt;br /&gt;
                return False&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
# Funcție care determină ultima cifră a produsului elementelor de pe diagonala secundară cu proprietatea că sunt minime pe coloanele lor.&lt;br /&gt;
def ultima_cifra_produsului_diag_sec_min_pe_coloane(n, a):&lt;br /&gt;
&lt;br /&gt;
    p = 1&lt;br /&gt;
    exista_minim_pe_coloane = False&lt;br /&gt;
    for i in range(n):&lt;br /&gt;
        j = n - i - 1  # indicii elementelor de pe diagonala secundară&lt;br /&gt;
        minim_pe_coloana = min(a[k][j] for k in range(n))&lt;br /&gt;
        if a[i][j] == minim_pe_coloana:&lt;br /&gt;
            exista_minim_pe_coloane = True&lt;br /&gt;
            p = (p * a[i][j]) % 10&lt;br /&gt;
    if exista_minim_pe_coloane:&lt;br /&gt;
        return p&lt;br /&gt;
    else:&lt;br /&gt;
        print(&amp;quot;NU EXISTA&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    # Citim datele de intrare din fișierul &amp;quot;mincols1.in&amp;quot;.&lt;br /&gt;
    with open(&amp;quot;mincols1.in&amp;quot;) as f:&lt;br /&gt;
        n = int(f.readline())&lt;br /&gt;
        a = [list(map(int, f.readline().split())) for _ in range(n)]&lt;br /&gt;
    # Verificăm dacă datele de intrare sunt valide.&lt;br /&gt;
    if validare(n, a):&lt;br /&gt;
        # Apelăm funcția care calculează rezultatul cerut.&lt;br /&gt;
        rezultat = ultima_cifra_produsului_diag_sec_min_pe_coloane(n, a)&lt;br /&gt;
        if rezultat is not None:&lt;br /&gt;
            # Scriem rezultatul în fișierul de ieșire &amp;quot;mincols1.out&amp;quot;.&lt;br /&gt;
            with open(&amp;quot;mincols1.out&amp;quot;, &amp;quot;w&amp;quot;) as g:&lt;br /&gt;
                g.write(&amp;quot;Datele sunt introduse corect.\n&amp;quot;)&lt;br /&gt;
                g.write(str(rezultat))&lt;br /&gt;
    else:&lt;br /&gt;
        # Scriem un mesaj de eroare în fișierul de ieșire &amp;quot;mincols1.out&amp;quot;.&lt;br /&gt;
        with open(&amp;quot;mincols1.out&amp;quot;, &amp;quot;w&amp;quot;) as g:&lt;br /&gt;
            g.write(&amp;quot;Datele nu corespund restricțiilor impuse.&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Diana Butuza</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=3352_-_Factori_1&amp;diff=5754</id>
		<title>3352 - Factori 1</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=3352_-_Factori_1&amp;diff=5754"/>
		<updated>2023-05-02T12:42:44Z</updated>

		<summary type="html">&lt;p&gt;Diana Butuza: /* Exemplu */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cerinţa ==&lt;br /&gt;
Se dau două numere naturale. Afișați numărul pentru care suma factorilor primi distincți este mai mare. Dacă cele două numere au aceași sumă a factorilor primi, afișați-l pe cel mai mic.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Programul citește de la tastatură două numere naturale.&lt;br /&gt;
== Date de ieşire ==&lt;br /&gt;
Programul va afișa pe ecran numărul cerut.&lt;br /&gt;
== Restricții și precizări ==&lt;br /&gt;
*cele două numere citite vor fi mai mici decât &#039;&#039;&#039;1.000.000.000&#039;&#039;&#039;&lt;br /&gt;
== Exemplu ==&lt;br /&gt;
; Intrare&lt;br /&gt;
:36 26&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele de intrare corespund restricțiilor impuse.&lt;br /&gt;
: 26&lt;br /&gt;
&lt;br /&gt;
== Explicație == &lt;br /&gt;
Factorii primi ai lui &#039;&#039;&#039;36&#039;&#039;&#039; sunt &#039;&#039;&#039;2&#039;&#039;&#039; și &#039;&#039;&#039;3&#039;&#039;&#039;, cu suma &#039;&#039;&#039;5&#039;&#039;&#039;. Factorii primi ai lui &#039;&#039;&#039;26&#039;&#039;&#039; sunt &#039;&#039;&#039;2&#039;&#039;&#039; și &#039;&#039;&#039;13&#039;&#039;&#039;, cu suma &#039;&#039;&#039;15&#039;&#039;&#039;. Rezultatul este &#039;&#039;&#039;26&#039;&#039;&#039;, pentru că are suma factorilor primi mai mare.&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;
def prim(x):&lt;br /&gt;
    d = 2&lt;br /&gt;
    cnt = 0&lt;br /&gt;
    while x &amp;gt; 1:&lt;br /&gt;
        p = 0&lt;br /&gt;
        while x % d == 0:&lt;br /&gt;
            p += 1&lt;br /&gt;
            x //= d&lt;br /&gt;
        if p:&lt;br /&gt;
            cnt += d&lt;br /&gt;
        d += 1&lt;br /&gt;
        if d * d &amp;gt; x:&lt;br /&gt;
            d = x&lt;br /&gt;
    return cnt&lt;br /&gt;
&lt;br /&gt;
def validate_input(x, y):&lt;br /&gt;
    if x &amp;lt; 0 or y &amp;lt; 0:&lt;br /&gt;
        return False&lt;br /&gt;
    if x == 0 and y == 0:&lt;br /&gt;
        return False&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    x, y = map(int, input().split())&lt;br /&gt;
    if validate_input(x, y):&lt;br /&gt;
        print(&amp;quot;\nDatele de intrare corespund restricțiilor impuse.\n&amp;quot;)&lt;br /&gt;
        if prim(x) &amp;gt; prim(y):&lt;br /&gt;
            print(x)&lt;br /&gt;
        elif prim(x) &amp;lt; prim(y):&lt;br /&gt;
            print(y)&lt;br /&gt;
        else:&lt;br /&gt;
            print(min(x, y))&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;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
==Explicație rezolvare==&lt;br /&gt;
Acest program primește de la utilizator două numere întregi și verifică dacă acestea îndeplinesc anumite condiții. Dacă numerele sunt valabile, programul afișează numărul dintre cele două care are suma cifrelor factorilor primi mai mare. Dacă suma este aceeași pentru ambele numere, programul va afișa cel mai mic dintre cele două numere. Dacă cele două numere nu sunt valabile, programul afișează un mesaj de eroare.&lt;/div&gt;</summary>
		<author><name>Diana Butuza</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=1422_-_Ograda&amp;diff=4325</id>
		<title>1422 - Ograda</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=1422_-_Ograda&amp;diff=4325"/>
		<updated>2023-04-25T10:26:09Z</updated>

		<summary type="html">&lt;p&gt;Diana Butuza: /* Exemplu2 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Enunţ ==&lt;br /&gt;
În ograda lui Gigel se găsesc găini și văcuțe. Se dau două numere naturale: &#039;&#039;&#039;C&#039;&#039;&#039; – numărul de capete și &#039;&#039;&#039;P&#039;&#039;&#039; – numărul de picioare din curte.&lt;br /&gt;
== Cerinţa ==&lt;br /&gt;
1. Să se afișeze câte găini și câte văcuțe sunt în ograda lui Gigel.&lt;br /&gt;
2. Maria, colega lui Gigel, îl provoacă pe acesta să calculeze numărul de divizori impari pentru numărul C și numărul de divizori pari pentru numărul P. Deoarece Gigel nu este bun la matematică, vă cere ajutorul. Să se afișeze cele două numere calculate&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Fișierul de intrare &#039;&#039;&#039;ograda.in&#039;&#039;&#039; conține pe prima linie un număr natural &#039;&#039;&#039;X&#039;&#039;&#039; (&#039;&#039;&#039;1&#039;&#039;&#039; sau &#039;&#039;&#039;2&#039;&#039;&#039;) reprezentând numărul cerinței ce trebuie rezolvată.&lt;br /&gt;
&lt;br /&gt;
A doua linie conține două numere &#039;&#039;&#039;C&#039;&#039;&#039; și &#039;&#039;&#039;P&#039;&#039;&#039;, separate printr-un spațiu, cu semnificațiile din cerință.&lt;br /&gt;
== Date de ieşire ==&lt;br /&gt;
Dacă datele sunt introduse corect, pe ecran se va afișa:&#039;&#039;&#039;&amp;quot;Datele sunt introduse corect.&amp;quot;&#039;&#039;&#039;, apoi pe urmatorul rand fișierul de ieșire ograda.out va conține:&lt;br /&gt;
Pentru cerința 1: pe prima linie se vor afișa două numere, separate printr-un spațiu, &#039;&#039;&#039;G&#039;&#039;&#039; și &#039;&#039;&#039;V&#039;&#039;&#039; reprezentând numărul de găini, respectiv numărul de văcuțe din ogradă.&lt;br /&gt;
Pentru cerința 2: pe prima linie se vor afişa două numere, separate printr-un spațiu, reprezentând numărul de divizori impari pentru numărul &#039;&#039;&#039;C&#039;&#039;&#039; și numărul de divizori pari pentru numărul &#039;&#039;&#039;P&#039;&#039;&#039;. În cazul în care datele nu respectă restricțiile, se va afișa pe ecran:&#039;&#039;&#039; &amp;quot;Datele nu corespund restricțiilor impuse.&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Restricții și precizări ==&lt;br /&gt;
* C și P &amp;amp;isin; &amp;amp;Nu; , 2*C &amp;amp;les; P &amp;amp;les; 4*C, iar P este un număr par.&lt;br /&gt;
* Pentru cerința 1:C,P &amp;amp;les; 200000000000&lt;br /&gt;
* Pentru cerința 2: C, P &amp;amp;les;50000000&lt;br /&gt;
* 0 &amp;amp;les; numar1 &amp;amp;les; numar2 &amp;amp;les; 1.000.000.000&lt;br /&gt;
* Se consideră că toate găinile au 2 picioare și 1 cap, iar toate văcuțele au 4 picioare și 1 cap. Gigel nu se &lt;br /&gt;
* află în ogradă în momentul numărării capetelor și picioarelor.&lt;br /&gt;
* Pentru X = 1 se va rezolva doar cerința 1. Pentru X = 2 se va rezolva doar cerința 2.&lt;br /&gt;
* d este divizorul lui a dacă restul împărţirii lui a la d este 0.&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
; ograda.in&lt;br /&gt;
: 1&lt;br /&gt;
: 5 16&lt;br /&gt;
; ograda.out&lt;br /&gt;
: Datele introduse corespund restricțiilor impuse.&lt;br /&gt;
: 2 3&lt;br /&gt;
== Explicație == &lt;br /&gt;
Cerința este &#039;&#039;&#039;1&#039;&#039;&#039;. În ogradă sunt &#039;&#039;&#039;2&#039;&#039;&#039; găini și &#039;&#039;&#039;3&#039;&#039;&#039; văcuțe.&lt;br /&gt;
== Exemplu2 ==&lt;br /&gt;
; ograda.in&lt;br /&gt;
: 2&lt;br /&gt;
: 5 16&lt;br /&gt;
; ograda.out&lt;br /&gt;
: Datele introduse corespund restricțiilor impuse.&lt;br /&gt;
: 2 5&lt;br /&gt;
&lt;br /&gt;
== Explicație == &lt;br /&gt;
Cerința este &#039;&#039;&#039;2&#039;&#039;&#039;. Numărul &#039;&#039;&#039;5&#039;&#039;&#039; are &#039;&#039;&#039;2&#039;&#039;&#039; divizori impari (&#039;&#039;&#039;1&#039;&#039;&#039; și &#039;&#039;&#039;5&#039;&#039;&#039;), iar numărul &#039;&#039;&#039;16&#039;&#039;&#039; are &#039;&#039;&#039;4&#039;&#039;&#039; divizori pari (&#039;&#039;&#039;2&#039;&#039;&#039;, &#039;&#039;&#039;4&#039;&#039;&#039;, &#039;&#039;&#039;8&#039;&#039;&#039;, &#039;&#039;&#039;16&#039;&#039;&#039;).&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
# Verificăm dacă toate valorile de intrare respectă restricțiile&lt;br /&gt;
def validare_date(C, P, X):&lt;br /&gt;
    if not (isinstance(C, int) and isinstance(P, int) and isinstance(X, int)):&lt;br /&gt;
        return False&lt;br /&gt;
&lt;br /&gt;
    if not (0 &amp;lt; C &amp;lt;= 200000000000 and 0 &amp;lt; P &amp;lt;= 200000000000):&lt;br /&gt;
        if X == 1:&lt;br /&gt;
            return False&lt;br /&gt;
        elif not (0 &amp;lt; C &amp;lt;= 50000000 and 0 &amp;lt; P &amp;lt;= 50000000):&lt;br /&gt;
            return False&lt;br /&gt;
&lt;br /&gt;
    if not (2 * C &amp;lt;= P &amp;lt;= 4 * C and P % 2 == 0):&lt;br /&gt;
        return False&lt;br /&gt;
&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    # Citire date de intrare&lt;br /&gt;
    with open(&amp;quot;ograda.in&amp;quot;, &amp;quot;r&amp;quot;) as f:&lt;br /&gt;
        X = int(f.readline())&lt;br /&gt;
        C, P = map(int, f.readline().split())&lt;br /&gt;
&lt;br /&gt;
    # Verificare validare date&lt;br /&gt;
    if validare_date(C, P, X):&lt;br /&gt;
        with open(&amp;quot;ograda.out&amp;quot;, &amp;quot;w&amp;quot;) as f_out:&lt;br /&gt;
            f_out.write(&amp;quot;Datele sunt introduse corect.\n&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
        # Rezolvare cerinta 1&lt;br /&gt;
        if X == 1:&lt;br /&gt;
            # Numarul total de capete&lt;br /&gt;
            t = C&lt;br /&gt;
            # Numarul total de picioare&lt;br /&gt;
            l = P&lt;br /&gt;
            # Numarul de gaini (cu 2 picioare si 1 cap)&lt;br /&gt;
            g = (4*t - l) // 2&lt;br /&gt;
            # Numarul de vacute (cu 4 picioare si 1 cap)&lt;br /&gt;
            v = t - g&lt;br /&gt;
            # Afisare rezultat&lt;br /&gt;
            with open(&amp;quot;ograda.out&amp;quot;, &amp;quot;a&amp;quot;) as f_out:&lt;br /&gt;
                f_out.write(str(g) + &amp;quot; &amp;quot; + str(v))&lt;br /&gt;
&lt;br /&gt;
        # Rezolvare cerinta 2&lt;br /&gt;
        elif X == 2:&lt;br /&gt;
            # Numarul de divizori impari pentru numarul C&lt;br /&gt;
            d1 = 1&lt;br /&gt;
            for i in range(3, C+1, 2):&lt;br /&gt;
                if C % i == 0:&lt;br /&gt;
                    d1 += 1&lt;br /&gt;
            # Numarul de divizori pari pentru numarul P&lt;br /&gt;
            d2 = 1&lt;br /&gt;
            for i in range(2, P+1, 2):&lt;br /&gt;
                if P % i == 0:&lt;br /&gt;
                    d2 += 1&lt;br /&gt;
            # Afisare rezultat&lt;br /&gt;
            with open(&amp;quot;ograda.out&amp;quot;, &amp;quot;a&amp;quot;) as f_out:&lt;br /&gt;
                f_out.write(str(d1) + &amp;quot; &amp;quot; + str(d2))&lt;br /&gt;
    else:&lt;br /&gt;
        with open(&amp;quot;ograda.out&amp;quot;, &amp;quot;w&amp;quot;) as f_out:&lt;br /&gt;
            f_out.write(&amp;quot;Datele nu corespund restricțiilor impuse.&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Diana Butuza</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=1437_-_Fractii_4&amp;diff=4313</id>
		<title>1437 - Fractii 4</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=1437_-_Fractii_4&amp;diff=4313"/>
		<updated>2023-04-25T10:06:52Z</updated>

		<summary type="html">&lt;p&gt;Diana Butuza: /* Exemplul 1 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Enunţ ==&lt;br /&gt;
Se dă un șir de n fracții. Fiecare fracție este dată printr-o pereche de numere reprezentând numărătorul și numitorul fracției. De exemplu &#039;&#039;&#039;2010 34&#039;&#039;&#039; reprezintă fracția &#039;&#039;&#039;2010/34&#039;&#039;&#039;. O fracție poate fi ireductibilă sau se poate simplifica. În exemplul precedent, &#039;&#039;&#039;2010/34&#039;&#039;&#039; se simplifică prin &#039;&#039;&#039;2&#039;&#039;&#039; și rezultă &#039;&#039;&#039;1005/17&#039;&#039;&#039;.&lt;br /&gt;
== Cerinţa ==&lt;br /&gt;
Să se afișeze, pentru fiecare fracție:&lt;br /&gt;
&lt;br /&gt;
1) Prin câte moduri distincte se poate simplifica.&lt;br /&gt;
2) Fracția ireductibilă.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
În fișierul de intrare &#039;&#039;&#039;fractii4.in&#039;&#039;&#039; pe prima linie se găsesc numerele &#039;&#039;&#039;P&#039;&#039;&#039; și &#039;&#039;&#039;n&#039;&#039;&#039;, iar pe următoarele &#039;&#039;&#039;n&#039;&#039;&#039; linii se găsesc &#039;&#039;&#039;n&#039;&#039;&#039; perechi de numere, reprezentând numărătorul și numitorul fiecărei fracții, separate printr-un spațiu.&lt;br /&gt;
== Date de iesire ==&lt;br /&gt;
Dacă datele sunt introduse corect, în fișier se va afișa:&#039;&#039;&#039; &amp;quot;Datele de intrare sunt introduse corect.&amp;quot;&#039;&#039;&#039;, apoi pe fiecare din cele &#039;&#039;&#039;n&#039;&#039;&#039; linii ale fișierului &#039;&#039;&#039;fractii4.out&#039;&#039;&#039; se găsesc, pentru fiecare fracție, în ordinea dată în fișierul de intrare:&lt;br /&gt;
1) Dacă &#039;&#039;&#039;P = 1&#039;&#039;&#039;, numărul de simplificări distincte posibile. Dacă nu este posibilă nicio simplificare (fracția este ireductibilă) se va afișa -1.&lt;br /&gt;
2) Dacă &#039;&#039;&#039;P = 2&#039;&#039;&#039; , fracția ireductibilă, numărătorul și numitorul fiind separați prin /. În cazul în care datele nu respectă restricțiile, se va afișa în fișier: &#039;&#039;&#039;&amp;quot;Datele nu corespund restricțiilor impuse.&amp;quot;&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Restricții și precizări ==&lt;br /&gt;
* n &amp;amp;les;  100 000&lt;br /&gt;
* 0 &amp;lt; numitor, numărător &amp;lt; 2 000 000 &lt;br /&gt;
* P este 1 sau 2&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
; fractii4.in&lt;br /&gt;
: 11 4&lt;br /&gt;
: 8 4&lt;br /&gt;
: 3 2&lt;br /&gt;
: 1 6&lt;br /&gt;
: 12 6&lt;br /&gt;
; fractii4.out&lt;br /&gt;
: Datele de intrare sunt introduse corect.&lt;br /&gt;
: 2&lt;br /&gt;
: -1&lt;br /&gt;
: -1&lt;br /&gt;
: 3&lt;br /&gt;
&lt;br /&gt;
== Explicație == &lt;br /&gt;
Pentru acest test &#039;&#039;&#039;&#039;P = 1&#039;&#039;&#039;, deci se va rezolva doar cerinţa 1).&lt;br /&gt;
Prima fracție se poate simplifica prin &#039;&#039;&#039;2&#039;&#039;&#039; moduri: prin &#039;&#039;&#039;2&#039;&#039;&#039; și &#039;&#039;&#039;4&#039;&#039;&#039;.&lt;br /&gt;
A doua este ireductibilă, deci se va afișa &#039;&#039;&#039;-1&#039;&#039;&#039;.&lt;br /&gt;
A treia este ireductibilă, deci se va afișa &#039;&#039;&#039;-1&#039;&#039;&#039;.&lt;br /&gt;
A patra se poate simplifica prin &#039;&#039;&#039;3&#039;&#039;&#039; moduri: &#039;&#039;&#039;2&#039;&#039;&#039;, &#039;&#039;&#039;3&#039;&#039;&#039; și &#039;&#039;&#039;6&#039;&#039;&#039;.&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
; fractii4.in&lt;br /&gt;
: 12 3&lt;br /&gt;
: 22 6&lt;br /&gt;
: 11 4&lt;br /&gt;
: 125 25&lt;br /&gt;
; fractii4.out&lt;br /&gt;
: Datele de intrare sunt introduse corect.&lt;br /&gt;
: 11/3&lt;br /&gt;
: 11/4&lt;br /&gt;
: 5/1&lt;br /&gt;
&lt;br /&gt;
== Explicație == &lt;br /&gt;
Pentru acest test &#039;&#039;&#039;P = 2&#039;&#039;&#039;, deci se va rezolva doar cerinţa 2).&lt;br /&gt;
Prima fracție se simplifică prin &#039;&#039;&#039;2&#039;&#039;&#039;.&lt;br /&gt;
A doua fracție este ireductibilă, deci va fi afișată fără schimbare.&lt;br /&gt;
Ultima fracție poate fi redusă prin &#039;&#039;&#039;25&#039;&#039;&#039; și devine ireductibilă. Chiar dacă&lt;br /&gt;
numitorul este &#039;&#039;&#039;1&#039;&#039;&#039;, acesta va fi afișat.&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;
def prim(n):&lt;br /&gt;
    if n == 0 or n == 1:&lt;br /&gt;
        return 0&lt;br /&gt;
    if n == 2:&lt;br /&gt;
        return 1&lt;br /&gt;
    if n % 2 == 0:&lt;br /&gt;
        return 0&lt;br /&gt;
    else:&lt;br /&gt;
        for i in range(3, int(math.sqrt(n))+1, 2):&lt;br /&gt;
            if n % i == 0:&lt;br /&gt;
                return 0&lt;br /&gt;
    return 1&lt;br /&gt;
&lt;br /&gt;
def prime(a, b):&lt;br /&gt;
    if b == 0:&lt;br /&gt;
        return a&lt;br /&gt;
    else:&lt;br /&gt;
        return prime(b, a % b)&lt;br /&gt;
&lt;br /&gt;
def validare_date(n, p):&lt;br /&gt;
    if n &amp;lt;= 100000 and p in [1, 2]:&lt;br /&gt;
        return True&lt;br /&gt;
    else:&lt;br /&gt;
        return False&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    fin = open(&amp;quot;fractii4.in&amp;quot;, &amp;quot;r&amp;quot;)&lt;br /&gt;
    fout = open(&amp;quot;fractii4.out&amp;quot;, &amp;quot;w&amp;quot;)&lt;br /&gt;
    p, n = map(int, fin.readline().split())&lt;br /&gt;
    if validare_date(n, p):&lt;br /&gt;
        print(&amp;quot;\nDatele de intrare sunt introduse corect.\n&amp;quot;)&lt;br /&gt;
        for i in range(n):&lt;br /&gt;
            a, b = map(int, fin.readline().split())&lt;br /&gt;
            x, y = a, b&lt;br /&gt;
            if p == 1:&lt;br /&gt;
                if prim(a) == 0 and prim(b) == 0 and prime(a, b) == 1:&lt;br /&gt;
                    d = 0&lt;br /&gt;
                    d1 = prime(a, b)&lt;br /&gt;
                    for j in range(1, int(math.sqrt(d1))+1):&lt;br /&gt;
                        if d1 % j == 0:&lt;br /&gt;
                            d += 2&lt;br /&gt;
                            if j * j == d1:&lt;br /&gt;
                                d -= 1&lt;br /&gt;
                    fout.write(str(d-1) + &#039;\n&#039;)&lt;br /&gt;
                else:&lt;br /&gt;
                    fout.write(&amp;quot;-1\n&amp;quot;)&lt;br /&gt;
            else:&lt;br /&gt;
                t = prime(a, b)&lt;br /&gt;
                fout.write(str(x//t) + &#039;/&#039; + str(y//t) + &#039;\n&#039;)&lt;br /&gt;
        fin.close()&lt;br /&gt;
        fout.close()&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;/div&gt;</summary>
		<author><name>Diana Butuza</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=1437_-_Fractii_4&amp;diff=4311</id>
		<title>1437 - Fractii 4</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=1437_-_Fractii_4&amp;diff=4311"/>
		<updated>2023-04-25T10:06:28Z</updated>

		<summary type="html">&lt;p&gt;Diana Butuza: /* Date de iesire */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Enunţ ==&lt;br /&gt;
Se dă un șir de n fracții. Fiecare fracție este dată printr-o pereche de numere reprezentând numărătorul și numitorul fracției. De exemplu &#039;&#039;&#039;2010 34&#039;&#039;&#039; reprezintă fracția &#039;&#039;&#039;2010/34&#039;&#039;&#039;. O fracție poate fi ireductibilă sau se poate simplifica. În exemplul precedent, &#039;&#039;&#039;2010/34&#039;&#039;&#039; se simplifică prin &#039;&#039;&#039;2&#039;&#039;&#039; și rezultă &#039;&#039;&#039;1005/17&#039;&#039;&#039;.&lt;br /&gt;
== Cerinţa ==&lt;br /&gt;
Să se afișeze, pentru fiecare fracție:&lt;br /&gt;
&lt;br /&gt;
1) Prin câte moduri distincte se poate simplifica.&lt;br /&gt;
2) Fracția ireductibilă.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
În fișierul de intrare &#039;&#039;&#039;fractii4.in&#039;&#039;&#039; pe prima linie se găsesc numerele &#039;&#039;&#039;P&#039;&#039;&#039; și &#039;&#039;&#039;n&#039;&#039;&#039;, iar pe următoarele &#039;&#039;&#039;n&#039;&#039;&#039; linii se găsesc &#039;&#039;&#039;n&#039;&#039;&#039; perechi de numere, reprezentând numărătorul și numitorul fiecărei fracții, separate printr-un spațiu.&lt;br /&gt;
== Date de iesire ==&lt;br /&gt;
Dacă datele sunt introduse corect, în fișier se va afișa:&#039;&#039;&#039; &amp;quot;Datele de intrare sunt introduse corect.&amp;quot;&#039;&#039;&#039;, apoi pe fiecare din cele &#039;&#039;&#039;n&#039;&#039;&#039; linii ale fișierului &#039;&#039;&#039;fractii4.out&#039;&#039;&#039; se găsesc, pentru fiecare fracție, în ordinea dată în fișierul de intrare:&lt;br /&gt;
1) Dacă &#039;&#039;&#039;P = 1&#039;&#039;&#039;, numărul de simplificări distincte posibile. Dacă nu este posibilă nicio simplificare (fracția este ireductibilă) se va afișa -1.&lt;br /&gt;
2) Dacă &#039;&#039;&#039;P = 2&#039;&#039;&#039; , fracția ireductibilă, numărătorul și numitorul fiind separați prin /. În cazul în care datele nu respectă restricțiile, se va afișa în fișier: &#039;&#039;&#039;&amp;quot;Datele nu corespund restricțiilor impuse.&amp;quot;&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Restricții și precizări ==&lt;br /&gt;
* n &amp;amp;les;  100 000&lt;br /&gt;
* 0 &amp;lt; numitor, numărător &amp;lt; 2 000 000 &lt;br /&gt;
* P este 1 sau 2&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
; fractii4.in&lt;br /&gt;
: 11 4&lt;br /&gt;
: 8 4&lt;br /&gt;
: 3 2&lt;br /&gt;
: 1 6&lt;br /&gt;
: 12 6&lt;br /&gt;
; fractii4.out&lt;br /&gt;
: Datele sunt introduse corect.&lt;br /&gt;
: 2&lt;br /&gt;
: -1&lt;br /&gt;
: -1&lt;br /&gt;
: 3&lt;br /&gt;
&lt;br /&gt;
== Explicație == &lt;br /&gt;
Pentru acest test &#039;&#039;&#039;&#039;P = 1&#039;&#039;&#039;, deci se va rezolva doar cerinţa 1).&lt;br /&gt;
Prima fracție se poate simplifica prin &#039;&#039;&#039;2&#039;&#039;&#039; moduri: prin &#039;&#039;&#039;2&#039;&#039;&#039; și &#039;&#039;&#039;4&#039;&#039;&#039;.&lt;br /&gt;
A doua este ireductibilă, deci se va afișa &#039;&#039;&#039;-1&#039;&#039;&#039;.&lt;br /&gt;
A treia este ireductibilă, deci se va afișa &#039;&#039;&#039;-1&#039;&#039;&#039;.&lt;br /&gt;
A patra se poate simplifica prin &#039;&#039;&#039;3&#039;&#039;&#039; moduri: &#039;&#039;&#039;2&#039;&#039;&#039;, &#039;&#039;&#039;3&#039;&#039;&#039; și &#039;&#039;&#039;6&#039;&#039;&#039;.&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
; fractii4.in&lt;br /&gt;
: 12 3&lt;br /&gt;
: 22 6&lt;br /&gt;
: 11 4&lt;br /&gt;
: 125 25&lt;br /&gt;
; fractii4.out&lt;br /&gt;
: Datele de intrare sunt introduse corect.&lt;br /&gt;
: 11/3&lt;br /&gt;
: 11/4&lt;br /&gt;
: 5/1&lt;br /&gt;
&lt;br /&gt;
== Explicație == &lt;br /&gt;
Pentru acest test &#039;&#039;&#039;P = 2&#039;&#039;&#039;, deci se va rezolva doar cerinţa 2).&lt;br /&gt;
Prima fracție se simplifică prin &#039;&#039;&#039;2&#039;&#039;&#039;.&lt;br /&gt;
A doua fracție este ireductibilă, deci va fi afișată fără schimbare.&lt;br /&gt;
Ultima fracție poate fi redusă prin &#039;&#039;&#039;25&#039;&#039;&#039; și devine ireductibilă. Chiar dacă&lt;br /&gt;
numitorul este &#039;&#039;&#039;1&#039;&#039;&#039;, acesta va fi afișat.&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;
def prim(n):&lt;br /&gt;
    if n == 0 or n == 1:&lt;br /&gt;
        return 0&lt;br /&gt;
    if n == 2:&lt;br /&gt;
        return 1&lt;br /&gt;
    if n % 2 == 0:&lt;br /&gt;
        return 0&lt;br /&gt;
    else:&lt;br /&gt;
        for i in range(3, int(math.sqrt(n))+1, 2):&lt;br /&gt;
            if n % i == 0:&lt;br /&gt;
                return 0&lt;br /&gt;
    return 1&lt;br /&gt;
&lt;br /&gt;
def prime(a, b):&lt;br /&gt;
    if b == 0:&lt;br /&gt;
        return a&lt;br /&gt;
    else:&lt;br /&gt;
        return prime(b, a % b)&lt;br /&gt;
&lt;br /&gt;
def validare_date(n, p):&lt;br /&gt;
    if n &amp;lt;= 100000 and p in [1, 2]:&lt;br /&gt;
        return True&lt;br /&gt;
    else:&lt;br /&gt;
        return False&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    fin = open(&amp;quot;fractii4.in&amp;quot;, &amp;quot;r&amp;quot;)&lt;br /&gt;
    fout = open(&amp;quot;fractii4.out&amp;quot;, &amp;quot;w&amp;quot;)&lt;br /&gt;
    p, n = map(int, fin.readline().split())&lt;br /&gt;
    if validare_date(n, p):&lt;br /&gt;
        print(&amp;quot;\nDatele de intrare sunt introduse corect.\n&amp;quot;)&lt;br /&gt;
        for i in range(n):&lt;br /&gt;
            a, b = map(int, fin.readline().split())&lt;br /&gt;
            x, y = a, b&lt;br /&gt;
            if p == 1:&lt;br /&gt;
                if prim(a) == 0 and prim(b) == 0 and prime(a, b) == 1:&lt;br /&gt;
                    d = 0&lt;br /&gt;
                    d1 = prime(a, b)&lt;br /&gt;
                    for j in range(1, int(math.sqrt(d1))+1):&lt;br /&gt;
                        if d1 % j == 0:&lt;br /&gt;
                            d += 2&lt;br /&gt;
                            if j * j == d1:&lt;br /&gt;
                                d -= 1&lt;br /&gt;
                    fout.write(str(d-1) + &#039;\n&#039;)&lt;br /&gt;
                else:&lt;br /&gt;
                    fout.write(&amp;quot;-1\n&amp;quot;)&lt;br /&gt;
            else:&lt;br /&gt;
                t = prime(a, b)&lt;br /&gt;
                fout.write(str(x//t) + &#039;/&#039; + str(y//t) + &#039;\n&#039;)&lt;br /&gt;
        fin.close()&lt;br /&gt;
        fout.close()&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;/div&gt;</summary>
		<author><name>Diana Butuza</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=1437_-_Fractii_4&amp;diff=4310</id>
		<title>1437 - Fractii 4</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=1437_-_Fractii_4&amp;diff=4310"/>
		<updated>2023-04-25T10:06:04Z</updated>

		<summary type="html">&lt;p&gt;Diana Butuza: /* Exemplul 2 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Enunţ ==&lt;br /&gt;
Se dă un șir de n fracții. Fiecare fracție este dată printr-o pereche de numere reprezentând numărătorul și numitorul fracției. De exemplu &#039;&#039;&#039;2010 34&#039;&#039;&#039; reprezintă fracția &#039;&#039;&#039;2010/34&#039;&#039;&#039;. O fracție poate fi ireductibilă sau se poate simplifica. În exemplul precedent, &#039;&#039;&#039;2010/34&#039;&#039;&#039; se simplifică prin &#039;&#039;&#039;2&#039;&#039;&#039; și rezultă &#039;&#039;&#039;1005/17&#039;&#039;&#039;.&lt;br /&gt;
== Cerinţa ==&lt;br /&gt;
Să se afișeze, pentru fiecare fracție:&lt;br /&gt;
&lt;br /&gt;
1) Prin câte moduri distincte se poate simplifica.&lt;br /&gt;
2) Fracția ireductibilă.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
În fișierul de intrare &#039;&#039;&#039;fractii4.in&#039;&#039;&#039; pe prima linie se găsesc numerele &#039;&#039;&#039;P&#039;&#039;&#039; și &#039;&#039;&#039;n&#039;&#039;&#039;, iar pe următoarele &#039;&#039;&#039;n&#039;&#039;&#039; linii se găsesc &#039;&#039;&#039;n&#039;&#039;&#039; perechi de numere, reprezentând numărătorul și numitorul fiecărei fracții, separate printr-un spațiu.&lt;br /&gt;
== Date de iesire ==&lt;br /&gt;
Dacă datele sunt introduse corect, în fișier se va afișa:&#039;&#039;&#039; &amp;quot;Datele sunt introduse corect.&amp;quot;&#039;&#039;&#039;, apoi pe fiecare din cele &#039;&#039;&#039;n&#039;&#039;&#039; linii ale fișierului &#039;&#039;&#039;fractii4.out&#039;&#039;&#039; se găsesc, pentru fiecare fracție, în ordinea dată în fișierul de intrare:&lt;br /&gt;
1) Dacă &#039;&#039;&#039;P = 1&#039;&#039;&#039;, numărul de simplificări distincte posibile. Dacă nu este posibilă nicio simplificare (fracția este ireductibilă) se va afișa -1.&lt;br /&gt;
2) Dacă &#039;&#039;&#039;P = 2&#039;&#039;&#039; , fracția ireductibilă, numărătorul și numitorul fiind separați prin /. În cazul în care datele nu respectă restricțiile, se va afișa în fișier: &#039;&#039;&#039;&amp;quot;Datele nu corespund restricțiilor impuse.&amp;quot;&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Restricții și precizări ==&lt;br /&gt;
* n &amp;amp;les;  100 000&lt;br /&gt;
* 0 &amp;lt; numitor, numărător &amp;lt; 2 000 000 &lt;br /&gt;
* P este 1 sau 2&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
; fractii4.in&lt;br /&gt;
: 11 4&lt;br /&gt;
: 8 4&lt;br /&gt;
: 3 2&lt;br /&gt;
: 1 6&lt;br /&gt;
: 12 6&lt;br /&gt;
; fractii4.out&lt;br /&gt;
: Datele sunt introduse corect.&lt;br /&gt;
: 2&lt;br /&gt;
: -1&lt;br /&gt;
: -1&lt;br /&gt;
: 3&lt;br /&gt;
&lt;br /&gt;
== Explicație == &lt;br /&gt;
Pentru acest test &#039;&#039;&#039;&#039;P = 1&#039;&#039;&#039;, deci se va rezolva doar cerinţa 1).&lt;br /&gt;
Prima fracție se poate simplifica prin &#039;&#039;&#039;2&#039;&#039;&#039; moduri: prin &#039;&#039;&#039;2&#039;&#039;&#039; și &#039;&#039;&#039;4&#039;&#039;&#039;.&lt;br /&gt;
A doua este ireductibilă, deci se va afișa &#039;&#039;&#039;-1&#039;&#039;&#039;.&lt;br /&gt;
A treia este ireductibilă, deci se va afișa &#039;&#039;&#039;-1&#039;&#039;&#039;.&lt;br /&gt;
A patra se poate simplifica prin &#039;&#039;&#039;3&#039;&#039;&#039; moduri: &#039;&#039;&#039;2&#039;&#039;&#039;, &#039;&#039;&#039;3&#039;&#039;&#039; și &#039;&#039;&#039;6&#039;&#039;&#039;.&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
; fractii4.in&lt;br /&gt;
: 12 3&lt;br /&gt;
: 22 6&lt;br /&gt;
: 11 4&lt;br /&gt;
: 125 25&lt;br /&gt;
; fractii4.out&lt;br /&gt;
: Datele de intrare sunt introduse corect.&lt;br /&gt;
: 11/3&lt;br /&gt;
: 11/4&lt;br /&gt;
: 5/1&lt;br /&gt;
&lt;br /&gt;
== Explicație == &lt;br /&gt;
Pentru acest test &#039;&#039;&#039;P = 2&#039;&#039;&#039;, deci se va rezolva doar cerinţa 2).&lt;br /&gt;
Prima fracție se simplifică prin &#039;&#039;&#039;2&#039;&#039;&#039;.&lt;br /&gt;
A doua fracție este ireductibilă, deci va fi afișată fără schimbare.&lt;br /&gt;
Ultima fracție poate fi redusă prin &#039;&#039;&#039;25&#039;&#039;&#039; și devine ireductibilă. Chiar dacă&lt;br /&gt;
numitorul este &#039;&#039;&#039;1&#039;&#039;&#039;, acesta va fi afișat.&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;
def prim(n):&lt;br /&gt;
    if n == 0 or n == 1:&lt;br /&gt;
        return 0&lt;br /&gt;
    if n == 2:&lt;br /&gt;
        return 1&lt;br /&gt;
    if n % 2 == 0:&lt;br /&gt;
        return 0&lt;br /&gt;
    else:&lt;br /&gt;
        for i in range(3, int(math.sqrt(n))+1, 2):&lt;br /&gt;
            if n % i == 0:&lt;br /&gt;
                return 0&lt;br /&gt;
    return 1&lt;br /&gt;
&lt;br /&gt;
def prime(a, b):&lt;br /&gt;
    if b == 0:&lt;br /&gt;
        return a&lt;br /&gt;
    else:&lt;br /&gt;
        return prime(b, a % b)&lt;br /&gt;
&lt;br /&gt;
def validare_date(n, p):&lt;br /&gt;
    if n &amp;lt;= 100000 and p in [1, 2]:&lt;br /&gt;
        return True&lt;br /&gt;
    else:&lt;br /&gt;
        return False&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    fin = open(&amp;quot;fractii4.in&amp;quot;, &amp;quot;r&amp;quot;)&lt;br /&gt;
    fout = open(&amp;quot;fractii4.out&amp;quot;, &amp;quot;w&amp;quot;)&lt;br /&gt;
    p, n = map(int, fin.readline().split())&lt;br /&gt;
    if validare_date(n, p):&lt;br /&gt;
        print(&amp;quot;\nDatele de intrare sunt introduse corect.\n&amp;quot;)&lt;br /&gt;
        for i in range(n):&lt;br /&gt;
            a, b = map(int, fin.readline().split())&lt;br /&gt;
            x, y = a, b&lt;br /&gt;
            if p == 1:&lt;br /&gt;
                if prim(a) == 0 and prim(b) == 0 and prime(a, b) == 1:&lt;br /&gt;
                    d = 0&lt;br /&gt;
                    d1 = prime(a, b)&lt;br /&gt;
                    for j in range(1, int(math.sqrt(d1))+1):&lt;br /&gt;
                        if d1 % j == 0:&lt;br /&gt;
                            d += 2&lt;br /&gt;
                            if j * j == d1:&lt;br /&gt;
                                d -= 1&lt;br /&gt;
                    fout.write(str(d-1) + &#039;\n&#039;)&lt;br /&gt;
                else:&lt;br /&gt;
                    fout.write(&amp;quot;-1\n&amp;quot;)&lt;br /&gt;
            else:&lt;br /&gt;
                t = prime(a, b)&lt;br /&gt;
                fout.write(str(x//t) + &#039;/&#039; + str(y//t) + &#039;\n&#039;)&lt;br /&gt;
        fin.close()&lt;br /&gt;
        fout.close()&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;/div&gt;</summary>
		<author><name>Diana Butuza</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=1437_-_Fractii_4&amp;diff=4309</id>
		<title>1437 - Fractii 4</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=1437_-_Fractii_4&amp;diff=4309"/>
		<updated>2023-04-25T10:05:44Z</updated>

		<summary type="html">&lt;p&gt;Diana Butuza: /* Rezolvare */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Enunţ ==&lt;br /&gt;
Se dă un șir de n fracții. Fiecare fracție este dată printr-o pereche de numere reprezentând numărătorul și numitorul fracției. De exemplu &#039;&#039;&#039;2010 34&#039;&#039;&#039; reprezintă fracția &#039;&#039;&#039;2010/34&#039;&#039;&#039;. O fracție poate fi ireductibilă sau se poate simplifica. În exemplul precedent, &#039;&#039;&#039;2010/34&#039;&#039;&#039; se simplifică prin &#039;&#039;&#039;2&#039;&#039;&#039; și rezultă &#039;&#039;&#039;1005/17&#039;&#039;&#039;.&lt;br /&gt;
== Cerinţa ==&lt;br /&gt;
Să se afișeze, pentru fiecare fracție:&lt;br /&gt;
&lt;br /&gt;
1) Prin câte moduri distincte se poate simplifica.&lt;br /&gt;
2) Fracția ireductibilă.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
În fișierul de intrare &#039;&#039;&#039;fractii4.in&#039;&#039;&#039; pe prima linie se găsesc numerele &#039;&#039;&#039;P&#039;&#039;&#039; și &#039;&#039;&#039;n&#039;&#039;&#039;, iar pe următoarele &#039;&#039;&#039;n&#039;&#039;&#039; linii se găsesc &#039;&#039;&#039;n&#039;&#039;&#039; perechi de numere, reprezentând numărătorul și numitorul fiecărei fracții, separate printr-un spațiu.&lt;br /&gt;
== Date de iesire ==&lt;br /&gt;
Dacă datele sunt introduse corect, în fișier se va afișa:&#039;&#039;&#039; &amp;quot;Datele sunt introduse corect.&amp;quot;&#039;&#039;&#039;, apoi pe fiecare din cele &#039;&#039;&#039;n&#039;&#039;&#039; linii ale fișierului &#039;&#039;&#039;fractii4.out&#039;&#039;&#039; se găsesc, pentru fiecare fracție, în ordinea dată în fișierul de intrare:&lt;br /&gt;
1) Dacă &#039;&#039;&#039;P = 1&#039;&#039;&#039;, numărul de simplificări distincte posibile. Dacă nu este posibilă nicio simplificare (fracția este ireductibilă) se va afișa -1.&lt;br /&gt;
2) Dacă &#039;&#039;&#039;P = 2&#039;&#039;&#039; , fracția ireductibilă, numărătorul și numitorul fiind separați prin /. În cazul în care datele nu respectă restricțiile, se va afișa în fișier: &#039;&#039;&#039;&amp;quot;Datele nu corespund restricțiilor impuse.&amp;quot;&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Restricții și precizări ==&lt;br /&gt;
* n &amp;amp;les;  100 000&lt;br /&gt;
* 0 &amp;lt; numitor, numărător &amp;lt; 2 000 000 &lt;br /&gt;
* P este 1 sau 2&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
; fractii4.in&lt;br /&gt;
: 11 4&lt;br /&gt;
: 8 4&lt;br /&gt;
: 3 2&lt;br /&gt;
: 1 6&lt;br /&gt;
: 12 6&lt;br /&gt;
; fractii4.out&lt;br /&gt;
: Datele sunt introduse corect.&lt;br /&gt;
: 2&lt;br /&gt;
: -1&lt;br /&gt;
: -1&lt;br /&gt;
: 3&lt;br /&gt;
&lt;br /&gt;
== Explicație == &lt;br /&gt;
Pentru acest test &#039;&#039;&#039;&#039;P = 1&#039;&#039;&#039;, deci se va rezolva doar cerinţa 1).&lt;br /&gt;
Prima fracție se poate simplifica prin &#039;&#039;&#039;2&#039;&#039;&#039; moduri: prin &#039;&#039;&#039;2&#039;&#039;&#039; și &#039;&#039;&#039;4&#039;&#039;&#039;.&lt;br /&gt;
A doua este ireductibilă, deci se va afișa &#039;&#039;&#039;-1&#039;&#039;&#039;.&lt;br /&gt;
A treia este ireductibilă, deci se va afișa &#039;&#039;&#039;-1&#039;&#039;&#039;.&lt;br /&gt;
A patra se poate simplifica prin &#039;&#039;&#039;3&#039;&#039;&#039; moduri: &#039;&#039;&#039;2&#039;&#039;&#039;, &#039;&#039;&#039;3&#039;&#039;&#039; și &#039;&#039;&#039;6&#039;&#039;&#039;.&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
; fractii4.in&lt;br /&gt;
: 12 3&lt;br /&gt;
: 22 6&lt;br /&gt;
: 11 4&lt;br /&gt;
: 125 25&lt;br /&gt;
; fractii4.out&lt;br /&gt;
: 11/3&lt;br /&gt;
: 11/4&lt;br /&gt;
: 5/1&lt;br /&gt;
== Explicație == &lt;br /&gt;
Pentru acest test &#039;&#039;&#039;P = 2&#039;&#039;&#039;, deci se va rezolva doar cerinţa 2).&lt;br /&gt;
Prima fracție se simplifică prin &#039;&#039;&#039;2&#039;&#039;&#039;.&lt;br /&gt;
A doua fracție este ireductibilă, deci va fi afișată fără schimbare.&lt;br /&gt;
Ultima fracție poate fi redusă prin &#039;&#039;&#039;25&#039;&#039;&#039; și devine ireductibilă. Chiar dacă&lt;br /&gt;
numitorul este &#039;&#039;&#039;1&#039;&#039;&#039;, acesta va fi afișat.&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;
def prim(n):&lt;br /&gt;
    if n == 0 or n == 1:&lt;br /&gt;
        return 0&lt;br /&gt;
    if n == 2:&lt;br /&gt;
        return 1&lt;br /&gt;
    if n % 2 == 0:&lt;br /&gt;
        return 0&lt;br /&gt;
    else:&lt;br /&gt;
        for i in range(3, int(math.sqrt(n))+1, 2):&lt;br /&gt;
            if n % i == 0:&lt;br /&gt;
                return 0&lt;br /&gt;
    return 1&lt;br /&gt;
&lt;br /&gt;
def prime(a, b):&lt;br /&gt;
    if b == 0:&lt;br /&gt;
        return a&lt;br /&gt;
    else:&lt;br /&gt;
        return prime(b, a % b)&lt;br /&gt;
&lt;br /&gt;
def validare_date(n, p):&lt;br /&gt;
    if n &amp;lt;= 100000 and p in [1, 2]:&lt;br /&gt;
        return True&lt;br /&gt;
    else:&lt;br /&gt;
        return False&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    fin = open(&amp;quot;fractii4.in&amp;quot;, &amp;quot;r&amp;quot;)&lt;br /&gt;
    fout = open(&amp;quot;fractii4.out&amp;quot;, &amp;quot;w&amp;quot;)&lt;br /&gt;
    p, n = map(int, fin.readline().split())&lt;br /&gt;
    if validare_date(n, p):&lt;br /&gt;
        print(&amp;quot;\nDatele de intrare sunt introduse corect.\n&amp;quot;)&lt;br /&gt;
        for i in range(n):&lt;br /&gt;
            a, b = map(int, fin.readline().split())&lt;br /&gt;
            x, y = a, b&lt;br /&gt;
            if p == 1:&lt;br /&gt;
                if prim(a) == 0 and prim(b) == 0 and prime(a, b) == 1:&lt;br /&gt;
                    d = 0&lt;br /&gt;
                    d1 = prime(a, b)&lt;br /&gt;
                    for j in range(1, int(math.sqrt(d1))+1):&lt;br /&gt;
                        if d1 % j == 0:&lt;br /&gt;
                            d += 2&lt;br /&gt;
                            if j * j == d1:&lt;br /&gt;
                                d -= 1&lt;br /&gt;
                    fout.write(str(d-1) + &#039;\n&#039;)&lt;br /&gt;
                else:&lt;br /&gt;
                    fout.write(&amp;quot;-1\n&amp;quot;)&lt;br /&gt;
            else:&lt;br /&gt;
                t = prime(a, b)&lt;br /&gt;
                fout.write(str(x//t) + &#039;/&#039; + str(y//t) + &#039;\n&#039;)&lt;br /&gt;
        fin.close()&lt;br /&gt;
        fout.close()&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;/div&gt;</summary>
		<author><name>Diana Butuza</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=0434_-_Perechi_Prime&amp;diff=4296</id>
		<title>0434 - Perechi Prime</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=0434_-_Perechi_Prime&amp;diff=4296"/>
		<updated>2023-04-25T09:41:36Z</updated>

		<summary type="html">&lt;p&gt;Diana Butuza: /* Explicație rezolvare */&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;. Afișați primele &#039;&#039;&#039;n&#039;&#039;&#039; perechi de numere naturale impare consecutive 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 &#039;&#039;&#039;n&#039;&#039;&#039; primele perechi de numere naturale impare consecutive prime, câte o pereche pe linie, numerele dintr-o pereche fiind separate printr-un spațiu.&lt;br /&gt;
== Restricții și precizări ==&lt;br /&gt;
* 1 ≤ n ≤ 100&lt;br /&gt;
* pentru fiecare pereche p q afișată, p &amp;lt; q&lt;br /&gt;
== Exemplu ==&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;
: 3 5 &lt;br /&gt;
: 5 7 &lt;br /&gt;
: 11 13 &lt;br /&gt;
: 17 19 &lt;br /&gt;
: 29 31&lt;br /&gt;
&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
import math&lt;br /&gt;
&lt;br /&gt;
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;= 100:&lt;br /&gt;
            flag = True&lt;br /&gt;
    return flag&lt;br /&gt;
&lt;br /&gt;
def prim(numar):&lt;br /&gt;
    if numar &amp;lt; 2:&lt;br /&gt;
        return False&lt;br /&gt;
    for i in range(2, int(math.sqrt(numar))+1):&lt;br /&gt;
        if numar % i == 0:&lt;br /&gt;
            return False&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
def print_prime_consecutive(n):&lt;br /&gt;
    count = 0&lt;br /&gt;
    numar = 3&lt;br /&gt;
    while count &amp;lt; n:&lt;br /&gt;
        if prim(numar) and prim(numar+2):&lt;br /&gt;
            print(numar, numar+2)&lt;br /&gt;
            count += 1&lt;br /&gt;
        numar += 2&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    numar = input(&amp;quot;Introduceți numărul n: &amp;quot;)&lt;br /&gt;
    if validare_date(numar):&lt;br /&gt;
        n = int(numar)&lt;br /&gt;
        print(&amp;quot;\nDatele de intrare corespund restricțiilor impuse.\n&amp;quot;)&lt;br /&gt;
        print(&amp;quot;Primele&amp;quot;, n, &amp;quot;perechi de numere naturale impare consecutive prime sunt:&amp;quot;)&lt;br /&gt;
        print_prime_consecutive(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 rezolvare==&lt;br /&gt;
Funcția &#039;&#039;&#039;validare_date&#039;&#039;&#039; primește un număr sub formă de șir de caractere și returnează o valoare booleană, &#039;&#039;&#039;True&#039;&#039;&#039; dacă numărul este un număr natural între &#039;&#039;&#039;0 și 100&#039;&#039;&#039;, inclusiv, altfel returnează &#039;&#039;&#039;False&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Funcția &#039;&#039;&#039;prim&#039;&#039;&#039; primește un număr și returnează o valoare booleană, &#039;&#039;&#039;True&#039;&#039;&#039; dacă numărul este prim, altfel returnează &#039;&#039;&#039;False&#039;&#039;&#039;. Funcția utilizează o buclă for care verifică dacă numărul este divizibil cu orice număr între 2 și rădăcina pătrată a numărului dat, iar dacă este, returnează &#039;&#039;&#039;False&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Funcția &#039;&#039;&#039;print_prime_consecutive&#039;&#039;&#039; primește un număr întreg &#039;&#039;&#039;n&#039;&#039;&#039; și afișează primele n perechi de numere naturale impare consecutive prime. Funcția începe cu numărul 3 și, utilizând o buclă &#039;&#039;&#039;while&#039;&#039;&#039;, verifică dacă numerele sunt prime și consecutive impare și le afișează în caz afirmativ. Dacă găsește o pereche, crește numărul de perechi găsite &#039;&#039;&#039;(count)&#039;&#039;&#039; cu 1 și trece la următorul număr.&lt;br /&gt;
&lt;br /&gt;
Funcția &#039;&#039;&#039;main&#039;&#039;&#039; începe prin a cere utilizatorului să introducă un număr întreg &#039;&#039;&#039;n&#039;&#039;&#039; și apoi verifică dacă acesta este valid utilizând funcția &#039;&#039;&#039;validare_date&#039;&#039;&#039;. Dacă numărul este valid, afișează mesajul &#039;&#039;&#039;Datele de intrare corespund restricțiilor impuse.&#039;&#039;&#039; și apoi utilizează funcția &#039;&#039;&#039;print_prime_consecutive&#039;&#039;&#039; pentru a afișa primele &#039;&#039;&#039;n&#039;&#039;&#039; perechi de numere naturale impare consecutive prime. Dacă numărul nu este valid, afișează mesajul &#039;&#039;&#039;Datele de intrare nu corespund restricțiilor impuse.&#039;&#039;&#039;&lt;/div&gt;</summary>
		<author><name>Diana Butuza</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=0434_-_Perechi_Prime&amp;diff=4295</id>
		<title>0434 - Perechi Prime</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=0434_-_Perechi_Prime&amp;diff=4295"/>
		<updated>2023-04-25T09:41:14Z</updated>

		<summary type="html">&lt;p&gt;Diana Butuza: /* Explicație rezolvare */&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;. Afișați primele &#039;&#039;&#039;n&#039;&#039;&#039; perechi de numere naturale impare consecutive 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 &#039;&#039;&#039;n&#039;&#039;&#039; primele perechi de numere naturale impare consecutive prime, câte o pereche pe linie, numerele dintr-o pereche fiind separate printr-un spațiu.&lt;br /&gt;
== Restricții și precizări ==&lt;br /&gt;
* 1 ≤ n ≤ 100&lt;br /&gt;
* pentru fiecare pereche p q afișată, p &amp;lt; q&lt;br /&gt;
== Exemplu ==&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;
: 3 5 &lt;br /&gt;
: 5 7 &lt;br /&gt;
: 11 13 &lt;br /&gt;
: 17 19 &lt;br /&gt;
: 29 31&lt;br /&gt;
&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
import math&lt;br /&gt;
&lt;br /&gt;
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;= 100:&lt;br /&gt;
            flag = True&lt;br /&gt;
    return flag&lt;br /&gt;
&lt;br /&gt;
def prim(numar):&lt;br /&gt;
    if numar &amp;lt; 2:&lt;br /&gt;
        return False&lt;br /&gt;
    for i in range(2, int(math.sqrt(numar))+1):&lt;br /&gt;
        if numar % i == 0:&lt;br /&gt;
            return False&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
def print_prime_consecutive(n):&lt;br /&gt;
    count = 0&lt;br /&gt;
    numar = 3&lt;br /&gt;
    while count &amp;lt; n:&lt;br /&gt;
        if prim(numar) and prim(numar+2):&lt;br /&gt;
            print(numar, numar+2)&lt;br /&gt;
            count += 1&lt;br /&gt;
        numar += 2&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    numar = input(&amp;quot;Introduceți numărul n: &amp;quot;)&lt;br /&gt;
    if validare_date(numar):&lt;br /&gt;
        n = int(numar)&lt;br /&gt;
        print(&amp;quot;\nDatele de intrare corespund restricțiilor impuse.\n&amp;quot;)&lt;br /&gt;
        print(&amp;quot;Primele&amp;quot;, n, &amp;quot;perechi de numere naturale impare consecutive prime sunt:&amp;quot;)&lt;br /&gt;
        print_prime_consecutive(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 rezolvare==&lt;br /&gt;
Funcția &#039;&#039;&#039;validare_date&#039;&#039;&#039; primește un număr sub formă de șir de caractere și returnează o valoare booleană, &#039;&#039;&#039;True&#039;&#039;&#039; dacă numărul este un număr natural între &#039;&#039;&#039;0 și 100&#039;&#039;&#039;, inclusiv, altfel returnează &#039;&#039;&#039;False&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Funcția &#039;&#039;&#039;prim&#039;&#039;&#039; primește un număr și returnează o valoare booleană, &#039;&#039;&#039;True&#039;&#039;&#039; dacă numărul este prim, altfel returnează &#039;&#039;&#039;False&#039;&#039;&#039;. Funcția utilizează o buclă for care verifică dacă numărul este divizibil cu orice număr între 2 și rădăcina pătrată a numărului dat, iar dacă este, returnează &#039;&#039;&#039;False&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Funcția &#039;&#039;&#039;print_prime_consecutive&#039;&#039;&#039; primește un număr întreg &#039;&#039;&#039;n&#039;&#039;&#039; și afișează primele n perechi de numere naturale impare consecutive prime. Funcția începe cu numărul 3 și, utilizând o buclă &#039;&#039;&#039;while&#039;&#039;&#039;, verifică dacă numerele sunt prime și consecutive impare și le afișează în caz afirmativ. Dacă găsește o pereche, crește numărul de perechi găsite &#039;&#039;&#039;(count)&#039;&#039;&#039; cu 1 și trece la următorul număr.&lt;br /&gt;
&lt;br /&gt;
Funcția &#039;&#039;&#039;main&#039;&#039;&#039; începe prin a cere utilizatorului să introducă un număr întreg &#039;&#039;&#039;n&#039;&#039;&#039; și apoi verifică dacă acesta este valid utilizând funcția &#039;&#039;&#039;validare_date&#039;&#039;&#039;. Dacă numărul este valid, afișează mesajul &#039;&#039;&#039;Datele de intrare corespund restricțiilor impuse.&#039;&#039;&#039; și apoi utilizează funcția &#039;&#039;&#039;print_consecutive_primes&#039;&#039;&#039; pentru a afișa primele &#039;&#039;&#039;n&#039;&#039;&#039; perechi de numere naturale impare consecutive prime. Dacă numărul nu este valid, afișează mesajul &#039;&#039;&#039;Datele de intrare nu corespund restricțiilor impuse.&#039;&#039;&#039;&lt;/div&gt;</summary>
		<author><name>Diana Butuza</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=0434_-_Perechi_Prime&amp;diff=4294</id>
		<title>0434 - Perechi Prime</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=0434_-_Perechi_Prime&amp;diff=4294"/>
		<updated>2023-04-25T09:40:37Z</updated>

		<summary type="html">&lt;p&gt;Diana Butuza: /* Explicație rezolvare */&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;. Afișați primele &#039;&#039;&#039;n&#039;&#039;&#039; perechi de numere naturale impare consecutive 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 &#039;&#039;&#039;n&#039;&#039;&#039; primele perechi de numere naturale impare consecutive prime, câte o pereche pe linie, numerele dintr-o pereche fiind separate printr-un spațiu.&lt;br /&gt;
== Restricții și precizări ==&lt;br /&gt;
* 1 ≤ n ≤ 100&lt;br /&gt;
* pentru fiecare pereche p q afișată, p &amp;lt; q&lt;br /&gt;
== Exemplu ==&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;
: 3 5 &lt;br /&gt;
: 5 7 &lt;br /&gt;
: 11 13 &lt;br /&gt;
: 17 19 &lt;br /&gt;
: 29 31&lt;br /&gt;
&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
import math&lt;br /&gt;
&lt;br /&gt;
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;= 100:&lt;br /&gt;
            flag = True&lt;br /&gt;
    return flag&lt;br /&gt;
&lt;br /&gt;
def prim(numar):&lt;br /&gt;
    if numar &amp;lt; 2:&lt;br /&gt;
        return False&lt;br /&gt;
    for i in range(2, int(math.sqrt(numar))+1):&lt;br /&gt;
        if numar % i == 0:&lt;br /&gt;
            return False&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
def print_prime_consecutive(n):&lt;br /&gt;
    count = 0&lt;br /&gt;
    numar = 3&lt;br /&gt;
    while count &amp;lt; n:&lt;br /&gt;
        if prim(numar) and prim(numar+2):&lt;br /&gt;
            print(numar, numar+2)&lt;br /&gt;
            count += 1&lt;br /&gt;
        numar += 2&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    numar = input(&amp;quot;Introduceți numărul n: &amp;quot;)&lt;br /&gt;
    if validare_date(numar):&lt;br /&gt;
        n = int(numar)&lt;br /&gt;
        print(&amp;quot;\nDatele de intrare corespund restricțiilor impuse.\n&amp;quot;)&lt;br /&gt;
        print(&amp;quot;Primele&amp;quot;, n, &amp;quot;perechi de numere naturale impare consecutive prime sunt:&amp;quot;)&lt;br /&gt;
        print_prime_consecutive(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 rezolvare==&lt;br /&gt;
Funcția &#039;&#039;&#039;validare_date&#039;&#039;&#039; primește un număr sub formă de șir de caractere și returnează o valoare booleană, &#039;&#039;&#039;True&#039;&#039;&#039; dacă numărul este un număr natural între &#039;&#039;&#039;0 și 100&#039;&#039;&#039;, inclusiv, altfel returnează &#039;&#039;&#039;False&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Funcția &#039;&#039;&#039;is_prime&#039;&#039;&#039; primește un număr și returnează o valoare booleană, &#039;&#039;&#039;True&#039;&#039;&#039; dacă numărul este prim, altfel returnează &#039;&#039;&#039;False&#039;&#039;&#039;. Funcția utilizează o buclă for care verifică dacă numărul este divizibil cu orice număr între 2 și rădăcina pătrată a numărului dat, iar dacă este, returnează &#039;&#039;&#039;False&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Funcția &#039;&#039;&#039;print_consecutive_primes&#039;&#039;&#039; primește un număr întreg &#039;&#039;&#039;n&#039;&#039;&#039; și afișează primele n perechi de numere naturale impare consecutive prime. Funcția începe cu numărul 3 și, utilizând o buclă &#039;&#039;&#039;while&#039;&#039;&#039;, verifică dacă numerele sunt prime și consecutive impare și le afișează în caz afirmativ. Dacă găsește o pereche, crește numărul de perechi găsite &#039;&#039;&#039;(count)&#039;&#039;&#039; cu 1 și trece la următorul număr.&lt;br /&gt;
&lt;br /&gt;
Funcția &#039;&#039;&#039;main&#039;&#039;&#039; începe prin a cere utilizatorului să introducă un număr întreg &#039;&#039;&#039;n&#039;&#039;&#039; și apoi verifică dacă acesta este valid utilizând funcția &#039;&#039;&#039;validare_date&#039;&#039;&#039;. Dacă numărul este valid, afișează mesajul &#039;&#039;&#039;Datele de intrare corespund restricțiilor impuse.&#039;&#039;&#039; și apoi utilizează funcția &#039;&#039;&#039;print_consecutive_primes&#039;&#039;&#039; pentru a afișa primele &#039;&#039;&#039;n&#039;&#039;&#039; perechi de numere naturale impare consecutive prime. Dacă numărul nu este valid, afișează mesajul &#039;&#039;&#039;Datele de intrare nu corespund restricțiilor impuse.&#039;&#039;&#039;&lt;/div&gt;</summary>
		<author><name>Diana Butuza</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=0434_-_Perechi_Prime&amp;diff=4293</id>
		<title>0434 - Perechi Prime</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=0434_-_Perechi_Prime&amp;diff=4293"/>
		<updated>2023-04-25T09:40:15Z</updated>

		<summary type="html">&lt;p&gt;Diana Butuza: /* Rezolvare */&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;. Afișați primele &#039;&#039;&#039;n&#039;&#039;&#039; perechi de numere naturale impare consecutive 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 &#039;&#039;&#039;n&#039;&#039;&#039; primele perechi de numere naturale impare consecutive prime, câte o pereche pe linie, numerele dintr-o pereche fiind separate printr-un spațiu.&lt;br /&gt;
== Restricții și precizări ==&lt;br /&gt;
* 1 ≤ n ≤ 100&lt;br /&gt;
* pentru fiecare pereche p q afișată, p &amp;lt; q&lt;br /&gt;
== Exemplu ==&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;
: 3 5 &lt;br /&gt;
: 5 7 &lt;br /&gt;
: 11 13 &lt;br /&gt;
: 17 19 &lt;br /&gt;
: 29 31&lt;br /&gt;
&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
import math&lt;br /&gt;
&lt;br /&gt;
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;= 100:&lt;br /&gt;
            flag = True&lt;br /&gt;
    return flag&lt;br /&gt;
&lt;br /&gt;
def prim(numar):&lt;br /&gt;
    if numar &amp;lt; 2:&lt;br /&gt;
        return False&lt;br /&gt;
    for i in range(2, int(math.sqrt(numar))+1):&lt;br /&gt;
        if numar % i == 0:&lt;br /&gt;
            return False&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
def print_prime_consecutive(n):&lt;br /&gt;
    count = 0&lt;br /&gt;
    numar = 3&lt;br /&gt;
    while count &amp;lt; n:&lt;br /&gt;
        if prim(numar) and prim(numar+2):&lt;br /&gt;
            print(numar, numar+2)&lt;br /&gt;
            count += 1&lt;br /&gt;
        numar += 2&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    numar = input(&amp;quot;Introduceți numărul n: &amp;quot;)&lt;br /&gt;
    if validare_date(numar):&lt;br /&gt;
        n = int(numar)&lt;br /&gt;
        print(&amp;quot;\nDatele de intrare corespund restricțiilor impuse.\n&amp;quot;)&lt;br /&gt;
        print(&amp;quot;Primele&amp;quot;, n, &amp;quot;perechi de numere naturale impare consecutive prime sunt:&amp;quot;)&lt;br /&gt;
        print_prime_consecutive(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 rezolvare==&lt;br /&gt;
Acest cod este un program Python care își propune să găsească primele &#039;&#039;&#039;n&#039;&#039;&#039; perechi de numere naturale impare consecutive prime.&lt;br /&gt;
&lt;br /&gt;
Funcția &#039;&#039;&#039;validare_date&#039;&#039;&#039; primește un număr sub formă de șir de caractere și returnează o valoare booleană, &#039;&#039;&#039;True&#039;&#039;&#039; dacă numărul este un număr natural între &#039;&#039;&#039;0 și 100&#039;&#039;&#039;, inclusiv, altfel returnează &#039;&#039;&#039;False&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Funcția &#039;&#039;&#039;is_prime&#039;&#039;&#039; primește un număr și returnează o valoare booleană, &#039;&#039;&#039;True&#039;&#039;&#039; dacă numărul este prim, altfel returnează &#039;&#039;&#039;False&#039;&#039;&#039;. Funcția utilizează o buclă for care verifică dacă numărul este divizibil cu orice număr între 2 și rădăcina pătrată a numărului dat, iar dacă este, returnează &#039;&#039;&#039;False&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Funcția &#039;&#039;&#039;print_consecutive_primes&#039;&#039;&#039; primește un număr întreg &#039;&#039;&#039;n&#039;&#039;&#039; și afișează primele n perechi de numere naturale impare consecutive prime. Funcția începe cu numărul 3 și, utilizând o buclă &#039;&#039;&#039;while&#039;&#039;&#039;, verifică dacă numerele sunt prime și consecutive impare și le afișează în caz afirmativ. Dacă găsește o pereche, crește numărul de perechi găsite &#039;&#039;&#039;(count)&#039;&#039;&#039; cu 1 și trece la următorul număr.&lt;br /&gt;
&lt;br /&gt;
Funcția &#039;&#039;&#039;main&#039;&#039;&#039; începe prin a cere utilizatorului să introducă un număr întreg &#039;&#039;&#039;n&#039;&#039;&#039; și apoi verifică dacă acesta este valid utilizând funcția &#039;&#039;&#039;validare_date&#039;&#039;&#039;. Dacă numărul este valid, afișează mesajul &#039;&#039;&#039;Datele de intrare corespund restricțiilor impuse.&#039;&#039;&#039; și apoi utilizează funcția &#039;&#039;&#039;print_consecutive_primes&#039;&#039;&#039; pentru a afișa primele &#039;&#039;&#039;n&#039;&#039;&#039; perechi de numere naturale impare consecutive prime. Dacă numărul nu este valid, afișează mesajul &#039;&#039;&#039;Datele de intrare nu corespund restricțiilor impuse.&#039;&#039;&#039;&lt;/div&gt;</summary>
		<author><name>Diana Butuza</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=0434_-_Perechi_Prime&amp;diff=4289</id>
		<title>0434 - Perechi Prime</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=0434_-_Perechi_Prime&amp;diff=4289"/>
		<updated>2023-04-25T09:36:46Z</updated>

		<summary type="html">&lt;p&gt;Diana Butuza: /* Rezolvare */&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;. Afișați primele &#039;&#039;&#039;n&#039;&#039;&#039; perechi de numere naturale impare consecutive 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 &#039;&#039;&#039;n&#039;&#039;&#039; primele perechi de numere naturale impare consecutive prime, câte o pereche pe linie, numerele dintr-o pereche fiind separate printr-un spațiu.&lt;br /&gt;
== Restricții și precizări ==&lt;br /&gt;
* 1 ≤ n ≤ 100&lt;br /&gt;
* pentru fiecare pereche p q afișată, p &amp;lt; q&lt;br /&gt;
== Exemplu ==&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;
: 3 5 &lt;br /&gt;
: 5 7 &lt;br /&gt;
: 11 13 &lt;br /&gt;
: 17 19 &lt;br /&gt;
: 29 31&lt;br /&gt;
&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
import math&lt;br /&gt;
&lt;br /&gt;
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;= 100:&lt;br /&gt;
            flag = True&lt;br /&gt;
    return flag&lt;br /&gt;
&lt;br /&gt;
def is_prime(numar):&lt;br /&gt;
    if numar &amp;lt; 2:&lt;br /&gt;
        return False&lt;br /&gt;
    for i in range(2, int(math.sqrt(numar))+1):&lt;br /&gt;
        if numar % i == 0:&lt;br /&gt;
            return False&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
def print_consecutive_primes(n):&lt;br /&gt;
    count = 0&lt;br /&gt;
    numar = 3&lt;br /&gt;
    while count &amp;lt; n:&lt;br /&gt;
        if is_prime(numar) and is_prime(numar+2):&lt;br /&gt;
            print(numar, numar+2)&lt;br /&gt;
            count += 1&lt;br /&gt;
        numar += 2&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    numar = input(&amp;quot;Introduceți numărul n: &amp;quot;)&lt;br /&gt;
    if validare_date(numar):&lt;br /&gt;
        n = int(numar)&lt;br /&gt;
        print(&amp;quot;\nDatele de intrare corespund restricțiilor impuse.\n&amp;quot;)&lt;br /&gt;
        print(&amp;quot;Primele&amp;quot;, n, &amp;quot;perechi de numere naturale impare consecutive prime sunt:&amp;quot;)&lt;br /&gt;
        print_consecutive_primes(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 rezolvare==&lt;br /&gt;
Acest cod este un program Python care își propune să găsească primele &#039;&#039;&#039;n&#039;&#039;&#039; perechi de numere naturale impare consecutive prime.&lt;br /&gt;
&lt;br /&gt;
Funcția &#039;&#039;&#039;validare_date&#039;&#039;&#039; primește un număr sub formă de șir de caractere și returnează o valoare booleană, &#039;&#039;&#039;True&#039;&#039;&#039; dacă numărul este un număr natural între &#039;&#039;&#039;0 și 100&#039;&#039;&#039;, inclusiv, altfel returnează &#039;&#039;&#039;False&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Funcția &#039;&#039;&#039;is_prime&#039;&#039;&#039; primește un număr și returnează o valoare booleană, &#039;&#039;&#039;True&#039;&#039;&#039; dacă numărul este prim, altfel returnează &#039;&#039;&#039;False&#039;&#039;&#039;. Funcția utilizează o buclă for care verifică dacă numărul este divizibil cu orice număr între 2 și rădăcina pătrată a numărului dat, iar dacă este, returnează &#039;&#039;&#039;False&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Funcția &#039;&#039;&#039;print_consecutive_primes&#039;&#039;&#039; primește un număr întreg &#039;&#039;&#039;n&#039;&#039;&#039; și afișează primele n perechi de numere naturale impare consecutive prime. Funcția începe cu numărul 3 și, utilizând o buclă &#039;&#039;&#039;while&#039;&#039;&#039;, verifică dacă numerele sunt prime și consecutive impare și le afișează în caz afirmativ. Dacă găsește o pereche, crește numărul de perechi găsite &#039;&#039;&#039;(count)&#039;&#039;&#039; cu 1 și trece la următorul număr.&lt;br /&gt;
&lt;br /&gt;
Funcția &#039;&#039;&#039;main&#039;&#039;&#039; începe prin a cere utilizatorului să introducă un număr întreg &#039;&#039;&#039;n&#039;&#039;&#039; și apoi verifică dacă acesta este valid utilizând funcția &#039;&#039;&#039;validare_date&#039;&#039;&#039;. Dacă numărul este valid, afișează mesajul &#039;&#039;&#039;Datele de intrare corespund restricțiilor impuse.&#039;&#039;&#039; și apoi utilizează funcția &#039;&#039;&#039;print_consecutive_primes&#039;&#039;&#039; pentru a afișa primele &#039;&#039;&#039;n&#039;&#039;&#039; perechi de numere naturale impare consecutive prime. Dacă numărul nu este valid, afișează mesajul &#039;&#039;&#039;Datele de intrare nu corespund restricțiilor impuse.&#039;&#039;&#039;&lt;/div&gt;</summary>
		<author><name>Diana Butuza</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=0434_-_Perechi_Prime&amp;diff=4288</id>
		<title>0434 - Perechi Prime</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=0434_-_Perechi_Prime&amp;diff=4288"/>
		<updated>2023-04-25T09:36:26Z</updated>

		<summary type="html">&lt;p&gt;Diana Butuza: /* Exemplu */&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;. Afișați primele &#039;&#039;&#039;n&#039;&#039;&#039; perechi de numere naturale impare consecutive 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 &#039;&#039;&#039;n&#039;&#039;&#039; primele perechi de numere naturale impare consecutive prime, câte o pereche pe linie, numerele dintr-o pereche fiind separate printr-un spațiu.&lt;br /&gt;
== Restricții și precizări ==&lt;br /&gt;
* 1 ≤ n ≤ 100&lt;br /&gt;
* pentru fiecare pereche p q afișată, p &amp;lt; q&lt;br /&gt;
== Exemplu ==&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;
: 3 5 &lt;br /&gt;
: 5 7 &lt;br /&gt;
: 11 13 &lt;br /&gt;
: 17 19 &lt;br /&gt;
: 29 31&lt;br /&gt;
&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
import math&lt;br /&gt;
&lt;br /&gt;
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;= 100:&lt;br /&gt;
            flag = True&lt;br /&gt;
    return flag&lt;br /&gt;
&lt;br /&gt;
def is_prime(numar):&lt;br /&gt;
    if numar &amp;lt; 2:&lt;br /&gt;
        return False&lt;br /&gt;
    for i in range(2, int(math.sqrt(numar))+1):&lt;br /&gt;
        if numar % i == 0:&lt;br /&gt;
            return False&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
def print_consecutive_primes(n):&lt;br /&gt;
    count = 0&lt;br /&gt;
    numar = 3&lt;br /&gt;
    while count &amp;lt; n:&lt;br /&gt;
        if is_prime(numar) and is_prime(numar+2):&lt;br /&gt;
            print(numar, numar+2)&lt;br /&gt;
            count += 1&lt;br /&gt;
        numar += 2&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
    numar = input(&amp;quot;Introduceți numărul n: &amp;quot;)&lt;br /&gt;
    if validare_date(numar):&lt;br /&gt;
        n = int(numar)&lt;br /&gt;
        print(&amp;quot;\nDatele de intrare corespund restricțiilor impuse.\n&amp;quot;)&lt;br /&gt;
        print(&amp;quot;Primele&amp;quot;, n, &amp;quot;perechi de numere naturale impare consecutive prime sunt:&amp;quot;)&lt;br /&gt;
        print_consecutive_primes(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;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    main()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
==Explicație rezolvare==&lt;br /&gt;
Acest cod este un program Python care își propune să găsească primele &#039;&#039;&#039;n&#039;&#039;&#039; perechi de numere naturale impare consecutive prime.&lt;br /&gt;
&lt;br /&gt;
Funcția &#039;&#039;&#039;validare_date&#039;&#039;&#039; primește un număr sub formă de șir de caractere și returnează o valoare booleană, &#039;&#039;&#039;True&#039;&#039;&#039; dacă numărul este un număr natural între &#039;&#039;&#039;0 și 100&#039;&#039;&#039;, inclusiv, altfel returnează &#039;&#039;&#039;False&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Funcția &#039;&#039;&#039;is_prime&#039;&#039;&#039; primește un număr și returnează o valoare booleană, &#039;&#039;&#039;True&#039;&#039;&#039; dacă numărul este prim, altfel returnează &#039;&#039;&#039;False&#039;&#039;&#039;. Funcția utilizează o buclă for care verifică dacă numărul este divizibil cu orice număr între 2 și rădăcina pătrată a numărului dat, iar dacă este, returnează &#039;&#039;&#039;False&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Funcția &#039;&#039;&#039;print_consecutive_primes&#039;&#039;&#039; primește un număr întreg &#039;&#039;&#039;n&#039;&#039;&#039; și afișează primele n perechi de numere naturale impare consecutive prime. Funcția începe cu numărul 3 și, utilizând o buclă &#039;&#039;&#039;while&#039;&#039;&#039;, verifică dacă numerele sunt prime și consecutive impare și le afișează în caz afirmativ. Dacă găsește o pereche, crește numărul de perechi găsite &#039;&#039;&#039;(count)&#039;&#039;&#039; cu 1 și trece la următorul număr.&lt;br /&gt;
&lt;br /&gt;
Funcția &#039;&#039;&#039;main&#039;&#039;&#039; începe prin a cere utilizatorului să introducă un număr întreg &#039;&#039;&#039;n&#039;&#039;&#039; și apoi verifică dacă acesta este valid utilizând funcția &#039;&#039;&#039;validare_date&#039;&#039;&#039;. Dacă numărul este valid, afișează mesajul &#039;&#039;&#039;Datele de intrare corespund restricțiilor impuse.&#039;&#039;&#039; și apoi utilizează funcția &#039;&#039;&#039;print_consecutive_primes&#039;&#039;&#039; pentru a afișa primele &#039;&#039;&#039;n&#039;&#039;&#039; perechi de numere naturale impare consecutive prime. Dacă numărul nu este valid, afișează mesajul &#039;&#039;&#039;Datele de intrare nu corespund restricțiilor impuse.&#039;&#039;&#039;&lt;/div&gt;</summary>
		<author><name>Diana Butuza</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=3081_-_Truncatable_Left&amp;diff=3367</id>
		<title>3081 - Truncatable Left</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=3081_-_Truncatable_Left&amp;diff=3367"/>
		<updated>2023-04-10T09:46:59Z</updated>

		<summary type="html">&lt;p&gt;Diana Butuza: /* Explicație rezolvare */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cerinţa ==&lt;br /&gt;
Un număr prim se numește &#039;&#039;&#039;trunchiabil-stânga&#039;&#039;&#039; dacă, prin eliminare repetată a primei cifre, toate numerele rezultate sunt prime.&lt;br /&gt;
Se dă un număr natural, să se verifice dacă numărul este prim &#039;&#039;&#039;trunchiabil-stânga&#039;&#039;&#039;.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Programul citește un număr natural nenul &#039;&#039;&#039;n&#039;&#039;&#039;.&lt;br /&gt;
== Date de ieşire ==&lt;br /&gt;
Programul va afișa &#039;&#039;&#039;DA&#039;&#039;&#039; dacă &#039;&#039;&#039;n&#039;&#039;&#039; este prim &#039;&#039;&#039;trunchiabil-stânga&#039;&#039;&#039;, altfel va afișa &#039;&#039;&#039;NU&#039;&#039;&#039;.&lt;br /&gt;
== Restricții și precizări ==&lt;br /&gt;
* n este mai mic decât 1.000.000.&lt;br /&gt;
* Cel mai mare prim trunchiabil-stânga este 357686312646216567629137.&lt;br /&gt;
&lt;br /&gt;
== Exemplu ==&lt;br /&gt;
; Intrare&lt;br /&gt;
:1223&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;
Exemplu 1: 1223 e prim. Eliminăm 1, 223 e prim. Eliminăm 2, 23 e prim. Eliminăm 2, 3 e prim.&lt;br /&gt;
Deci, numărul 1223 e prim trunchiabil-stânga.&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 este_prim(numar):&lt;br /&gt;
    if numar &amp;lt; 2:&lt;br /&gt;
        return False&lt;br /&gt;
    for i in range(2, int(numar**0.5) + 1):&lt;br /&gt;
        if numar % i == 0:&lt;br /&gt;
            return False&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
def prim_trunchiabil_stanga(numar):&lt;br /&gt;
    while numar &amp;gt; 0:&lt;br /&gt;
        if not este_prim(numar):&lt;br /&gt;
            return False&lt;br /&gt;
        numar = numar % (10 ** (len(str(numar))-1))&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    numar = input(&amp;quot;Introduceti un numar natural: &amp;quot;)&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 = int(numar)&lt;br /&gt;
        if prim_trunchiabil_stanga(numar):&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;
    else:&lt;br /&gt;
        print(&amp;quot;Datele de intrare nu corespund restricțiilor impuse.&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Explicație rezolvare==&lt;br /&gt;
Acest cod reprezintă un program care verifică dacă un număr natural dat este un număr prim trunchiabil stânga.&lt;br /&gt;
&lt;br /&gt;
Funcția &#039;&#039;&#039;validare_date&#039;&#039;&#039; verifică dacă numărul dat este un șir de cifre și dacă valoarea sa se află în intervalul [0, 1000000000].&lt;br /&gt;
&lt;br /&gt;
Funcția &#039;&#039;&#039;este_prim&#039;&#039;&#039; verifică dacă un număr dat este prim sau nu, folosind metoda de testare a divizibilității.&lt;br /&gt;
&lt;br /&gt;
Funcția &#039;&#039;&#039;prim_trunchiabil_stanga&#039;&#039;&#039; verifică dacă un număr dat este un număr prim trunchiabil stânga sau nu. În cazul în care numărul nu este prim, se returnează &#039;&#039;&#039;False&#039;&#039;&#039;. Dacă numărul este prim, se elimină ultima cifră și se continuă cu verificarea până când se ajunge la o singură cifră, moment în care se returnează &#039;&#039;&#039;True&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
În cazul în care numărul dat de la tastatură trece validarea, programul afișează &#039;&#039;&#039;Datele de intrare corespund restricțiilor impuse&#039;&#039;&#039; și convertește valoarea la un număr întreg, apoi utilizează funcția &#039;&#039;&#039;prim_trunchiabil_stanga&#039;&#039;&#039; pentru a verifica dacă numărul dat este un număr prim trunchiabil stânga. Dacă este, programul afișează &#039;&#039;&#039;DA&#039;&#039;&#039;, altfel afișează &#039;&#039;&#039;NU&#039;&#039;&#039;. În caz contrar, dacă numărul nu este valid, programul afișează &#039;&#039;&#039;Datele de intrare nu corespund restricțiilor impuse&#039;&#039;&#039;.&lt;/div&gt;</summary>
		<author><name>Diana Butuza</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=3081_-_Truncatable_Left&amp;diff=3366</id>
		<title>3081 - Truncatable Left</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=3081_-_Truncatable_Left&amp;diff=3366"/>
		<updated>2023-04-10T09:45:37Z</updated>

		<summary type="html">&lt;p&gt;Diana Butuza: /* Rezolvare */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cerinţa ==&lt;br /&gt;
Un număr prim se numește &#039;&#039;&#039;trunchiabil-stânga&#039;&#039;&#039; dacă, prin eliminare repetată a primei cifre, toate numerele rezultate sunt prime.&lt;br /&gt;
Se dă un număr natural, să se verifice dacă numărul este prim &#039;&#039;&#039;trunchiabil-stânga&#039;&#039;&#039;.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Programul citește un număr natural nenul &#039;&#039;&#039;n&#039;&#039;&#039;.&lt;br /&gt;
== Date de ieşire ==&lt;br /&gt;
Programul va afișa &#039;&#039;&#039;DA&#039;&#039;&#039; dacă &#039;&#039;&#039;n&#039;&#039;&#039; este prim &#039;&#039;&#039;trunchiabil-stânga&#039;&#039;&#039;, altfel va afișa &#039;&#039;&#039;NU&#039;&#039;&#039;.&lt;br /&gt;
== Restricții și precizări ==&lt;br /&gt;
* n este mai mic decât 1.000.000.&lt;br /&gt;
* Cel mai mare prim trunchiabil-stânga este 357686312646216567629137.&lt;br /&gt;
&lt;br /&gt;
== Exemplu ==&lt;br /&gt;
; Intrare&lt;br /&gt;
:1223&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;
Exemplu 1: 1223 e prim. Eliminăm 1, 223 e prim. Eliminăm 2, 23 e prim. Eliminăm 2, 3 e prim.&lt;br /&gt;
Deci, numărul 1223 e prim trunchiabil-stânga.&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 este_prim(numar):&lt;br /&gt;
    if numar &amp;lt; 2:&lt;br /&gt;
        return False&lt;br /&gt;
    for i in range(2, int(numar**0.5) + 1):&lt;br /&gt;
        if numar % i == 0:&lt;br /&gt;
            return False&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
def prim_trunchiabil_stanga(numar):&lt;br /&gt;
    while numar &amp;gt; 0:&lt;br /&gt;
        if not este_prim(numar):&lt;br /&gt;
            return False&lt;br /&gt;
        numar = numar % (10 ** (len(str(numar))-1))&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    numar = input(&amp;quot;Introduceti un numar natural: &amp;quot;)&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 = int(numar)&lt;br /&gt;
        if prim_trunchiabil_stanga(numar):&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;
    else:&lt;br /&gt;
        print(&amp;quot;Datele de intrare nu corespund restricțiilor impuse.&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Explicație rezolvare==&lt;br /&gt;
Acest cod reprezintă un program care verifică dacă un număr natural dat este un număr prim trunchiabil stânga.&lt;br /&gt;
&lt;br /&gt;
Funcția &#039;&#039;&#039;validare_date&#039;&#039;&#039; verifică dacă numărul dat este un șir de cifre și dacă valoarea sa se află în intervalul [0, 1000000000].&lt;br /&gt;
&lt;br /&gt;
Funcția &#039;&#039;&#039;is_prime&#039;&#039;&#039; verifică dacă un număr dat este prim sau nu, folosind metoda de testare a divizibilității.&lt;br /&gt;
&lt;br /&gt;
Funcția &#039;&#039;&#039;is_left_truncatable_prime&#039;&#039;&#039; verifică dacă un număr dat este un număr prim trunchiabil stânga sau nu. În cazul în care numărul nu este prim, se returnează &#039;&#039;&#039;False&#039;&#039;&#039;. Dacă numărul este prim, se elimină ultima cifră și se continuă cu verificarea până când se ajunge la o singură cifră, moment în care se returnează &#039;&#039;&#039;True&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
În cazul în care numărul dat de la tastatură trece validarea, programul afișează &#039;&#039;&#039;Datele de intrare corespund restricțiilor impuse&#039;&#039;&#039; și converteste valoarea la un număr întreg, apoi utilizează funcția &#039;&#039;&#039;is_left_truncatable_prime&#039;&#039;&#039; pentru a verifica dacă numărul dat este un număr prim trunchiabil stânga. Dacă este, programul afișează &#039;&#039;&#039;DA&#039;&#039;&#039;, altfel afișează &#039;&#039;&#039;NU&#039;&#039;&#039;. În caz contrar, dacă numărul nu este valid, programul afișează &#039;&#039;&#039;Datele de intrare nu corespund restricțiilor impuse&#039;&#039;&#039;.&lt;/div&gt;</summary>
		<author><name>Diana Butuza</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=3081_-_Truncatable_Left&amp;diff=3365</id>
		<title>3081 - Truncatable Left</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=3081_-_Truncatable_Left&amp;diff=3365"/>
		<updated>2023-04-10T09:42:22Z</updated>

		<summary type="html">&lt;p&gt;Diana Butuza: /* Restricții și precizări */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cerinţa ==&lt;br /&gt;
Un număr prim se numește &#039;&#039;&#039;trunchiabil-stânga&#039;&#039;&#039; dacă, prin eliminare repetată a primei cifre, toate numerele rezultate sunt prime.&lt;br /&gt;
Se dă un număr natural, să se verifice dacă numărul este prim &#039;&#039;&#039;trunchiabil-stânga&#039;&#039;&#039;.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Programul citește un număr natural nenul &#039;&#039;&#039;n&#039;&#039;&#039;.&lt;br /&gt;
== Date de ieşire ==&lt;br /&gt;
Programul va afișa &#039;&#039;&#039;DA&#039;&#039;&#039; dacă &#039;&#039;&#039;n&#039;&#039;&#039; este prim &#039;&#039;&#039;trunchiabil-stânga&#039;&#039;&#039;, altfel va afișa &#039;&#039;&#039;NU&#039;&#039;&#039;.&lt;br /&gt;
== Restricții și precizări ==&lt;br /&gt;
* n este mai mic decât 1.000.000.&lt;br /&gt;
* Cel mai mare prim trunchiabil-stânga este 357686312646216567629137.&lt;br /&gt;
&lt;br /&gt;
== Exemplu ==&lt;br /&gt;
; Intrare&lt;br /&gt;
:1223&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;
Exemplu 1: 1223 e prim. Eliminăm 1, 223 e prim. Eliminăm 2, 23 e prim. Eliminăm 2, 3 e prim.&lt;br /&gt;
Deci, numărul 1223 e prim trunchiabil-stânga.&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 is_prime(numar):&lt;br /&gt;
    if numar &amp;lt; 2:&lt;br /&gt;
        return False&lt;br /&gt;
    for i in range(2, int(numar**0.5) + 1):&lt;br /&gt;
        if numar % i == 0:&lt;br /&gt;
            return False&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
def is_left_truncatable_prime(numar):&lt;br /&gt;
    while numar &amp;gt; 0:&lt;br /&gt;
        if not is_prime(numar):&lt;br /&gt;
            return False&lt;br /&gt;
        numar = numar % (10 ** (len(str(numar))-1))&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    numar = input(&amp;quot;Introduceti un numar natural: &amp;quot;)&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 = int(numar)&lt;br /&gt;
        if is_left_truncatable_prime(numar):&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;
    else:&lt;br /&gt;
        print(&amp;quot;Datele de intrare nu corespund restricțiilor impuse.&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
==Explicație rezolvare==&lt;br /&gt;
Acest cod reprezintă un program care verifică dacă un număr natural dat este un număr prim trunchiabil stânga.&lt;br /&gt;
&lt;br /&gt;
Funcția &#039;&#039;&#039;validare_date&#039;&#039;&#039; verifică dacă numărul dat este un șir de cifre și dacă valoarea sa se află în intervalul [0, 1000000000].&lt;br /&gt;
&lt;br /&gt;
Funcția &#039;&#039;&#039;is_prime&#039;&#039;&#039; verifică dacă un număr dat este prim sau nu, folosind metoda de testare a divizibilității.&lt;br /&gt;
&lt;br /&gt;
Funcția &#039;&#039;&#039;is_left_truncatable_prime&#039;&#039;&#039; verifică dacă un număr dat este un număr prim trunchiabil stânga sau nu. În cazul în care numărul nu este prim, se returnează &#039;&#039;&#039;False&#039;&#039;&#039;. Dacă numărul este prim, se elimină ultima cifră și se continuă cu verificarea până când se ajunge la o singură cifră, moment în care se returnează &#039;&#039;&#039;True&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
În cazul în care numărul dat de la tastatură trece validarea, programul afișează &#039;&#039;&#039;Datele de intrare corespund restricțiilor impuse&#039;&#039;&#039; și converteste valoarea la un număr întreg, apoi utilizează funcția &#039;&#039;&#039;is_left_truncatable_prime&#039;&#039;&#039; pentru a verifica dacă numărul dat este un număr prim trunchiabil stânga. Dacă este, programul afișează &#039;&#039;&#039;DA&#039;&#039;&#039;, altfel afișează &#039;&#039;&#039;NU&#039;&#039;&#039;. În caz contrar, dacă numărul nu este valid, programul afișează &#039;&#039;&#039;Datele de intrare nu corespund restricțiilor impuse&#039;&#039;&#039;.&lt;/div&gt;</summary>
		<author><name>Diana Butuza</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=0116_-_Medie_Prime&amp;diff=3364</id>
		<title>0116 - Medie Prime</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=0116_-_Medie_Prime&amp;diff=3364"/>
		<updated>2023-04-10T09:41:46Z</updated>

		<summary type="html">&lt;p&gt;Diana Butuza: /* Explicație rezolvare */&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;numar&#039;&#039;&#039; şi apoi un şir de &#039;&#039;&#039;n&#039;&#039;&#039; numere naturale şi determină media aritmetică a celor prime.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Programul citește de la tastatură numărul &#039;&#039;&#039;numar&#039;&#039;&#039;, iar apoi &#039;&#039;&#039;n&#039;&#039;&#039; numere naturale..&lt;br /&gt;
== Date de ieşire ==&lt;br /&gt;
Programul afișează pe ecran numărul &#039;&#039;&#039;M&#039;&#039;&#039;, reprezentând media aritmetică a valorilor prime.&lt;br /&gt;
&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;
* cele n numere citite vor fi mai mici decât 10000&lt;br /&gt;
*rezultatul se va afişa cu cel puțin două zecimale exacte&lt;br /&gt;
*printre cele n numere va exista cel puțin un număr prim&lt;br /&gt;
&lt;br /&gt;
== Exemplu ==&lt;br /&gt;
; Intrare&lt;br /&gt;
: 5&lt;br /&gt;
: 8 7 5 9 11&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele de intrare corespund restricțiilor impuse.&lt;br /&gt;
: 7.666666666666667&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(numar):&lt;br /&gt;
    if numar.isdigit():&lt;br /&gt;
        if 0 &amp;lt;= int(numar) &amp;lt;= 1000:&lt;br /&gt;
            return True&lt;br /&gt;
    return False&lt;br /&gt;
&lt;br /&gt;
def validare_date_numere(n):&lt;br /&gt;
    if n.isdigit():&lt;br /&gt;
        if 0 &amp;lt;= int(n) &amp;lt;= 10000:&lt;br /&gt;
            return True&lt;br /&gt;
    return False&lt;br /&gt;
&lt;br /&gt;
def este_prim(numar):&lt;br /&gt;
    if numar &amp;lt; 2:&lt;br /&gt;
        return False&lt;br /&gt;
    for i in range(2, int(numar ** 0.5) + 1):&lt;br /&gt;
        if numar % i == 0:&lt;br /&gt;
            return False&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
def lista_numere_prime(numere):&lt;br /&gt;
    numere_prime = [numar for numar in numere if este_prim(numar)]&lt;br /&gt;
    if len(numere_prime) &amp;gt; 0:&lt;br /&gt;
        return sum(numere_prime) / len(numere_prime)&lt;br /&gt;
    else:&lt;br /&gt;
        return None&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    n = input(&amp;quot;Introduceti numarul de elemente: &amp;quot;)&lt;br /&gt;
    if validare_date_numere(n):&lt;br /&gt;
        print(&amp;quot;Datele de intrare corespund restricțiilor impuse.&amp;quot;)&lt;br /&gt;
        numere = list(map(int, input(&amp;quot;Introduceti numerele: &amp;quot;).split()))&lt;br /&gt;
        if validare_date_numere(str(len(numere))):&lt;br /&gt;
            print(&amp;quot;Datele de intrare corespund restricțiilor impuse.&amp;quot;)&lt;br /&gt;
            rezultat = lista_numere_prime(numere)&lt;br /&gt;
            if rezultat is not None:&lt;br /&gt;
                print(&amp;quot;Media aritmetica a numerelor prime din lista este:&amp;quot;, rezultat)&lt;br /&gt;
            else:&lt;br /&gt;
                print(&amp;quot;Nu exista numere prime in lista!&amp;quot;)&lt;br /&gt;
        else:&lt;br /&gt;
            print(&amp;quot;Numarul de numere introdus nu corespunde cu numarul specificat anterior.&amp;quot;)&lt;br /&gt;
    else:&lt;br /&gt;
        print(&amp;quot;Numarul de elemente introdus nu corespunde cu restrictiile impuse.&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Explicație rezolvare==&lt;br /&gt;
Programul începe prin definirea a trei funcții:&lt;br /&gt;
&lt;br /&gt;
1.&#039;&#039;&#039;validare_date_numar(numar)&#039;&#039;&#039;: Această funcție verifică dacă un șir de caractere numar dat poate fi convertit la un număr întreg între 0 și 1000. Ea returnează &#039;&#039;&#039;True&#039;&#039;&#039; dacă condiția este satisfăcută și &#039;&#039;&#039;False&#039;&#039;&#039; în caz contrar.&lt;br /&gt;
&lt;br /&gt;
2.&#039;&#039;&#039;validare_date_numere(n)&#039;&#039;&#039;: Această funcție verifică dacă un șir de caractere n dat poate fi convertit la un număr întreg între 0 și 10000. Ea returnează &#039;&#039;&#039;True&#039;&#039;&#039; dacă condiția este satisfăcută și &#039;&#039;&#039;False&#039;&#039;&#039; în caz contrar.&lt;br /&gt;
&lt;br /&gt;
3.&#039;&#039;&#039;este_prim(numar)&#039;&#039;&#039;: Această funcție verifică dacă un număr întreg dat numar este un număr prim. Ea returnează &#039;&#039;&#039;True&#039;&#039;&#039; dacă numărul este prim și &#039;&#039;&#039;False&#039;&#039;&#039; în caz contrar.&lt;br /&gt;
&lt;br /&gt;
După definirea acestor funcții, se verifică dacă introducerea primită de la utilizator este validă, apoi calculează media aritmetică a numerelor prime din lista utilizând funcția &#039;&#039;&#039;lista_numere_prime&#039;&#039;&#039;. Dacă nu există numere prime în listă, se returnează un mesaj care indică acest lucru.&lt;/div&gt;</summary>
		<author><name>Diana Butuza</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=0116_-_Medie_Prime&amp;diff=3363</id>
		<title>0116 - Medie Prime</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=0116_-_Medie_Prime&amp;diff=3363"/>
		<updated>2023-04-10T09:40:27Z</updated>

		<summary type="html">&lt;p&gt;Diana Butuza: /* Rezolvare */&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;numar&#039;&#039;&#039; şi apoi un şir de &#039;&#039;&#039;n&#039;&#039;&#039; numere naturale şi determină media aritmetică a celor prime.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Programul citește de la tastatură numărul &#039;&#039;&#039;numar&#039;&#039;&#039;, iar apoi &#039;&#039;&#039;n&#039;&#039;&#039; numere naturale..&lt;br /&gt;
== Date de ieşire ==&lt;br /&gt;
Programul afișează pe ecran numărul &#039;&#039;&#039;M&#039;&#039;&#039;, reprezentând media aritmetică a valorilor prime.&lt;br /&gt;
&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;
* cele n numere citite vor fi mai mici decât 10000&lt;br /&gt;
*rezultatul se va afişa cu cel puțin două zecimale exacte&lt;br /&gt;
*printre cele n numere va exista cel puțin un număr prim&lt;br /&gt;
&lt;br /&gt;
== Exemplu ==&lt;br /&gt;
; Intrare&lt;br /&gt;
: 5&lt;br /&gt;
: 8 7 5 9 11&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele de intrare corespund restricțiilor impuse.&lt;br /&gt;
: 7.666666666666667&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(numar):&lt;br /&gt;
    if numar.isdigit():&lt;br /&gt;
        if 0 &amp;lt;= int(numar) &amp;lt;= 1000:&lt;br /&gt;
            return True&lt;br /&gt;
    return False&lt;br /&gt;
&lt;br /&gt;
def validare_date_numere(n):&lt;br /&gt;
    if n.isdigit():&lt;br /&gt;
        if 0 &amp;lt;= int(n) &amp;lt;= 10000:&lt;br /&gt;
            return True&lt;br /&gt;
    return False&lt;br /&gt;
&lt;br /&gt;
def este_prim(numar):&lt;br /&gt;
    if numar &amp;lt; 2:&lt;br /&gt;
        return False&lt;br /&gt;
    for i in range(2, int(numar ** 0.5) + 1):&lt;br /&gt;
        if numar % i == 0:&lt;br /&gt;
            return False&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
def lista_numere_prime(numere):&lt;br /&gt;
    numere_prime = [numar for numar in numere if este_prim(numar)]&lt;br /&gt;
    if len(numere_prime) &amp;gt; 0:&lt;br /&gt;
        return sum(numere_prime) / len(numere_prime)&lt;br /&gt;
    else:&lt;br /&gt;
        return None&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    n = input(&amp;quot;Introduceti numarul de elemente: &amp;quot;)&lt;br /&gt;
    if validare_date_numere(n):&lt;br /&gt;
        print(&amp;quot;Datele de intrare corespund restricțiilor impuse.&amp;quot;)&lt;br /&gt;
        numere = list(map(int, input(&amp;quot;Introduceti numerele: &amp;quot;).split()))&lt;br /&gt;
        if validare_date_numere(str(len(numere))):&lt;br /&gt;
            print(&amp;quot;Datele de intrare corespund restricțiilor impuse.&amp;quot;)&lt;br /&gt;
            rezultat = lista_numere_prime(numere)&lt;br /&gt;
            if rezultat is not None:&lt;br /&gt;
                print(&amp;quot;Media aritmetica a numerelor prime din lista este:&amp;quot;, rezultat)&lt;br /&gt;
            else:&lt;br /&gt;
                print(&amp;quot;Nu exista numere prime in lista!&amp;quot;)&lt;br /&gt;
        else:&lt;br /&gt;
            print(&amp;quot;Numarul de numere introdus nu corespunde cu numarul specificat anterior.&amp;quot;)&lt;br /&gt;
    else:&lt;br /&gt;
        print(&amp;quot;Numarul de elemente introdus nu corespunde cu restrictiile impuse.&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Explicație rezolvare==&lt;br /&gt;
Programul începe prin definirea a trei funcții:&lt;br /&gt;
&lt;br /&gt;
1.&#039;&#039;&#039;validare_date_numar(numar)&#039;&#039;&#039;: Această funcție verifică dacă un șir de caractere numar dat poate fi convertit la un număr întreg între 0 și 1000. Ea returnează &#039;&#039;&#039;True&#039;&#039;&#039; dacă condiția este satisfăcută și &#039;&#039;&#039;False&#039;&#039;&#039; în caz contrar.&lt;br /&gt;
&lt;br /&gt;
2.&#039;&#039;&#039;validare_date_numere(n)&#039;&#039;&#039;: Această funcție verifică dacă un șir de caractere n dat poate fi convertit la un număr întreg între 0 și 10000. Ea returnează &#039;&#039;&#039;True&#039;&#039;&#039; dacă condiția este satisfăcută și &#039;&#039;&#039;False&#039;&#039;&#039; în caz contrar.&lt;br /&gt;
&lt;br /&gt;
3.&#039;&#039;&#039;is_prime(numar)&#039;&#039;&#039;: Această funcție verifică dacă un număr întreg dat numar este un număr prim. Ea returnează &#039;&#039;&#039;True&#039;&#039;&#039; dacă numărul este prim și &#039;&#039;&#039;False&#039;&#039;&#039; în caz contrar.&lt;br /&gt;
&lt;br /&gt;
După definirea acestor funcții, se verifică dacă introducerea primită de la utilizator este validă, apoi calculează media aritmetică a numerelor prime din lista utilizând funcția &#039;&#039;&#039;avg_prime&#039;&#039;&#039;. Dacă nu există numere prime în listă, se returnează un mesaj care indică acest lucru.&lt;/div&gt;</summary>
		<author><name>Diana Butuza</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=0116_-_Medie_Prime&amp;diff=3362</id>
		<title>0116 - Medie Prime</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=0116_-_Medie_Prime&amp;diff=3362"/>
		<updated>2023-04-10T09:35:12Z</updated>

		<summary type="html">&lt;p&gt;Diana Butuza: /* Exemplu */&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;numar&#039;&#039;&#039; şi apoi un şir de &#039;&#039;&#039;n&#039;&#039;&#039; numere naturale şi determină media aritmetică a celor prime.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Programul citește de la tastatură numărul &#039;&#039;&#039;numar&#039;&#039;&#039;, iar apoi &#039;&#039;&#039;n&#039;&#039;&#039; numere naturale..&lt;br /&gt;
== Date de ieşire ==&lt;br /&gt;
Programul afișează pe ecran numărul &#039;&#039;&#039;M&#039;&#039;&#039;, reprezentând media aritmetică a valorilor prime.&lt;br /&gt;
&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;
* cele n numere citite vor fi mai mici decât 10000&lt;br /&gt;
*rezultatul se va afişa cu cel puțin două zecimale exacte&lt;br /&gt;
*printre cele n numere va exista cel puțin un număr prim&lt;br /&gt;
&lt;br /&gt;
== Exemplu ==&lt;br /&gt;
; Intrare&lt;br /&gt;
: 5&lt;br /&gt;
: 8 7 5 9 11&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele de intrare corespund restricțiilor impuse.&lt;br /&gt;
: 7.666666666666667&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(numar):&lt;br /&gt;
    if numar.isdigit():&lt;br /&gt;
        if 0 &amp;lt;= int(numar) &amp;lt;= 1000:&lt;br /&gt;
            return True&lt;br /&gt;
    return False&lt;br /&gt;
&lt;br /&gt;
def validare_date_numere(n):&lt;br /&gt;
    if n.isdigit():&lt;br /&gt;
        if 0 &amp;lt;= int(n) &amp;lt;= 10000:&lt;br /&gt;
            return True&lt;br /&gt;
    return False&lt;br /&gt;
&lt;br /&gt;
def is_prime(numar):&lt;br /&gt;
    if numar &amp;lt; 2:&lt;br /&gt;
        return False&lt;br /&gt;
    for i in range(2, int(numar ** 0.5) + 1):&lt;br /&gt;
        if numar % i == 0:&lt;br /&gt;
            return False&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
def avg_prime(numere):&lt;br /&gt;
    prime_numere = [numar for numar in numere if is_prime(numar)]&lt;br /&gt;
    if len(prime_numere) &amp;gt; 0:&lt;br /&gt;
        return sum(prime_numere) / len(prime_numere)&lt;br /&gt;
    else:&lt;br /&gt;
        return None&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    n = input(&amp;quot;Introduceti numarul de elemente: &amp;quot;)&lt;br /&gt;
    if validare_date_numere(n):&lt;br /&gt;
        print(&amp;quot;Datele de intrare corespund restricțiilor impuse.&amp;quot;)&lt;br /&gt;
        numere = list(map(int, input(&amp;quot;Introduceti numerele: &amp;quot;).split()))&lt;br /&gt;
        if validare_date_numere(str(len(numere))):&lt;br /&gt;
            print(&amp;quot;Datele de intrare corespund restricțiilor impuse.&amp;quot;)&lt;br /&gt;
            result = avg_prime(numere)&lt;br /&gt;
            if result is not None:&lt;br /&gt;
                print(&amp;quot;Media aritmetica a numerelor prime din lista este:&amp;quot;, result)&lt;br /&gt;
            else:&lt;br /&gt;
                print(&amp;quot;Nu exista numere prime in lista!&amp;quot;)&lt;br /&gt;
        else:&lt;br /&gt;
            print(&amp;quot;Numarul de numere introdus nu corespunde cu numarul specificat anterior.&amp;quot;)&lt;br /&gt;
    else:&lt;br /&gt;
        print(&amp;quot;Numarul de elemente introdus nu corespunde cu restrictiile impuse.&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
==Explicație rezolvare==&lt;br /&gt;
Programul începe prin definirea a trei funcții:&lt;br /&gt;
&lt;br /&gt;
1.&#039;&#039;&#039;validare_date_numar(numar)&#039;&#039;&#039;: Această funcție verifică dacă un șir de caractere numar dat poate fi convertit la un număr întreg între 0 și 1000. Ea returnează &#039;&#039;&#039;True&#039;&#039;&#039; dacă condiția este satisfăcută și &#039;&#039;&#039;False&#039;&#039;&#039; în caz contrar.&lt;br /&gt;
&lt;br /&gt;
2.&#039;&#039;&#039;validare_date_numere(n)&#039;&#039;&#039;: Această funcție verifică dacă un șir de caractere n dat poate fi convertit la un număr întreg între 0 și 10000. Ea returnează &#039;&#039;&#039;True&#039;&#039;&#039; dacă condiția este satisfăcută și &#039;&#039;&#039;False&#039;&#039;&#039; în caz contrar.&lt;br /&gt;
&lt;br /&gt;
3.&#039;&#039;&#039;is_prime(numar)&#039;&#039;&#039;: Această funcție verifică dacă un număr întreg dat numar este un număr prim. Ea returnează &#039;&#039;&#039;True&#039;&#039;&#039; dacă numărul este prim și &#039;&#039;&#039;False&#039;&#039;&#039; în caz contrar.&lt;br /&gt;
&lt;br /&gt;
După definirea acestor funcții, se verifică dacă introducerea primită de la utilizator este validă, apoi calculează media aritmetică a numerelor prime din lista utilizând funcția &#039;&#039;&#039;avg_prime&#039;&#039;&#039;. Dacă nu există numere prime în listă, se returnează un mesaj care indică acest lucru.&lt;/div&gt;</summary>
		<author><name>Diana Butuza</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=2312_-_GuIT&amp;diff=3361</id>
		<title>2312 - GuIT</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=2312_-_GuIT&amp;diff=3361"/>
		<updated>2023-04-10T09:34:14Z</updated>

		<summary type="html">&lt;p&gt;Diana Butuza: /* Explicație rezolvare */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cerinţa ==&lt;br /&gt;
Ghiţă s-a hotărât să plece de-acasă de Ignat, având nişte previziuni sumbre. Neavând bani, s-a gândit să-şi scoată un single de sezon, “guIT”. Din vânzarea lui a obţinut frumoasa sumă de &#039;&#039;&#039;n&#039;&#039;&#039; dolari.Pentru a câştiga un meniu vegetarian de Crăciun, trebuie să aflaţi suma numerelor prime din descompunerea lui &#039;&#039;&#039;n&#039;&#039;&#039;, ştiind că &#039;&#039;&#039;n&#039;&#039;&#039; este produs de trei numere prime distincte.&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 numărul &#039;&#039;&#039;S&#039;&#039;&#039;, reprezentând suma celor trei numere prime din descompunerea lui &#039;&#039;&#039;n&#039;&#039;&#039;.&lt;br /&gt;
== Restricții și precizări ==&lt;br /&gt;
*&#039;&#039;&#039;1 ≤ n ≤ 10^12&#039;&#039;&#039;&lt;br /&gt;
== Exemplu ==&lt;br /&gt;
; Intrare&lt;br /&gt;
:105&lt;br /&gt;
; Ieșire&lt;br /&gt;
: 15&lt;br /&gt;
== Explicație == &lt;br /&gt;
&#039;&#039;&#039;105 = 3•5•7&#039;&#039;&#039;, deci suma este &#039;&#039;&#039;3+5+7=15&#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;
def validare_date_numar(n):&lt;br /&gt;
    if 1 &amp;lt;= int(n) &amp;lt;= 1000000:&lt;br /&gt;
        return True&lt;br /&gt;
    else:&lt;br /&gt;
        return False&lt;br /&gt;
&lt;br /&gt;
def validare_date(k):&lt;br /&gt;
    if 1 &amp;lt;= int(k) &amp;lt;= 1000:&lt;br /&gt;
        return True&lt;br /&gt;
    else:&lt;br /&gt;
        return False&lt;br /&gt;
&lt;br /&gt;
def print_num(n, k):&lt;br /&gt;
    s = 0&lt;br /&gt;
    d = 2&lt;br /&gt;
&lt;br /&gt;
    while n &amp;gt; 1:&lt;br /&gt;
        p = 0&lt;br /&gt;
        while n % d == 0:&lt;br /&gt;
            n //= d&lt;br /&gt;
            p += 1&lt;br /&gt;
        if p &amp;gt; 0:&lt;br /&gt;
            s += d&lt;br /&gt;
        d += 1&lt;br /&gt;
        if d * d &amp;gt; n:&lt;br /&gt;
            d = n&lt;br /&gt;
&lt;br /&gt;
    return s&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    n = input()&lt;br /&gt;
    k = input()&lt;br /&gt;
    if validare_date_numar(n) and validare_date(k):&lt;br /&gt;
        print(&amp;quot;\nDatele de intrare corespund restricțiilor impuse.\n&amp;quot;)&lt;br /&gt;
        numar = print_num(int(n), int(k))&lt;br /&gt;
        print(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;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
==Explicație rezolvare==&lt;br /&gt;
Acest cod implementează o funcție numită &amp;quot;print_num&amp;quot; care primește două argumente &amp;quot;n&amp;quot; și &amp;quot;k&amp;quot;. Funcția calculează suma tuturor divizorilor primi ai lui &amp;quot;n&amp;quot; care sunt mai mici sau egali cu &amp;quot;k&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Mai întâi, codul validează datele de intrare prin intermediul a două funcții separate, &amp;quot;validare_date_numar&amp;quot; și &amp;quot;validare_date&amp;quot;, care se asigură că &amp;quot;n&amp;quot; și &amp;quot;k&amp;quot; sunt în limitele specificate (1 &amp;lt;= n &amp;lt;= 1000000 și 1 &amp;lt;= k &amp;lt;= 1000).&lt;br /&gt;
&lt;br /&gt;
Apoi, în interiorul funcției &amp;quot;print_num&amp;quot;, se inițializează o variabilă &amp;quot;s&amp;quot; la 0 și se stabilește o variabilă &amp;quot;d&amp;quot; la 2. Se utilizează un buclă while care rulează până când &amp;quot;n&amp;quot; devine mai mic sau egal cu 1.&lt;br /&gt;
&lt;br /&gt;
În interiorul buclei while, se verifică dacă &amp;quot;n&amp;quot; este divizibil cu &amp;quot;d&amp;quot;. Dacă este, se împarte &amp;quot;n&amp;quot; la &amp;quot;d&amp;quot; și se adaugă &amp;quot;d&amp;quot; la suma &amp;quot;s&amp;quot;. Se continuă acest proces până când &amp;quot;n&amp;quot; nu mai este divizibil cu &amp;quot;d&amp;quot;. Apoi, variabila &amp;quot;d&amp;quot; este incrementată cu 1 și se verifică dacă &amp;quot;d&amp;quot; la pătrat este mai mare decât &amp;quot;n&amp;quot;. Dacă este, se atribuie lui &amp;quot;d&amp;quot; valoarea &amp;quot;n&amp;quot;, în caz contrar, bucla continuă.&lt;br /&gt;
&lt;br /&gt;
La final, funcția returnează suma divizorilor primi ai lui &amp;quot;n&amp;quot; care sunt mai mici sau egali cu &amp;quot;k&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
În blocul &amp;quot;if __name__ == &#039;__main__&#039;&amp;quot;, se verifică dacă datele de intrare sunt valide folosind cele două funcții de validare și se afișează un mesaj corespunzător. Dacă datele de intrare sunt valide, se calculează suma divizorilor primi ai lui &amp;quot;n&amp;quot; și se afișează rezultatul. În caz contrar, se afișează un mesaj de eroare.&lt;/div&gt;</summary>
		<author><name>Diana Butuza</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=0116_-_Medie_Prime&amp;diff=3360</id>
		<title>0116 - Medie Prime</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=0116_-_Medie_Prime&amp;diff=3360"/>
		<updated>2023-04-10T09:29:31Z</updated>

		<summary type="html">&lt;p&gt;Diana Butuza: /* Explicație rezolvare */&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;numar&#039;&#039;&#039; şi apoi un şir de &#039;&#039;&#039;n&#039;&#039;&#039; numere naturale şi determină media aritmetică a celor prime.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Programul citește de la tastatură numărul &#039;&#039;&#039;numar&#039;&#039;&#039;, iar apoi &#039;&#039;&#039;n&#039;&#039;&#039; numere naturale..&lt;br /&gt;
== Date de ieşire ==&lt;br /&gt;
Programul afișează pe ecran numărul &#039;&#039;&#039;M&#039;&#039;&#039;, reprezentând media aritmetică a valorilor prime.&lt;br /&gt;
&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;
* cele n numere citite vor fi mai mici decât 10000&lt;br /&gt;
*rezultatul se va afişa cu cel puțin două zecimale exacte&lt;br /&gt;
*printre cele n numere va exista cel puțin un număr prim&lt;br /&gt;
&lt;br /&gt;
== Exemplu ==&lt;br /&gt;
; Intrare&lt;br /&gt;
: 5&lt;br /&gt;
: 8 7 5 9 11&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele introduse corespund restricțiilor impuse.&lt;br /&gt;
: 7.666666666666667&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(numar):&lt;br /&gt;
    if numar.isdigit():&lt;br /&gt;
        if 0 &amp;lt;= int(numar) &amp;lt;= 1000:&lt;br /&gt;
            return True&lt;br /&gt;
    return False&lt;br /&gt;
&lt;br /&gt;
def validare_date_numere(n):&lt;br /&gt;
    if n.isdigit():&lt;br /&gt;
        if 0 &amp;lt;= int(n) &amp;lt;= 10000:&lt;br /&gt;
            return True&lt;br /&gt;
    return False&lt;br /&gt;
&lt;br /&gt;
def is_prime(numar):&lt;br /&gt;
    if numar &amp;lt; 2:&lt;br /&gt;
        return False&lt;br /&gt;
    for i in range(2, int(numar ** 0.5) + 1):&lt;br /&gt;
        if numar % i == 0:&lt;br /&gt;
            return False&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
def avg_prime(numere):&lt;br /&gt;
    prime_numere = [numar for numar in numere if is_prime(numar)]&lt;br /&gt;
    if len(prime_numere) &amp;gt; 0:&lt;br /&gt;
        return sum(prime_numere) / len(prime_numere)&lt;br /&gt;
    else:&lt;br /&gt;
        return None&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    n = input(&amp;quot;Introduceti numarul de elemente: &amp;quot;)&lt;br /&gt;
    if validare_date_numere(n):&lt;br /&gt;
        print(&amp;quot;Datele de intrare corespund restricțiilor impuse.&amp;quot;)&lt;br /&gt;
        numere = list(map(int, input(&amp;quot;Introduceti numerele: &amp;quot;).split()))&lt;br /&gt;
        if validare_date_numere(str(len(numere))):&lt;br /&gt;
            print(&amp;quot;Datele de intrare corespund restricțiilor impuse.&amp;quot;)&lt;br /&gt;
            result = avg_prime(numere)&lt;br /&gt;
            if result is not None:&lt;br /&gt;
                print(&amp;quot;Media aritmetica a numerelor prime din lista este:&amp;quot;, result)&lt;br /&gt;
            else:&lt;br /&gt;
                print(&amp;quot;Nu exista numere prime in lista!&amp;quot;)&lt;br /&gt;
        else:&lt;br /&gt;
            print(&amp;quot;Numarul de numere introdus nu corespunde cu numarul specificat anterior.&amp;quot;)&lt;br /&gt;
    else:&lt;br /&gt;
        print(&amp;quot;Numarul de elemente introdus nu corespunde cu restrictiile impuse.&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
==Explicație rezolvare==&lt;br /&gt;
Programul începe prin definirea a trei funcții:&lt;br /&gt;
&lt;br /&gt;
1.&#039;&#039;&#039;validare_date_numar(numar)&#039;&#039;&#039;: Această funcție verifică dacă un șir de caractere numar dat poate fi convertit la un număr întreg între 0 și 1000. Ea returnează &#039;&#039;&#039;True&#039;&#039;&#039; dacă condiția este satisfăcută și &#039;&#039;&#039;False&#039;&#039;&#039; în caz contrar.&lt;br /&gt;
&lt;br /&gt;
2.&#039;&#039;&#039;validare_date_numere(n)&#039;&#039;&#039;: Această funcție verifică dacă un șir de caractere n dat poate fi convertit la un număr întreg între 0 și 10000. Ea returnează &#039;&#039;&#039;True&#039;&#039;&#039; dacă condiția este satisfăcută și &#039;&#039;&#039;False&#039;&#039;&#039; în caz contrar.&lt;br /&gt;
&lt;br /&gt;
3.&#039;&#039;&#039;is_prime(numar)&#039;&#039;&#039;: Această funcție verifică dacă un număr întreg dat numar este un număr prim. Ea returnează &#039;&#039;&#039;True&#039;&#039;&#039; dacă numărul este prim și &#039;&#039;&#039;False&#039;&#039;&#039; în caz contrar.&lt;br /&gt;
&lt;br /&gt;
După definirea acestor funcții, se verifică dacă introducerea primită de la utilizator este validă, apoi calculează media aritmetică a numerelor prime din lista utilizând funcția &#039;&#039;&#039;avg_prime&#039;&#039;&#039;. Dacă nu există numere prime în listă, se returnează un mesaj care indică acest lucru.&lt;/div&gt;</summary>
		<author><name>Diana Butuza</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=0080_-_Numarare_Perechi_Prime_Intre_Ele&amp;diff=3359</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=3359"/>
		<updated>2023-04-10T09:21:29Z</updated>

		<summary type="html">&lt;p&gt;Diana Butuza: /* Exemplu2 */&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;/div&gt;</summary>
		<author><name>Diana Butuza</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=0080_-_Numarare_Perechi_Prime_Intre_Ele&amp;diff=3358</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=3358"/>
		<updated>2023-04-10T09:21:16Z</updated>

		<summary type="html">&lt;p&gt;Diana Butuza: /* Exemplu1 */&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 introduse corespund restricțiilor impuse.&lt;br /&gt;
: 1&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;/div&gt;</summary>
		<author><name>Diana Butuza</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=3268_-_CMMDC_CMMMC&amp;diff=3357</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=3357"/>
		<updated>2023-04-10T09:20:38Z</updated>

		<summary type="html">&lt;p&gt;Diana Butuza: /* Exemplu */&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;/div&gt;</summary>
		<author><name>Diana Butuza</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=3270_-_Suma_Divizori_Pari&amp;diff=3356</id>
		<title>3270 - Suma Divizori Pari</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=3270_-_Suma_Divizori_Pari&amp;diff=3356"/>
		<updated>2023-04-10T09:19:36Z</updated>

		<summary type="html">&lt;p&gt;Diana Butuza: /* Exemplu */&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 suma divizorilor pari ai acestuia.&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;suma_divizorilor_pari&#039;&#039;&#039;”, reprezentând suma 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;
: 30&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele de intrare corespund restricțiilor impuse.&lt;br /&gt;
: 48&lt;br /&gt;
&amp;lt;br&amp;gt;&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;
: 0&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
; Intrare&lt;br /&gt;
: xyz&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele de intrare nu corespund restricțiilor impuse.&lt;br /&gt;
&lt;br /&gt;
== Explicație == &lt;br /&gt;
Divizorii pari lui &#039;&#039;&#039;30&#039;&#039;&#039; sunt &#039;&#039;&#039;2&#039;&#039;&#039;, &#039;&#039;&#039;6&#039;&#039;&#039;, &#039;&#039;&#039;10&#039;&#039;&#039; și &#039;&#039;&#039;30&#039;&#039;&#039; . Suma lor este &#039;&#039;&#039;48&#039;&#039;&#039;.&amp;lt;br&amp;gt;&lt;br /&gt;
Suma divizorilor pari lui &#039;&#039;&#039;5&#039;&#039;&#039; este &#039;&#039;&#039;0&#039;&#039;&#039; fiindcă nu are divizori pari.&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 suma(numar):&lt;br /&gt;
    if numar % 2 == 0:&lt;br /&gt;
        suma_divizorilor_pari = numar&lt;br /&gt;
    else:&lt;br /&gt;
        suma_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;
                suma_divizorilor_pari += i&lt;br /&gt;
    print(suma_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;
        suma(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;/div&gt;</summary>
		<author><name>Diana Butuza</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=0387_-_Suma_Divizori_Impari&amp;diff=3355</id>
		<title>0387 - Suma Divizori Impari</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=0387_-_Suma_Divizori_Impari&amp;diff=3355"/>
		<updated>2023-04-10T09:19:05Z</updated>

		<summary type="html">&lt;p&gt;Diana Butuza: /* Exemplu */&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 suma divizorilor impari ai acestuia.&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;suma_divizorilor_impari&#039;&#039;&#039;”, reprezentând suma divizorilor impari 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;
: 30&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele de intrare corespund restricțiilor impuse.&lt;br /&gt;
: 24&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
; Intrare&lt;br /&gt;
: 13&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele de intrare corespund restricțiilor impuse.&lt;br /&gt;
: 14&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
; Intrare&lt;br /&gt;
: -5&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele de intrare nu corespund restricțiilor impuse.&lt;br /&gt;
&lt;br /&gt;
== Explicație == &lt;br /&gt;
Divizorii impari ai lui &#039;&#039;&#039;30&#039;&#039;&#039; sunt &#039;&#039;&#039;1&#039;&#039;&#039;, &#039;&#039;&#039;3&#039;&#039;&#039;, &#039;&#039;&#039;5&#039;&#039;&#039;, &#039;&#039;&#039;15&#039;&#039;&#039;. Suma lor este &#039;&#039;&#039;24&#039;&#039;&#039;.&amp;lt;br&amp;gt;&lt;br /&gt;
Divizorii impari ai lui &#039;&#039;&#039;13&#039;&#039;&#039; este &#039;&#039;&#039;1&#039;&#039;&#039; și &#039;&#039;&#039;13&#039;&#039;&#039;. Suma lor este &#039;&#039;&#039;14&#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 suma(numar):&lt;br /&gt;
    if numar % 2 == 1:&lt;br /&gt;
        suma_divizorilor_impari = numar&lt;br /&gt;
    else:&lt;br /&gt;
        suma_divizorilor_impari = 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 == 1:&lt;br /&gt;
                suma_divizorilor_impari += i&lt;br /&gt;
    print(suma_divizorilor_impari)&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;
        suma(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;/div&gt;</summary>
		<author><name>Diana Butuza</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=0376_-_Suma_Divizori&amp;diff=3354</id>
		<title>0376 - Suma Divizori</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=0376_-_Suma_Divizori&amp;diff=3354"/>
		<updated>2023-04-10T09:18:29Z</updated>

		<summary type="html">&lt;p&gt;Diana Butuza: /* Exemplu */&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 suma divizorilor ai acestuia.&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 numărul ”&#039;&#039;&#039;suma&#039;&#039;&#039;”, reprezentând suma divizorilor 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;
: 12&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
; Intrare&lt;br /&gt;
: -5&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele de intrare nu corespund restricțiilor impuse.&lt;br /&gt;
&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;.&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 suma(numar):&lt;br /&gt;
    suma_divizorilor = 0&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;
    suma_divizorilor += numar&lt;br /&gt;
    print(suma_divizorilor)&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;
        suma(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;/div&gt;</summary>
		<author><name>Diana Butuza</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=3663_-_PPDP&amp;diff=3353</id>
		<title>3663 - PPDP</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=3663_-_PPDP&amp;diff=3353"/>
		<updated>2023-04-10T09:17:14Z</updated>

		<summary type="html">&lt;p&gt;Diana Butuza: /* Rezolvare */&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 introduse 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 introduse 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;/div&gt;</summary>
		<author><name>Diana Butuza</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=3272_-_Sum_Div_Ogl&amp;diff=3352</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=3352"/>
		<updated>2023-04-10T09:14:57Z</updated>

		<summary type="html">&lt;p&gt;Diana Butuza: /* Rezolvare */&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 introduse 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 introduse 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;/div&gt;</summary>
		<author><name>Diana Butuza</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=2745_-_Intrebari&amp;diff=3351</id>
		<title>2745 - Intrebari</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=2745_-_Intrebari&amp;diff=3351"/>
		<updated>2023-04-10T09:14:13Z</updated>

		<summary type="html">&lt;p&gt;Diana Butuza: /* Rezolvare */&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):&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_cifre(min_val):&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;
    return 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 introduse corespund restricțiilor impuse.\n&amp;quot;)&lt;br /&gt;
        if tip_cerinta == 1:&lt;br /&gt;
            print(suma_cifre(min_val))&lt;br /&gt;
            print(suma)&lt;br /&gt;
        else:&lt;br /&gt;
            print(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;/div&gt;</summary>
		<author><name>Diana Butuza</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=1517_-_Clatite&amp;diff=3350</id>
		<title>1517 - Clatite</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=1517_-_Clatite&amp;diff=3350"/>
		<updated>2023-04-10T08:43:04Z</updated>

		<summary type="html">&lt;p&gt;Diana Butuza: /* Exemplu */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Enunț ==&lt;br /&gt;
Arpsod adoră două lucruri: matematica și clătitele bunicii sale. Într-o zi, aceasta s-a apucat să prepare clătite. Arpsod mănâncă toate clătitele începând de la a N-a clătită preparată, până la a M-a clătită preparată (inclusiv N și M). Pentru că el vrea să mănânce clătite cu diferite umpluturi și-a făcut următoarea regulă:&lt;br /&gt;
&lt;br /&gt;
“Dacă numărul de ordine al clătitei este prim atunci aceasta va fi cu ciocolată. Dacă numărul de ordine este pătrat perfect sau cub perfect aceasta va fi cu gem. Dacă suma divizorilor numărului este egală cu însuși numărul de ordine atunci aceasta va fi cu înghețată. (se iau în considerare toți divizorii în afară de numărul în sine, inclusiv 1).&lt;br /&gt;
&lt;br /&gt;
În cazul în care o clătită îndeplinește simultan mai multe condiții, se respectă prioritatea sortimentelor: ciocolată &amp;gt; gem &amp;gt; înghețată.&lt;br /&gt;
Dacă niciuna dintre condițiile de mai sus nu este îndeplinită, pentru cele cu numărul de ordine par, clătita va fi cu zahar, iar pentru numărul de ordine impar, clătita va fi simplă.”&lt;br /&gt;
== Cerinţa ==&lt;br /&gt;
Cunoscându-se &#039;&#039;&#039;N&#039;&#039;&#039; și &#039;&#039;&#039;M&#039;&#039;&#039;, numere naturale, să se determine câte clătite a mâncat Arpsod în total și numărul de clătite din fiecare tip.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Fișierul &#039;&#039;&#039;clatite.in&#039;&#039;&#039; conține pe prima linie numerele &#039;&#039;&#039;N&#039;&#039;&#039; și &#039;&#039;&#039;M&#039;&#039;&#039; separate printr-un spațiu.&lt;br /&gt;
== Date de ieșire ==&lt;br /&gt;
Dacă datele sunt introduse corect, în fișier se va afișa: &#039;&#039;&#039;&amp;quot;Datele sunt introduse corect.&amp;quot;&#039;&#039;&#039;, apoi prima linie a fişierului de ieşire &#039;&#039;&#039;clatite.out&#039;&#039;&#039; va conține numărul total de clătite mâncate de Arpsod iar a doua linie 5 numere naturale separate printr-un spațiu reprezentând numărul de clătite mâncate, din fiecare tip (ordinea: ciocolata, gem, înghețată, zahăr, simplă).În cazul în care datele nu respectă restricțiile, se va afișa în fișier : &#039;&#039;&#039;&amp;quot;Datele nu corespund restricțiilor impuse.&amp;quot;&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Restricții și precizări ==&lt;br /&gt;
* 0 &amp;amp;les; N, M &amp;amp;les;  300.000 &lt;br /&gt;
== Exemplu ==&lt;br /&gt;
; clatite.in&lt;br /&gt;
: 3 11&lt;br /&gt;
; clatite.out&lt;br /&gt;
: Datele sunt introduse corect.&lt;br /&gt;
: 9&lt;br /&gt;
: 4 3 1 1 0&lt;br /&gt;
&lt;br /&gt;
== Explicație == &lt;br /&gt;
Arpsod a mâncat &#039;&#039;&#039;9&#039;&#039;&#039; clătite dintre care:&lt;br /&gt;
&#039;&#039;&#039;4&#039;&#039;&#039; cu ciocolată ( &#039;&#039;&#039;3, 5, 7, 11&#039;&#039;&#039; )&lt;br /&gt;
&#039;&#039;&#039;3&#039;&#039;&#039; cu gem ( &#039;&#039;&#039;4, 8, 9&#039;&#039;&#039; )&lt;br /&gt;
&#039;&#039;&#039;1&#039;&#039;&#039; cu înghețată ( &#039;&#039;&#039;6&#039;&#039;&#039; )&lt;br /&gt;
&#039;&#039;&#039;1&#039;&#039;&#039; cu zahăr ( &#039;&#039;&#039;10&#039;&#039;&#039; ).&lt;br /&gt;
&#039;&#039;&#039;0&#039;&#039;&#039; simple&lt;br /&gt;
&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
import math&lt;br /&gt;
&lt;br /&gt;
def pătrat_perfect(n):&lt;br /&gt;
    d = int(math.sqrt(n))&lt;br /&gt;
    ok = 0&lt;br /&gt;
    if d * d == n:&lt;br /&gt;
        ok += 1&lt;br /&gt;
    if ok == 0:&lt;br /&gt;
        for i in range(1, int(n ** (1 / 3)) + 1):&lt;br /&gt;
            if i * i * i == n:&lt;br /&gt;
                ok += 1&lt;br /&gt;
    if ok:&lt;br /&gt;
        return True&lt;br /&gt;
    else:&lt;br /&gt;
        return False&lt;br /&gt;
&lt;br /&gt;
def suma_divizori(n):&lt;br /&gt;
    s = 1&lt;br /&gt;
    for i in range(2, int(math.sqrt(n)) + 1):&lt;br /&gt;
        if n % i == 0:&lt;br /&gt;
            s += i + n // i&lt;br /&gt;
        if i * i == n:&lt;br /&gt;
            s -= i&lt;br /&gt;
    if s == n:&lt;br /&gt;
        return True&lt;br /&gt;
    else:&lt;br /&gt;
        return False&lt;br /&gt;
&lt;br /&gt;
def prim(n):&lt;br /&gt;
    cnt = 1&lt;br /&gt;
    d = 2&lt;br /&gt;
    while n &amp;gt; 1:&lt;br /&gt;
        p = 0&lt;br /&gt;
        while n % d == 0:&lt;br /&gt;
            n //= d&lt;br /&gt;
            p += 1&lt;br /&gt;
        cnt *= (p + 1)&lt;br /&gt;
        d += 1&lt;br /&gt;
        if d * d &amp;gt; n:&lt;br /&gt;
            d = n&lt;br /&gt;
    if cnt == 2:&lt;br /&gt;
        return True&lt;br /&gt;
    else:&lt;br /&gt;
        return False&lt;br /&gt;
&lt;br /&gt;
def validare_date(n, m):&lt;br /&gt;
    if not (1 &amp;lt;= n &amp;lt;= 300000) or not (1 &amp;lt;= m &amp;lt;= 300000):&lt;br /&gt;
        return False&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    with open(&amp;quot;clatite.in&amp;quot;, &amp;quot;r&amp;quot;) as f:&lt;br /&gt;
        n, m = map(int, f.readline().split())&lt;br /&gt;
        p = 0&lt;br /&gt;
        line = f.readline().strip()&lt;br /&gt;
        if line:&lt;br /&gt;
            p = int(line)&lt;br /&gt;
&lt;br /&gt;
    if not validare_date(n, m):&lt;br /&gt;
        f.write(&amp;quot;Datele nu corespund restricțiilor impuse.&amp;quot;)&lt;br /&gt;
        exit()&lt;br /&gt;
&lt;br /&gt;
    c = 0&lt;br /&gt;
    g = 0&lt;br /&gt;
    ing = 0&lt;br /&gt;
    z = 0&lt;br /&gt;
    s = 0&lt;br /&gt;
&lt;br /&gt;
    for i in range(n, m + 1):&lt;br /&gt;
        if prim(i):&lt;br /&gt;
            c += 1&lt;br /&gt;
        elif pătrat_perfect(i):&lt;br /&gt;
            g += 1&lt;br /&gt;
        elif suma_divizori(i):&lt;br /&gt;
            ing += 1&lt;br /&gt;
        elif i % 2 == 0:&lt;br /&gt;
            z += 1&lt;br /&gt;
        else:&lt;br /&gt;
            s += 1&lt;br /&gt;
&lt;br /&gt;
    total = c + g + ing + z + s&lt;br /&gt;
&lt;br /&gt;
    with open(&amp;quot;clatite.out&amp;quot;, &amp;quot;w&amp;quot;) as f:&lt;br /&gt;
        f.write(&amp;quot;Datele sunt introduse corect.\n&amp;quot;)&lt;br /&gt;
        f.write(str(total) + &amp;quot;\n&amp;quot;)&lt;br /&gt;
        f.write(f&amp;quot;{c} {g} {ing} {z} {s}&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
== Explicație rezolvare ==&lt;br /&gt;
Funcția pătrat_perfect(n) verifică dacă numărul n este un pătrat perfect sau un cub perfect. Verificarea se face prin calcularea rădăcinii pătrate sau cubice a lui n și compararea cu valoarea întreagă a rădăcinii. Dacă rădăcina este egală cu valoarea întreagă, atunci n este pătrat perfect sau cub perfect și funcția returnează True. Dacă nu, se parcurge un alt interval și se verifică dacă n este cub perfect. Dacă n este cub perfect, funcția returnează True, altfel returnează False.&amp;lt;br&amp;gt;Funcția suma_divizori(n) calculează suma divizorilor lui n și verifică dacă aceasta este egală cu n. Suma divizorilor se calculează prin parcurgerea tuturor divizorilor lui n, cu excepția lui n și a lui 1, și adăugarea lor la o variabilă s. Dacă s este egală cu n, funcția returnează True, altfel returnează False.&amp;lt;br&amp;gt;Funcția prim(n) verifică dacă numărul n este prim și calculează numărul său de divizori. Pentru a verifica dacă n este prim, se împarte succesiv la divizorii mai mici sau egali cu rădăcina pătrată a lui n. Dacă n este divizibil cu un divizor, acesta este înmulțit cu un contor cnt și n este împărțit la acel divizor. Dacă n nu mai poate fi împărțit la vreun divizor mai mic sau egal cu rădăcina pătrată a lui n, atunci n este fie prim, fie este egal cu un produs de două numere prime care sunt mai mari decât rădăcina pătrată a lui n. În cazul în care n este prim, numărul de divizori este 2 și funcția returnează True. Dacă n nu este prim, numărul de divizori se calculează din contorul cnt și funcția returnează False.&amp;lt;br&amp;gt;Funcția validare_date(n, m) verifică dacă valorile n și m sunt cuprinse între 1 și 300000. Dacă nu sunt, funcția returnează False, altfel returnează True&lt;br /&gt;
Funcția main citește datele de intrare dintr-un fișier numit &amp;quot;clatite.in&amp;quot;, validează dacă acestea respectă restricțiile impuse și apoi efectuează diferite calcule pe intervalele din intervalul [n, m], unde n și m sunt numerele citite inițial din fișierul de intrare.Se inițializează câteva variabile (c, g, ing, z, s) pentru a număra diferite tipuri de numere între n și m. Apoi, pentru fiecare număr între n și m, main verifică dacă numărul este prim, pătrat perfect, are suma divizorilor egală cu numărul, este par sau impar și mărește corespunzător variabila adecvată în funcție de ce tip de număr este.La sfârșit se afișează &amp;quot;Datele sunt introduse corect.&amp;quot;, numărul total de numere de diferite tipuri găsite și numărul de numere din fiecare tip. Apoi, aceste informații sunt scrise într-un fișier numit &amp;quot;clatite.out&amp;quot;.&lt;/div&gt;</summary>
		<author><name>Diana Butuza</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=1517_-_Clatite&amp;diff=3349</id>
		<title>1517 - Clatite</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=1517_-_Clatite&amp;diff=3349"/>
		<updated>2023-04-10T08:39:22Z</updated>

		<summary type="html">&lt;p&gt;Diana Butuza: /* Date de iesire */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Enunț ==&lt;br /&gt;
Arpsod adoră două lucruri: matematica și clătitele bunicii sale. Într-o zi, aceasta s-a apucat să prepare clătite. Arpsod mănâncă toate clătitele începând de la a N-a clătită preparată, până la a M-a clătită preparată (inclusiv N și M). Pentru că el vrea să mănânce clătite cu diferite umpluturi și-a făcut următoarea regulă:&lt;br /&gt;
&lt;br /&gt;
“Dacă numărul de ordine al clătitei este prim atunci aceasta va fi cu ciocolată. Dacă numărul de ordine este pătrat perfect sau cub perfect aceasta va fi cu gem. Dacă suma divizorilor numărului este egală cu însuși numărul de ordine atunci aceasta va fi cu înghețată. (se iau în considerare toți divizorii în afară de numărul în sine, inclusiv 1).&lt;br /&gt;
&lt;br /&gt;
În cazul în care o clătită îndeplinește simultan mai multe condiții, se respectă prioritatea sortimentelor: ciocolată &amp;gt; gem &amp;gt; înghețată.&lt;br /&gt;
Dacă niciuna dintre condițiile de mai sus nu este îndeplinită, pentru cele cu numărul de ordine par, clătita va fi cu zahar, iar pentru numărul de ordine impar, clătita va fi simplă.”&lt;br /&gt;
== Cerinţa ==&lt;br /&gt;
Cunoscându-se &#039;&#039;&#039;N&#039;&#039;&#039; și &#039;&#039;&#039;M&#039;&#039;&#039;, numere naturale, să se determine câte clătite a mâncat Arpsod în total și numărul de clătite din fiecare tip.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Fișierul &#039;&#039;&#039;clatite.in&#039;&#039;&#039; conține pe prima linie numerele &#039;&#039;&#039;N&#039;&#039;&#039; și &#039;&#039;&#039;M&#039;&#039;&#039; separate printr-un spațiu.&lt;br /&gt;
== Date de ieșire ==&lt;br /&gt;
Dacă datele sunt introduse corect, în fișier se va afișa: &#039;&#039;&#039;&amp;quot;Datele sunt introduse corect.&amp;quot;&#039;&#039;&#039;, apoi prima linie a fişierului de ieşire &#039;&#039;&#039;clatite.out&#039;&#039;&#039; va conține numărul total de clătite mâncate de Arpsod iar a doua linie 5 numere naturale separate printr-un spațiu reprezentând numărul de clătite mâncate, din fiecare tip (ordinea: ciocolata, gem, înghețată, zahăr, simplă).În cazul în care datele nu respectă restricțiile, se va afișa în fișier : &#039;&#039;&#039;&amp;quot;Datele nu corespund restricțiilor impuse.&amp;quot;&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Restricții și precizări ==&lt;br /&gt;
* 0 &amp;amp;les; N, M &amp;amp;les;  300.000 &lt;br /&gt;
== Exemplu ==&lt;br /&gt;
; clatite.in&lt;br /&gt;
: 3 11&lt;br /&gt;
; clatite.out&lt;br /&gt;
: Datele introduse corespund restricțiilor impuse.&lt;br /&gt;
: 9&lt;br /&gt;
: 4 3 1 1 0&lt;br /&gt;
== Explicație == &lt;br /&gt;
Arpsod a mâncat &#039;&#039;&#039;9&#039;&#039;&#039; clătite dintre care:&lt;br /&gt;
&#039;&#039;&#039;4&#039;&#039;&#039; cu ciocolată ( &#039;&#039;&#039;3, 5, 7, 11&#039;&#039;&#039; )&lt;br /&gt;
&#039;&#039;&#039;3&#039;&#039;&#039; cu gem ( &#039;&#039;&#039;4, 8, 9&#039;&#039;&#039; )&lt;br /&gt;
&#039;&#039;&#039;1&#039;&#039;&#039; cu înghețată ( &#039;&#039;&#039;6&#039;&#039;&#039; )&lt;br /&gt;
&#039;&#039;&#039;1&#039;&#039;&#039; cu zahăr ( &#039;&#039;&#039;10&#039;&#039;&#039; ).&lt;br /&gt;
&#039;&#039;&#039;0&#039;&#039;&#039; simple&lt;br /&gt;
&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
import math&lt;br /&gt;
&lt;br /&gt;
def pătrat_perfect(n):&lt;br /&gt;
    d = int(math.sqrt(n))&lt;br /&gt;
    ok = 0&lt;br /&gt;
    if d * d == n:&lt;br /&gt;
        ok += 1&lt;br /&gt;
    if ok == 0:&lt;br /&gt;
        for i in range(1, int(n ** (1 / 3)) + 1):&lt;br /&gt;
            if i * i * i == n:&lt;br /&gt;
                ok += 1&lt;br /&gt;
    if ok:&lt;br /&gt;
        return True&lt;br /&gt;
    else:&lt;br /&gt;
        return False&lt;br /&gt;
&lt;br /&gt;
def suma_divizori(n):&lt;br /&gt;
    s = 1&lt;br /&gt;
    for i in range(2, int(math.sqrt(n)) + 1):&lt;br /&gt;
        if n % i == 0:&lt;br /&gt;
            s += i + n // i&lt;br /&gt;
        if i * i == n:&lt;br /&gt;
            s -= i&lt;br /&gt;
    if s == n:&lt;br /&gt;
        return True&lt;br /&gt;
    else:&lt;br /&gt;
        return False&lt;br /&gt;
&lt;br /&gt;
def prim(n):&lt;br /&gt;
    cnt = 1&lt;br /&gt;
    d = 2&lt;br /&gt;
    while n &amp;gt; 1:&lt;br /&gt;
        p = 0&lt;br /&gt;
        while n % d == 0:&lt;br /&gt;
            n //= d&lt;br /&gt;
            p += 1&lt;br /&gt;
        cnt *= (p + 1)&lt;br /&gt;
        d += 1&lt;br /&gt;
        if d * d &amp;gt; n:&lt;br /&gt;
            d = n&lt;br /&gt;
    if cnt == 2:&lt;br /&gt;
        return True&lt;br /&gt;
    else:&lt;br /&gt;
        return False&lt;br /&gt;
&lt;br /&gt;
def validare_date(n, m):&lt;br /&gt;
    if not (1 &amp;lt;= n &amp;lt;= 300000) or not (1 &amp;lt;= m &amp;lt;= 300000):&lt;br /&gt;
        return False&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    with open(&amp;quot;clatite.in&amp;quot;, &amp;quot;r&amp;quot;) as f:&lt;br /&gt;
        n, m = map(int, f.readline().split())&lt;br /&gt;
        p = 0&lt;br /&gt;
        line = f.readline().strip()&lt;br /&gt;
        if line:&lt;br /&gt;
            p = int(line)&lt;br /&gt;
&lt;br /&gt;
    if not validare_date(n, m):&lt;br /&gt;
        f.write(&amp;quot;Datele nu corespund restricțiilor impuse.&amp;quot;)&lt;br /&gt;
        exit()&lt;br /&gt;
&lt;br /&gt;
    c = 0&lt;br /&gt;
    g = 0&lt;br /&gt;
    ing = 0&lt;br /&gt;
    z = 0&lt;br /&gt;
    s = 0&lt;br /&gt;
&lt;br /&gt;
    for i in range(n, m + 1):&lt;br /&gt;
        if prim(i):&lt;br /&gt;
            c += 1&lt;br /&gt;
        elif pătrat_perfect(i):&lt;br /&gt;
            g += 1&lt;br /&gt;
        elif suma_divizori(i):&lt;br /&gt;
            ing += 1&lt;br /&gt;
        elif i % 2 == 0:&lt;br /&gt;
            z += 1&lt;br /&gt;
        else:&lt;br /&gt;
            s += 1&lt;br /&gt;
&lt;br /&gt;
    total = c + g + ing + z + s&lt;br /&gt;
&lt;br /&gt;
    with open(&amp;quot;clatite.out&amp;quot;, &amp;quot;w&amp;quot;) as f:&lt;br /&gt;
        f.write(&amp;quot;Datele sunt introduse corect.\n&amp;quot;)&lt;br /&gt;
        f.write(str(total) + &amp;quot;\n&amp;quot;)&lt;br /&gt;
        f.write(f&amp;quot;{c} {g} {ing} {z} {s}&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
== Explicație rezolvare ==&lt;br /&gt;
Funcția pătrat_perfect(n) verifică dacă numărul n este un pătrat perfect sau un cub perfect. Verificarea se face prin calcularea rădăcinii pătrate sau cubice a lui n și compararea cu valoarea întreagă a rădăcinii. Dacă rădăcina este egală cu valoarea întreagă, atunci n este pătrat perfect sau cub perfect și funcția returnează True. Dacă nu, se parcurge un alt interval și se verifică dacă n este cub perfect. Dacă n este cub perfect, funcția returnează True, altfel returnează False.&amp;lt;br&amp;gt;Funcția suma_divizori(n) calculează suma divizorilor lui n și verifică dacă aceasta este egală cu n. Suma divizorilor se calculează prin parcurgerea tuturor divizorilor lui n, cu excepția lui n și a lui 1, și adăugarea lor la o variabilă s. Dacă s este egală cu n, funcția returnează True, altfel returnează False.&amp;lt;br&amp;gt;Funcția prim(n) verifică dacă numărul n este prim și calculează numărul său de divizori. Pentru a verifica dacă n este prim, se împarte succesiv la divizorii mai mici sau egali cu rădăcina pătrată a lui n. Dacă n este divizibil cu un divizor, acesta este înmulțit cu un contor cnt și n este împărțit la acel divizor. Dacă n nu mai poate fi împărțit la vreun divizor mai mic sau egal cu rădăcina pătrată a lui n, atunci n este fie prim, fie este egal cu un produs de două numere prime care sunt mai mari decât rădăcina pătrată a lui n. În cazul în care n este prim, numărul de divizori este 2 și funcția returnează True. Dacă n nu este prim, numărul de divizori se calculează din contorul cnt și funcția returnează False.&amp;lt;br&amp;gt;Funcția validare_date(n, m) verifică dacă valorile n și m sunt cuprinse între 1 și 300000. Dacă nu sunt, funcția returnează False, altfel returnează True&lt;br /&gt;
Funcția main citește datele de intrare dintr-un fișier numit &amp;quot;clatite.in&amp;quot;, validează dacă acestea respectă restricțiile impuse și apoi efectuează diferite calcule pe intervalele din intervalul [n, m], unde n și m sunt numerele citite inițial din fișierul de intrare.Se inițializează câteva variabile (c, g, ing, z, s) pentru a număra diferite tipuri de numere între n și m. Apoi, pentru fiecare număr între n și m, main verifică dacă numărul este prim, pătrat perfect, are suma divizorilor egală cu numărul, este par sau impar și mărește corespunzător variabila adecvată în funcție de ce tip de număr este.La sfârșit se afișează &amp;quot;Datele sunt introduse corect.&amp;quot;, numărul total de numere de diferite tipuri găsite și numărul de numere din fiecare tip. Apoi, aceste informații sunt scrise într-un fișier numit &amp;quot;clatite.out&amp;quot;.&lt;/div&gt;</summary>
		<author><name>Diana Butuza</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=1481_-_Gradina_Piticului&amp;diff=3348</id>
		<title>1481 - Gradina Piticului</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=1481_-_Gradina_Piticului&amp;diff=3348"/>
		<updated>2023-04-10T08:34:23Z</updated>

		<summary type="html">&lt;p&gt;Diana Butuza: /* Date de ieşire */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==  Enunț ==&lt;br /&gt;
Un pitic pasionat de numere trebuie să-și pună flori în grădină. El are de plantat m rânduri cu flori, aceeași floare pe tot rândul. Rândurile sunt numerotate de la 1 la m. Având la dispoziție suficiente specii de flori, piticul nostru s-a gândit să le planteze folosind următorul algoritm matematic: pe rândurile care sunt numere prime, va planta exact floarea numerotată cu numărul prim respectiv, iar pe celelalte rânduri va planta floarea numerotată cu suma divizorilor primi ai numărului neprim.&lt;br /&gt;
== Cerinţa ==&lt;br /&gt;
Să se realizeze un program care să afişeze ordinea de așezare a florilor pe cele &#039;&#039;&#039;m&#039;&#039;&#039; rânduri.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Fișierul de intrare &#039;&#039;&#039;pitic.in&#039;&#039;&#039; conține pe prima linie numărul &#039;&#039;&#039;m&#039;&#039;&#039;.&lt;br /&gt;
== Date de ieşire ==&lt;br /&gt;
Dacă datele sunt introduse corect, în fișier se va afișa: &amp;quot;Datele sunt introduse corect.&amp;quot;, apoi fişierul de ieşire &#039;&#039;&#039;pitic.out&#039;&#039;&#039; va conține pe prima linie un șir de &#039;&#039;&#039;m&#039;&#039;&#039; numere, separate prin câte un spațiu, fiecare număr reprezentând specia de floare ce urmează să fie plantată pe rândul respectiv. În cazul în care datele nu respectă restricțiile, se va afișa în fișier : &amp;quot;Datele nu corespund restricțiilor impuse.&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Restricții și precizări ==&lt;br /&gt;
* 1 &amp;amp;les; m &amp;amp;les; 1000&lt;br /&gt;
== Exemplu ==&lt;br /&gt;
; pitic.in&lt;br /&gt;
: 6&lt;br /&gt;
; pitic.out&lt;br /&gt;
: Datele de intrare corespund restricțiilor impuse.&lt;br /&gt;
: 0 2 3 2 5 5&lt;br /&gt;
&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
&lt;br /&gt;
def validare_date(m):&lt;br /&gt;
    return 1 &amp;lt;= m &amp;lt;= 1000&lt;br /&gt;
&lt;br /&gt;
def prim(n):&lt;br /&gt;
    d = 2&lt;br /&gt;
    cnt = 1&lt;br /&gt;
    while n &amp;gt; 1:&lt;br /&gt;
        p = 0&lt;br /&gt;
        while n % d == 0:&lt;br /&gt;
            p += 1&lt;br /&gt;
            n //= d&lt;br /&gt;
        if p &amp;gt; 0:&lt;br /&gt;
            cnt *= (p + 1)&lt;br /&gt;
        d += 1&lt;br /&gt;
        if d * d &amp;gt; n:&lt;br /&gt;
            d = n&lt;br /&gt;
    if cnt == 2:&lt;br /&gt;
        return 1&lt;br /&gt;
    else:&lt;br /&gt;
        return 0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def sumprim(n):&lt;br /&gt;
    s = 0&lt;br /&gt;
    d = 2&lt;br /&gt;
    while n &amp;gt; 1:&lt;br /&gt;
        p = 0&lt;br /&gt;
        while n % d == 0:&lt;br /&gt;
            p += 1&lt;br /&gt;
            n //= d&lt;br /&gt;
        if p &amp;gt; 0:&lt;br /&gt;
            s += d&lt;br /&gt;
        d += 1&lt;br /&gt;
        if d * d &amp;gt; n:&lt;br /&gt;
            d = n&lt;br /&gt;
    return s&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    with open(&amp;quot;pitic.in&amp;quot;) as fin, open(&amp;quot;pitic.out&amp;quot;, &amp;quot;w&amp;quot;) as fout:&lt;br /&gt;
        m = int(fin.readline().strip())&lt;br /&gt;
        if validare_date(m):&lt;br /&gt;
            fout.write(&amp;quot;Datele de intrare corespund restrictiilor impuse.\n&amp;quot;)&lt;br /&gt;
            for i in range(1, m + 1):&lt;br /&gt;
                if prim(i):&lt;br /&gt;
                    fout.write(str(i) + &amp;quot; &amp;quot;)&lt;br /&gt;
                else:&lt;br /&gt;
                    fout.write(str(sumprim(i)) + &amp;quot; &amp;quot;)&lt;br /&gt;
        else:&lt;br /&gt;
            fout.write(&amp;quot;Datele de intrare nu corespund restrictiilor impuse.&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Explicație rezolvare ==&lt;br /&gt;
Funcția validare_date(m) verifică dacă numărul m este între 1 și 1000, returnând True dacă este și False altfel.&amp;lt;br&amp;gt;Funcția prim(n) verifică dacă numărul n este prim. Mai exact, aceasta determină factorii primi ai lui n și verifică dacă n are exact doi factori primi distincți. Dacă da, atunci n este prim și funcția returnează 1, altfel funcția returnează 0.&amp;lt;br&amp;gt;Funcția sumprim(n) calculează suma divizorilor primi ai lui n, cu excepția lui n . Pentru aceasta, se determină factorii primi ai lui n și se adună doar aceia care sunt prima putere a unui număr prim.&amp;lt;br&amp;gt;În funcția principală, se citește numărul m din fișierul de intrare și se verifică dacă este valid. Dacă da, se scrie mesajul &amp;quot;Datele de intrare corespund restrictiilor impuse.&amp;quot; în fișierul de ieșire și se parcurg toate rândurile de la 1 la m. Pentru fiecare rând, se determină dacă este prim și, dacă da, se scrie numărul prim respectiv în fișierul de ieșire. În caz contrar, se calculează suma divizorilor primi ai rândului respectiv și se scrie acea sumă în fișierul de ieșire. Dacă m nu este valid, se scrie în fișierul de ieșire mesajul &amp;quot;Datele de intrare nu corespund restrictiilor impuse.&amp;quot;&lt;/div&gt;</summary>
		<author><name>Diana Butuza</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=1481_-_Gradina_Piticului&amp;diff=3347</id>
		<title>1481 - Gradina Piticului</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=1481_-_Gradina_Piticului&amp;diff=3347"/>
		<updated>2023-04-10T08:31:08Z</updated>

		<summary type="html">&lt;p&gt;Diana Butuza: /* Exemplu */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==  Enunț ==&lt;br /&gt;
Un pitic pasionat de numere trebuie să-și pună flori în grădină. El are de plantat m rânduri cu flori, aceeași floare pe tot rândul. Rândurile sunt numerotate de la 1 la m. Având la dispoziție suficiente specii de flori, piticul nostru s-a gândit să le planteze folosind următorul algoritm matematic: pe rândurile care sunt numere prime, va planta exact floarea numerotată cu numărul prim respectiv, iar pe celelalte rânduri va planta floarea numerotată cu suma divizorilor primi ai numărului neprim.&lt;br /&gt;
== Cerinţa ==&lt;br /&gt;
Să se realizeze un program care să afişeze ordinea de așezare a florilor pe cele &#039;&#039;&#039;m&#039;&#039;&#039; rânduri.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Fișierul de intrare &#039;&#039;&#039;pitic.in&#039;&#039;&#039; conține pe prima linie numărul &#039;&#039;&#039;m&#039;&#039;&#039;.&lt;br /&gt;
== Date de ieşire ==&lt;br /&gt;
Dacă datele sunt introduse corect, în fișier se va afișa: &amp;quot;Datele sunt introduse corect.&amp;quot;, apoi fişierul de ieşire &#039;&#039;&#039;pitic.out&#039;&#039;&#039; va conține pe prima un șir de &#039;&#039;&#039;m&#039;&#039;&#039; numere, separate prin câte un spațiu, fiecare număr reprezentând specia de floare ce urmează să fie plantată pe rândul respectiv. În cazul în care datele nu respectă restricțiile, se va afișa în fișier : &amp;quot;Datele nu corespund restricțiilor impuse.&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Restricții și precizări ==&lt;br /&gt;
* 1 &amp;amp;les; m &amp;amp;les; 1000&lt;br /&gt;
== Exemplu ==&lt;br /&gt;
; pitic.in&lt;br /&gt;
: 6&lt;br /&gt;
; pitic.out&lt;br /&gt;
: Datele de intrare corespund restricțiilor impuse.&lt;br /&gt;
: 0 2 3 2 5 5&lt;br /&gt;
&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
&lt;br /&gt;
def validare_date(m):&lt;br /&gt;
    return 1 &amp;lt;= m &amp;lt;= 1000&lt;br /&gt;
&lt;br /&gt;
def prim(n):&lt;br /&gt;
    d = 2&lt;br /&gt;
    cnt = 1&lt;br /&gt;
    while n &amp;gt; 1:&lt;br /&gt;
        p = 0&lt;br /&gt;
        while n % d == 0:&lt;br /&gt;
            p += 1&lt;br /&gt;
            n //= d&lt;br /&gt;
        if p &amp;gt; 0:&lt;br /&gt;
            cnt *= (p + 1)&lt;br /&gt;
        d += 1&lt;br /&gt;
        if d * d &amp;gt; n:&lt;br /&gt;
            d = n&lt;br /&gt;
    if cnt == 2:&lt;br /&gt;
        return 1&lt;br /&gt;
    else:&lt;br /&gt;
        return 0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def sumprim(n):&lt;br /&gt;
    s = 0&lt;br /&gt;
    d = 2&lt;br /&gt;
    while n &amp;gt; 1:&lt;br /&gt;
        p = 0&lt;br /&gt;
        while n % d == 0:&lt;br /&gt;
            p += 1&lt;br /&gt;
            n //= d&lt;br /&gt;
        if p &amp;gt; 0:&lt;br /&gt;
            s += d&lt;br /&gt;
        d += 1&lt;br /&gt;
        if d * d &amp;gt; n:&lt;br /&gt;
            d = n&lt;br /&gt;
    return s&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    with open(&amp;quot;pitic.in&amp;quot;) as fin, open(&amp;quot;pitic.out&amp;quot;, &amp;quot;w&amp;quot;) as fout:&lt;br /&gt;
        m = int(fin.readline().strip())&lt;br /&gt;
        if validare_date(m):&lt;br /&gt;
            fout.write(&amp;quot;Datele de intrare corespund restrictiilor impuse.\n&amp;quot;)&lt;br /&gt;
            for i in range(1, m + 1):&lt;br /&gt;
                if prim(i):&lt;br /&gt;
                    fout.write(str(i) + &amp;quot; &amp;quot;)&lt;br /&gt;
                else:&lt;br /&gt;
                    fout.write(str(sumprim(i)) + &amp;quot; &amp;quot;)&lt;br /&gt;
        else:&lt;br /&gt;
            fout.write(&amp;quot;Datele de intrare nu corespund restrictiilor impuse.&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Explicație rezolvare ==&lt;br /&gt;
Funcția validare_date(m) verifică dacă numărul m este între 1 și 1000, returnând True dacă este și False altfel.&amp;lt;br&amp;gt;Funcția prim(n) verifică dacă numărul n este prim. Mai exact, aceasta determină factorii primi ai lui n și verifică dacă n are exact doi factori primi distincți. Dacă da, atunci n este prim și funcția returnează 1, altfel funcția returnează 0.&amp;lt;br&amp;gt;Funcția sumprim(n) calculează suma divizorilor primi ai lui n, cu excepția lui n . Pentru aceasta, se determină factorii primi ai lui n și se adună doar aceia care sunt prima putere a unui număr prim.&amp;lt;br&amp;gt;În funcția principală, se citește numărul m din fișierul de intrare și se verifică dacă este valid. Dacă da, se scrie mesajul &amp;quot;Datele de intrare corespund restrictiilor impuse.&amp;quot; în fișierul de ieșire și se parcurg toate rândurile de la 1 la m. Pentru fiecare rând, se determină dacă este prim și, dacă da, se scrie numărul prim respectiv în fișierul de ieșire. În caz contrar, se calculează suma divizorilor primi ai rândului respectiv și se scrie acea sumă în fișierul de ieșire. Dacă m nu este valid, se scrie în fișierul de ieșire mesajul &amp;quot;Datele de intrare nu corespund restrictiilor impuse.&amp;quot;&lt;/div&gt;</summary>
		<author><name>Diana Butuza</name></author>
	</entry>
</feed>