<?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=Alexandra+Le%C8%99</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=Alexandra+Le%C8%99"/>
	<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/wiki/Special:Contributions/Alexandra_Le%C8%99"/>
	<updated>2026-05-01T02:52:06Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.42.1</generator>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=28354&amp;diff=7587</id>
		<title>28354</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=28354&amp;diff=7587"/>
		<updated>2023-12-03T15:40:03Z</updated>

		<summary type="html">&lt;p&gt;Alexandra Leș: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;28354 (Florin Bojor)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Fie &amp;lt;math&amp;gt;O&amp;lt;/math&amp;gt; punctul de intersecție a diagonalelor patrulaterului convex &amp;lt;math&amp;gt;ABCD&amp;lt;/math&amp;gt; și punctele &amp;lt;math&amp;gt;E&amp;lt;/math&amp;gt; ,&amp;lt;math&amp;gt;F&amp;lt;/math&amp;gt; ,&amp;lt;math&amp;gt;G&amp;lt;/math&amp;gt; și &amp;lt;math&amp;gt;H&amp;lt;/math&amp;gt; pe segmentele &amp;lt;math&amp;gt;OA&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;OB&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;OC&amp;lt;/math&amp;gt;, respectiv &amp;lt;math&amp;gt;OD&amp;lt;/math&amp;gt;, astfel încât &amp;lt;math&amp;gt;AE = BF = CG = DH&amp;lt;/math&amp;gt;. Notăm cu &amp;lt;math&amp;gt;I&amp;lt;/math&amp;gt;,&amp;lt;math&amp;gt;J&amp;lt;/math&amp;gt;,&amp;lt;math&amp;gt;K&amp;lt;/math&amp;gt; și &amp;lt;math&amp;gt;L&amp;lt;/math&amp;gt; mijloacele segmentelor &amp;lt;math&amp;gt;AB&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;BC&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;CD&amp;lt;/math&amp;gt;, respectiv &amp;lt;math&amp;gt;DA&amp;lt;/math&amp;gt; și cu &amp;lt;math&amp;gt;M&amp;lt;/math&amp;gt;,&amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt;,&amp;lt;math&amp;gt;P&amp;lt;/math&amp;gt; și &amp;lt;math&amp;gt;Q&amp;lt;/math&amp;gt; mijloacele segmentelor &amp;lt;math&amp;gt;EF&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;FG&amp;lt;/math&amp;gt;,&lt;br /&gt;
&amp;lt;math&amp;gt;GH&amp;lt;/math&amp;gt;, respectiv &amp;lt;math&amp;gt;HE&amp;lt;/math&amp;gt;. Arătați că:&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;i&amp;gt; a) punctele &amp;lt;math&amp;gt;I&amp;lt;/math&amp;gt;,&amp;lt;math&amp;gt;M&amp;lt;/math&amp;gt; și &amp;lt;math&amp;gt;K&amp;lt;/math&amp;gt; sunt coliniare dacă și numai dacă &amp;lt;math&amp;gt;AC=BD&amp;lt;/math&amp;gt;.&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;i&amp;gt; b)  &amp;lt;math&amp;gt;AC \not= BD&amp;lt;/math&amp;gt;, punctele de intersecție ale dreptelor &amp;lt;math&amp;gt;IM&amp;lt;/math&amp;gt;,&amp;lt;math&amp;gt;NJ&amp;lt;/math&amp;gt;,&amp;lt;math&amp;gt;PK&amp;lt;/math&amp;gt; și  &amp;lt;math&amp;gt;LQ&amp;lt;/math&amp;gt; sunt vărfurile unui dreptunghi.&#039;&#039;&amp;lt;/i&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Soluție.&#039;&#039;&#039;&lt;br /&gt;
a)Fie &amp;lt;math&amp;gt;AE = BF = CG = x&amp;lt;/math&amp;gt; și versorii &amp;lt;math&amp;gt;\overrightarrow{i}&amp;lt;/math&amp;gt; și &amp;lt;math&amp;gt;\overrightarrow{j}&amp;lt;/math&amp;gt; a vectorilor &amp;lt;math&amp;gt;\overrightarrow{A C}&amp;lt;/math&amp;gt; respectiv &amp;lt;math&amp;gt;\overrightarrow{B D}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Deoarece &amp;lt;math&amp;gt;I&amp;lt;/math&amp;gt; și &amp;lt;math&amp;gt;M&amp;lt;/math&amp;gt; sunt mijloacele segmentelor &amp;lt;math&amp;gt;AB&amp;lt;/math&amp;gt;, respectiv &amp;lt;math&amp;gt;EF&amp;lt;/math&amp;gt;,obținem:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\overrightarrow{I M} = \frac{{1}}{2} \cdot (\overrightarrow{A E}+\overrightarrow{B F}) =\frac{{x}}{2} \cdot &lt;br /&gt;
 \overrightarrow{i} + \frac{{x}}{2} \cdot  \overrightarrow{j} &amp;lt;/math&amp;gt;. (1)&lt;br /&gt;
&lt;br /&gt;
Cum &amp;lt;math&amp;gt;K&amp;lt;/math&amp;gt; este mijloxul segemntului &amp;lt;math&amp;gt;CD&amp;lt;/math&amp;gt;,deducem:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\overrightarrow{I K} = \frac{{1}}{2} \cdot (\overrightarrow{A C}+\overrightarrow{B D}) =\frac{{AC}}{2} \cdot &lt;br /&gt;
 \overrightarrow{i} + \frac{{BD}}{2} \cdot  \overrightarrow{j} &amp;lt;/math&amp;gt; (2)&lt;br /&gt;
&lt;br /&gt;
Din (1) și (2) rezultă ca &amp;lt;math&amp;gt;I&amp;lt;/math&amp;gt;,&amp;lt;math&amp;gt;M&amp;lt;/math&amp;gt; și&amp;lt;math&amp;gt;K&amp;lt;/math&amp;gt; sunt coliniare dacă și numai dacă &amp;lt;math&amp;gt;AC = BD&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
b)Notăm &amp;lt;math&amp;gt;\overrightarrow{i} +\overrightarrow{j} = \overrightarrow{O R}&amp;lt;/math&amp;gt;  și  &amp;lt;math&amp;gt;\overrightarrow{-i} +\overrightarrow{j} = \overrightarrow{O S}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Se observă că  semidreptele (OR și OS sunt bisectoarele unghiurilor COD,respectiv AOD.Ca în (1),deducem că &amp;lt;math&amp;gt;\overrightarrow{P K} =\overrightarrow{I M} =  \frac{{x}}{2} \cdot (\overrightarrow{i}+\overrightarrow{j}) =\frac{{x}}{2} \cdot  \overrightarrow{O R}&amp;lt;/math&amp;gt;,iar &amp;lt;math&amp;gt;\overrightarrow{J N} =\overrightarrow{Q L} =  \frac{{x}}{2} \cdot (\overrightarrow{-i}+\overrightarrow{j}) =\frac{{x}}{2} \cdot  \overrightarrow{O S}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Fiind bisectoarele a două unghiuri adiacente suplementare,semidreptele (OR și OS sunt perpendiculare ,de unde rezultă că &amp;lt;math&amp;gt;IM \perp JN&amp;lt;/math&amp;gt;,&amp;lt;math&amp;gt;JN \perp KP&amp;lt;/math&amp;gt; , &amp;lt;math&amp;gt;KP \perp LQ&amp;lt;/math&amp;gt;  și &amp;lt;math&amp;gt;LQ \perp IM&amp;lt;/math&amp;gt;.Dar &amp;lt;math&amp;gt;AC \not= BD&amp;lt;/math&amp;gt; , deci &amp;lt;math&amp;gt;I&amp;lt;/math&amp;gt;,&amp;lt;math&amp;gt;M&amp;lt;/math&amp;gt; și &amp;lt;math&amp;gt;K&amp;lt;math&amp;gt;M&amp;lt;/math&amp;gt; sunt necoliniare ,așadar &amp;lt;math&amp;gt;IM \parallel KP&amp;lt;/math&amp;gt; , și analog &amp;lt;math&amp;gt;JN \parallel LQ&amp;lt;/math&amp;gt;.Notând cu &amp;lt;math&amp;gt;X&amp;lt;/math&amp;gt;,&amp;lt;math&amp;gt;Y&amp;lt;/math&amp;gt;,&amp;lt;math&amp;gt;Z&amp;lt;/math&amp;gt;,&amp;lt;math&amp;gt;W&amp;lt;/math&amp;gt; intersecțiile perechilor de drepte &amp;lt;math&amp;gt;IM&amp;lt;/math&amp;gt; și &amp;lt;math&amp;gt;JN&amp;lt;/math&amp;gt;,&amp;lt;math&amp;gt;JN&amp;lt;/math&amp;gt; și &amp;lt;math&amp;gt;KP&amp;lt;/math&amp;gt;,&amp;lt;math&amp;gt;KP&amp;lt;/math&amp;gt; și &amp;lt;math&amp;gt;LQ&amp;lt;/math&amp;gt;,&amp;lt;math&amp;gt;LQ&amp;lt;/math&amp;gt; și &amp;lt;math&amp;gt;IM&amp;lt;/math&amp;gt; ,din cele de mai înaite rezultă că &amp;lt;math&amp;gt;XYZW&amp;lt;/math&amp;gt; este dreptunghi.&lt;/div&gt;</summary>
		<author><name>Alexandra Leș</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=28354&amp;diff=7586</id>
		<title>28354</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=28354&amp;diff=7586"/>
		<updated>2023-12-03T15:35:38Z</updated>

		<summary type="html">&lt;p&gt;Alexandra Leș: Pagină nouă: &amp;#039;&amp;#039;&amp;#039;28354 (Florin Bojor)&amp;#039;&amp;#039;&amp;#039;  &amp;#039;&amp;#039;Fie &amp;lt;math&amp;gt;O&amp;lt;/math&amp;gt; punctul de intersecție a diagonalelor patrulaterului convex &amp;lt;math&amp;gt;ABCD&amp;lt;/math&amp;gt; și punctele &amp;lt;math&amp;gt;E&amp;lt;/math&amp;gt; ,&amp;lt;math&amp;gt;F&amp;lt;/math&amp;gt; ,&amp;lt;math&amp;gt;G&amp;lt;/math&amp;gt; și &amp;lt;math&amp;gt;H&amp;lt;/math&amp;gt; pe segmentele &amp;lt;math&amp;gt;OA&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;OB&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;OC&amp;lt;/math&amp;gt;, respectiv &amp;lt;math&amp;gt;OD&amp;lt;/math&amp;gt;, astfel încât &amp;lt;math&amp;gt;AE = BF = CG = DH&amp;lt;/math&amp;gt;. Notăm cu &amp;lt;math&amp;gt;I&amp;lt;/math&amp;gt;,&amp;lt;math&amp;gt;J&amp;lt;/math&amp;gt;,&amp;lt;math&amp;gt;K&amp;lt;/math&amp;gt; și &amp;lt;math&amp;gt;L&amp;lt;/math&amp;gt; mijloacele segmentelor &amp;lt;math&amp;gt;AB&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;BC&amp;lt;/math&amp;gt;, &amp;lt;ma...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;28354 (Florin Bojor)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Fie &amp;lt;math&amp;gt;O&amp;lt;/math&amp;gt; punctul de intersecție a diagonalelor patrulaterului convex &amp;lt;math&amp;gt;ABCD&amp;lt;/math&amp;gt; și punctele &amp;lt;math&amp;gt;E&amp;lt;/math&amp;gt; ,&amp;lt;math&amp;gt;F&amp;lt;/math&amp;gt; ,&amp;lt;math&amp;gt;G&amp;lt;/math&amp;gt; și &amp;lt;math&amp;gt;H&amp;lt;/math&amp;gt; pe segmentele &amp;lt;math&amp;gt;OA&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;OB&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;OC&amp;lt;/math&amp;gt;, respectiv &amp;lt;math&amp;gt;OD&amp;lt;/math&amp;gt;, astfel încât &amp;lt;math&amp;gt;AE = BF = CG = DH&amp;lt;/math&amp;gt;. Notăm cu &amp;lt;math&amp;gt;I&amp;lt;/math&amp;gt;,&amp;lt;math&amp;gt;J&amp;lt;/math&amp;gt;,&amp;lt;math&amp;gt;K&amp;lt;/math&amp;gt; și &amp;lt;math&amp;gt;L&amp;lt;/math&amp;gt; mijloacele segmentelor &amp;lt;math&amp;gt;AB&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;BC&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;CD&amp;lt;/math&amp;gt;, respectiv &amp;lt;math&amp;gt;DA&amp;lt;/math&amp;gt; și cu &amp;lt;math&amp;gt;M&amp;lt;/math&amp;gt;,&amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt;,&amp;lt;math&amp;gt;P&amp;lt;/math&amp;gt; și &amp;lt;math&amp;gt;Q&amp;lt;/math&amp;gt; mijloacele segmentelor &amp;lt;math&amp;gt;EF&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;FG&amp;lt;/math&amp;gt;,&lt;br /&gt;
&amp;lt;math&amp;gt;GH&amp;lt;/math&amp;gt;, respectiv &amp;lt;math&amp;gt;HE&amp;lt;/math&amp;gt;. Arătați că:&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;i&amp;gt; a) punctele &amp;lt;math&amp;gt;I&amp;lt;/math&amp;gt;,&amp;lt;math&amp;gt;M&amp;lt;/math&amp;gt; și &amp;lt;math&amp;gt;K&amp;lt;/math&amp;gt; sunt coliniare dacă și numai dacă &amp;lt;math&amp;gt;AC=BD&amp;lt;/math&amp;gt;.&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;i&amp;gt; b)  &amp;lt;math&amp;gt;AC \not= BD&amp;lt;/math&amp;gt;, punctele de intersecție ale dreptelor &amp;lt;math&amp;gt;IM&amp;lt;/math&amp;gt;,&amp;lt;math&amp;gt;NJ&amp;lt;/math&amp;gt;,&amp;lt;math&amp;gt;PK&amp;lt;/math&amp;gt; și  &amp;lt;math&amp;gt;LQ&amp;lt;/math&amp;gt; sunt vărfurile unui dreptunghi.&#039;&#039;&amp;lt;/i&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Soluție.&#039;&#039;&#039;&lt;br /&gt;
a)Fie &amp;lt;math&amp;gt;AE = BF = CG = x&amp;lt;/math&amp;gt; și versorii &amp;lt;math&amp;gt;\overrightarrow{i}&amp;lt;/math&amp;gt; și &amp;lt;math&amp;gt;\overrightarrow{j}&amp;lt;/math&amp;gt; a vectorilor &amp;lt;math&amp;gt;\overrightarrow{A C}&amp;lt;/math&amp;gt; respectiv &amp;lt;math&amp;gt;\overrightarrow{B D}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Deoarece &amp;lt;math&amp;gt;I&amp;lt;/math&amp;gt; și &amp;lt;math&amp;gt;M&amp;lt;/math&amp;gt; sunt mijloacele segmentelor &amp;lt;math&amp;gt;AB&amp;lt;/math&amp;gt;, respectiv &amp;lt;math&amp;gt;EF&amp;lt;/math&amp;gt;,obținem:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\overrightarrow{I M} = \frac{{1}}{2} \cdot (\overrightarrow{A E}+\overrightarrow{B F}) =\frac{{x}}{2} \cdot &lt;br /&gt;
 \overrightarrow{i} + \frac{{x}}{2} \cdot  \overrightarrow{j} &amp;lt;/math&amp;gt;. (1)&lt;br /&gt;
&lt;br /&gt;
Cum &amp;lt;math&amp;gt;K&amp;lt;/math&amp;gt; este mijloxul segemntului &amp;lt;math&amp;gt;CD&amp;lt;/math&amp;gt;,deducem:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\overrightarrow{I K} = \frac{{1}}{2} \cdot (\overrightarrow{A C}+\overrightarrow{B D}) =\frac{{AC}}{2} \cdot &lt;br /&gt;
 \overrightarrow{i} + \frac{{BD}}{2} \cdot  \overrightarrow{j} &amp;lt;/math&amp;gt; (2)&lt;br /&gt;
&lt;br /&gt;
Din (1) și (2) rezultă ca &amp;lt;math&amp;gt;I&amp;lt;math&amp;gt;M&amp;lt;/math&amp;gt;,&amp;lt;math&amp;gt;M&amp;lt;/math&amp;gt; și&amp;lt;math&amp;gt;K&amp;lt;/math&amp;gt; sunt coliniare dacă și numai dacă &amp;lt;math&amp;gt;AC = BD&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
b)Notăm &amp;lt;math&amp;gt;\overrightarrow{i} +\overrightarrow{j} = \overrightarrow{O R}&amp;lt;/math&amp;gt;  și  &amp;lt;math&amp;gt;\overrightarrow{-i} +\overrightarrow{j} = \overrightarrow{O S}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Se observă că  semidreptele (OR și OS sunt bisectoarele unghiurilor COD,respectiv AOD.Ca în (1),deducem că &amp;lt;math&amp;gt;\overrightarrow{P K} =\overrightarrow{I M} =  \frac{{x}}{2} \cdot (\overrightarrow{i}+\overrightarrow{j}) =\frac{{x}}{2} \cdot  \overrightarrow{O R}&amp;lt;/math&amp;gt;,iar &amp;lt;math&amp;gt;\overrightarrow{J N} =\overrightarrow{Q L} =  \frac{{x}}{2} \cdot (\overrightarrow{-i}+\overrightarrow{j}) =\frac{{x}}{2} \cdot  \overrightarrow{O S}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Fiind bisectoarele a două unghiuri adiacente suplementare,semidreptele (OR și OS sunt perpendiculare ,de unde rezultă că &amp;lt;math&amp;gt;IM \perp JN&amp;lt;/math&amp;gt;,&amp;lt;math&amp;gt;JN \perp KP&amp;lt;/math&amp;gt; , &amp;lt;math&amp;gt;KP \perp LQ&amp;lt;/math&amp;gt;  și &amp;lt;math&amp;gt;LQ \perp IM&amp;lt;/math&amp;gt;.Dar &amp;lt;math&amp;gt;AC \not= BD&amp;lt;/math&amp;gt; , deci &amp;lt;math&amp;gt;I&amp;lt;/math&amp;gt;,&amp;lt;math&amp;gt;M&amp;lt;/math&amp;gt; și &amp;lt;math&amp;gt;K&amp;lt;math&amp;gt;M&amp;lt;/math&amp;gt; sunt necoliniare ,așadar &amp;lt;math&amp;gt;IM \parallel KP&amp;lt;/math&amp;gt; , și analog &amp;lt;math&amp;gt;JN \parallel LQ&amp;lt;/math&amp;gt;.Notând cu &amp;lt;math&amp;gt;X&amp;lt;/math&amp;gt;,&amp;lt;math&amp;gt;Y&amp;lt;/math&amp;gt;,&amp;lt;math&amp;gt;Z&amp;lt;/math&amp;gt;,&amp;lt;math&amp;gt;W&amp;lt;/math&amp;gt; intersecțiile perechilor de drepte &amp;lt;math&amp;gt;IM&amp;lt;/math&amp;gt; și &amp;lt;math&amp;gt;JN&amp;lt;/math&amp;gt;,&amp;lt;math&amp;gt;JN&amp;lt;/math&amp;gt; și &amp;lt;math&amp;gt;KP&amp;lt;/math&amp;gt;,&amp;lt;math&amp;gt;KP&amp;lt;/math&amp;gt; și &amp;lt;math&amp;gt;LQ&amp;lt;/math&amp;gt;,&amp;lt;math&amp;gt;LQ&amp;lt;/math&amp;gt; și &amp;lt;math&amp;gt;IM&amp;lt;/math&amp;gt; ,din cele de mai înaite rezultă că &amp;lt;math&amp;gt;XYZW&amp;lt;/math&amp;gt; este dreptunghi.&lt;/div&gt;</summary>
		<author><name>Alexandra Leș</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=4024_-_Matprod&amp;diff=5299</id>
		<title>4024 - Matprod</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=4024_-_Matprod&amp;diff=5299"/>
		<updated>2023-04-28T22:17:01Z</updated>

		<summary type="html">&lt;p&gt;Alexandra Leș: Pagină nouă: == Cerinţa == Se consideră o matrice pătratică &amp;#039;&amp;#039;&amp;#039;A=(ai,j)&amp;#039;&amp;#039;&amp;#039;de ordin &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039;, elementele sale fiind cifre în baza &amp;#039;&amp;#039;&amp;#039;10&amp;#039;&amp;#039;&amp;#039;. Pentru fiecare element ai,j al matricei definim drumul de la elementul a1,1 la elementul ai,j ca fiind format din elementele: &amp;#039;&amp;#039;&amp;#039;a1,1, a2,1, …, ai,1, ai,2, ai,3, …, ai,j&amp;#039;&amp;#039;&amp;#039;. Pentru fiecare element &amp;#039;&amp;#039;&amp;#039;ai,j&amp;#039;&amp;#039;&amp;#039; al matricei, se cere să se calculeze suma produselor oricăror două elemente situate pe drumul de la elementul &amp;#039;&amp;#039;&amp;#039;a1,1&amp;#039;&amp;#039;&amp;#039; la elementul &amp;#039;...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cerinţa ==&lt;br /&gt;
Se consideră o matrice pătratică &#039;&#039;&#039;A=(ai,j)&#039;&#039;&#039;de ordin &#039;&#039;&#039;n&#039;&#039;&#039;, elementele sale fiind cifre în baza &#039;&#039;&#039;10&#039;&#039;&#039;. Pentru fiecare element ai,j al matricei definim drumul de la elementul a1,1 la elementul ai,j ca fiind format din elementele: &#039;&#039;&#039;a1,1, a2,1, …, ai,1, ai,2, ai,3, …, ai,j&#039;&#039;&#039;. Pentru fiecare element &#039;&#039;&#039;ai,j&#039;&#039;&#039; al matricei, se cere să se calculeze suma produselor oricăror două elemente situate pe drumul de la elementul &#039;&#039;&#039;a1,1&#039;&#039;&#039; la elementul &#039;&#039;&#039;ai,j&#039;&#039;&#039;.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Fișierul de intrare &#039;&#039;&#039;matprod.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; cifre separate prin spaţiu, reprezentând elementele matricei &#039;&#039;&#039;A&#039;&#039;&#039;.&lt;br /&gt;
== Date de ieşire ==&lt;br /&gt;
Dacă datele sunt introduse corect,în fişierul de ieşire &#039;&#039;&#039;matprod.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 va conţine pe primele &#039;&#039;&#039;n&#039;&#039;&#039; linii câte &#039;&#039;&#039;n&#039;&#039;&#039; numere naturale separate prin spaţiu, reprezentând suma cerută pentru fiecare element al matricei.Î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; 1000&lt;br /&gt;
* elementele matricei A sunt cifre&lt;br /&gt;
== Exemplu ==&lt;br /&gt;
; matprod.in&lt;br /&gt;
: 3&lt;br /&gt;
: 1 2 3 &lt;br /&gt;
: 4 5 0&lt;br /&gt;
: 9 3 7&lt;br /&gt;
; matprod.out&lt;br /&gt;
: Datele sunt introduse corect.&lt;br /&gt;
: 0 2 11&lt;br /&gt;
: 4 29 29&lt;br /&gt;
: 49 91 210&lt;br /&gt;
== Explicație == &lt;br /&gt;
De exemplu, pentru elementul &#039;&#039;&#039;a3,2&#039;&#039;&#039;, drumul este format din &#039;&#039;&#039;1, 4, 9, 3&#039;&#039;&#039;, iar suma este &#039;&#039;&#039;1•4+1•9+1•3+4•9+4•3+9•3=91&#039;&#039;&#039;.&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
&lt;br /&gt;
def validare_matrice(matrice):&lt;br /&gt;
    n = len(matrice)&lt;br /&gt;
    # Verificăm dacă matricea este patratică și dacă fiecare element este un numar întreg pozitiv&lt;br /&gt;
    for i in range(n):&lt;br /&gt;
        if len(matrice[i]) != n:&lt;br /&gt;
            return False&lt;br /&gt;
        for j in range(n):&lt;br /&gt;
            if not matrice[i][j].isdigit():&lt;br /&gt;
                return False&lt;br /&gt;
            matrice[i][j] = int(matrice[i][j])&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def calculeaza_suma_produselor(matrice):&lt;br /&gt;
    n = len(matrice)&lt;br /&gt;
    # Inițializăm două matrici pentru a calcula sumele și produsele&lt;br /&gt;
    s = [[0 for j in range(n)] for i in range(n)]&lt;br /&gt;
    b = [[0 for j in range(n)] for i in range(n)]&lt;br /&gt;
&lt;br /&gt;
    # Calculăm sumele parțiale ale matricei&lt;br /&gt;
    s[0][0] = matrice[0][0]&lt;br /&gt;
    for i in range(1, n):&lt;br /&gt;
        s[i][0] = s[i-1][0] + matrice[i][0]&lt;br /&gt;
    for j in range(1, n):&lt;br /&gt;
        s[0][j] = s[0][j-1] + matrice[0][j]&lt;br /&gt;
    for i in range(1, n):&lt;br /&gt;
        for j in range(1, n):&lt;br /&gt;
            s[i][j] = s[i][j-1] + s[i-1][j] - s[i-1][j-1] + matrice[i][j]&lt;br /&gt;
&lt;br /&gt;
    # Calculăm suma produselor pentru fiecare element al matricei&lt;br /&gt;
    b[0][0] = 0&lt;br /&gt;
    for i in range(1, n):&lt;br /&gt;
        b[i][0] = b[i-1][0] + s[i-1][0] * matrice[i][0]&lt;br /&gt;
    for j in range(1, n):&lt;br /&gt;
        b[0][j] = b[0][j-1] + s[0][j-1] * matrice[0][j]&lt;br /&gt;
    for i in range(1, n):&lt;br /&gt;
        for j in range(1, n):&lt;br /&gt;
            b[i][j] = b[i][j-1] + (s[i][j-1] - s[i-1][j-1] + s[i-1][0]) * matrice[i][j]&lt;br /&gt;
&lt;br /&gt;
    return b&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    # Citim datele de intrare din fișier&lt;br /&gt;
    with open(&#039;matprod.in&#039;, &#039;r&#039;) as f:&lt;br /&gt;
        n = int(f.readline())&lt;br /&gt;
        matrice = [f.readline().split() for _ in range(n)]&lt;br /&gt;
&lt;br /&gt;
    # Validăm matricea&lt;br /&gt;
    if not validare_matrice(matrice):&lt;br /&gt;
        # Dacă matricea nu este validă, afișăm o eroare in fișierul de ieșire și ieșim din program&lt;br /&gt;
        with open(&#039;matprod.out&#039;, &#039;w&#039;) as f:&lt;br /&gt;
            f.write(&amp;quot;Datele nu corespund restricțiilor impuse.&amp;quot;)&lt;br /&gt;
    else:&lt;br /&gt;
        # Daca matricea este validă, calculăm suma produselor și o afisam în fișierul de ieșire&lt;br /&gt;
        rezultat = calculeaza_suma_produselor(matrice)&lt;br /&gt;
&lt;br /&gt;
        with open(&#039;matprod.out&#039;, &#039;w&#039;) as f:&lt;br /&gt;
            f.write(&amp;quot;Datele sunt introduse corect.\n&amp;quot;)&lt;br /&gt;
            for i in range(n):&lt;br /&gt;
                f.write(&#039; &#039;.join(str(x) for x in rezultat[i]) + &#039;\n&#039;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Alexandra Leș</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=1749_-_Zona_4&amp;diff=5293</id>
		<title>1749 - Zona 4</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=1749_-_Zona_4&amp;diff=5293"/>
		<updated>2023-04-28T21:35:49Z</updated>

		<summary type="html">&lt;p&gt;Alexandra Leș: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Enunț ==&lt;br /&gt;
Considerăm o matrice pătratică cu &#039;&#039;&#039;N&#039;&#039;&#039; linii și &#039;&#039;&#039;N&#039;&#039;&#039; coloane. În această matrice sunt definite &#039;&#039;&#039;4&#039;&#039;&#039; zone:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;zona 1&#039;&#039;&#039;, formată din elementele situate strict deasupra diagonalei principale și strict deasupra diagonalei secundare;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;zona 2&#039;&#039;&#039;, formată din elementele situate strict deasupra diagonalei principale și strict sub diagonala secundară;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;zona 3&#039;&#039;&#039;, formată din elementele situate strict sub diagonala principală și strict sub diagonala secundară;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;zona 4&#039;&#039;&#039;, formată din elementele situate strict sub diagonala principală și strict deasupra diagonalei secundare;&amp;lt;br&amp;gt;&lt;br /&gt;
== Cerinţa ==&lt;br /&gt;
Se dă o matrice pătratică și un număr natural &#039;&#039;&#039;Z&#039;&#039;&#039;, reprezentând o zonă din matrice. Să se determine suma elementelor din zona &#039;&#039;&#039;Z&#039;&#039;&#039;.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Programul citește de la tastatură numerele &#039;&#039;&#039;N Z&#039;&#039;&#039;, iar apoi &#039;&#039;&#039;N*N&#039;&#039;&#039; numere naturale, reprezentând elementele matricei.&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 un rând nou numărul &#039;&#039;&#039;S&#039;&#039;&#039;, reprezentând suma elementelor din zona &#039;&#039;&#039;Z&#039;&#039;&#039; a matricei.Î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;
* 1 &amp;amp;les; N &amp;amp;les; 200&lt;br /&gt;
* 1 &amp;amp;les; Z &amp;amp;les; 4&lt;br /&gt;
*elementele matricei vor fi mai mici decât 1000&lt;br /&gt;
== Exemplu ==&lt;br /&gt;
; Intrare&lt;br /&gt;
: 5 2&lt;br /&gt;
: 7 4 8 5 10 &lt;br /&gt;
: 7 7 10 2 2 &lt;br /&gt;
: 1 2 8 8 4 &lt;br /&gt;
: 9 9 5 3 2 &lt;br /&gt;
: 3 6 7 1 7 &lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele sunt introduse corect.&lt;br /&gt;
: 16&lt;br /&gt;
== Explicație == &lt;br /&gt;
Elementele din zona &#039;&#039;&#039;2&#039;&#039;&#039; sunt &#039;&#039;&#039;2 8 4 2&#039;&#039;&#039;, cu suma &#039;&#039;&#039;16&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
&lt;br /&gt;
def validare_matrice(matrice):&lt;br /&gt;
    n = len(matrice)&lt;br /&gt;
    # Verificăm dacă matricea este pătratică&lt;br /&gt;
    for linie in matrice:&lt;br /&gt;
        if len(linie) != n:&lt;br /&gt;
            return False&lt;br /&gt;
    # Verificăm dacă elementele matricei sunt mai mici decât 1000&lt;br /&gt;
    for i in range(n):&lt;br /&gt;
        for j in range(n):&lt;br /&gt;
            if matrice[i][j] &amp;gt;= 1000:&lt;br /&gt;
                return False&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
def suma_zona(matrice, z):&lt;br /&gt;
    n = len(matrice)  # dimensiunea matricei&lt;br /&gt;
&lt;br /&gt;
    s = 0  # suma inițială este 0&lt;br /&gt;
&lt;br /&gt;
    # pentru fiecare zonă, adăugăm elementele corespunzătoare la suma&lt;br /&gt;
    if z == 1:&lt;br /&gt;
        # Zona 1 este triunghiulară și se află sub diagonala principală&lt;br /&gt;
        for i in range(n):&lt;br /&gt;
            for j in range(n):&lt;br /&gt;
                if i &amp;lt; j and i + j &amp;lt; n:  # condiția pentru a fi în zona 1&lt;br /&gt;
                    s += matrice[i][j]  # adăugăm elementul la sumă&lt;br /&gt;
&lt;br /&gt;
    elif z == 2:&lt;br /&gt;
        # Zona 2 este triunghiulară și se află deasupra diagonalei principale&lt;br /&gt;
        for i in range(n):&lt;br /&gt;
            for j in range(n):&lt;br /&gt;
                if i &amp;lt; j and i + j &amp;gt; n - 1:  # condiția pentru a fi în zona 2&lt;br /&gt;
                    s += matrice[i][j]  # adăugăm elementul la sumă&lt;br /&gt;
&lt;br /&gt;
    elif z == 3:&lt;br /&gt;
        # Zona 3 este triunghiulară și se află deasupra diagonalei secundare&lt;br /&gt;
        for i in range(n):&lt;br /&gt;
            for j in range(n):&lt;br /&gt;
                if i &amp;gt; j and i + j &amp;gt; n - 1:  # condiția pentru a fi în zona 3&lt;br /&gt;
                    s += matrice[i][j]  # adăugăm elementul la sumă&lt;br /&gt;
&lt;br /&gt;
    elif z == 4:&lt;br /&gt;
        # Zona 4 este triunghiulară și se află sub diagonala secundară&lt;br /&gt;
        for i in range(n):&lt;br /&gt;
            for j in range(n):&lt;br /&gt;
                if i &amp;gt; j and i + j &amp;lt; n:  # condiția pentru a fi în zona 4&lt;br /&gt;
                    s += matrice[i][j]  # adăugăm elementul la sumă&lt;br /&gt;
&lt;br /&gt;
    return s  # returnăm suma calculată&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    dimensiune, zona = input().split() &lt;br /&gt;
    z = int(zona)&lt;br /&gt;
    matrice = []&lt;br /&gt;
    for i in range(n):&lt;br /&gt;
        linie = [int(x) for x in input().split()]&lt;br /&gt;
        matrice.append(linie)&lt;br /&gt;
&lt;br /&gt;
    if validare_matrice(matrice):&lt;br /&gt;
        s = suma_zona(matrice, z)&lt;br /&gt;
        print((&amp;quot;Datele sunt introduse corect.\n&amp;quot;))&lt;br /&gt;
        print(s)&lt;br /&gt;
    else:&lt;br /&gt;
        print(&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>Alexandra Leș</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=1451_-_Iceberg&amp;diff=5291</id>
		<title>1451 - Iceberg</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=1451_-_Iceberg&amp;diff=5291"/>
		<updated>2023-04-28T21:34:57Z</updated>

		<summary type="html">&lt;p&gt;Alexandra Leș: Pagină nouă: == Cerinţa == Se dă o matrice reprezentând o zonă dintr-un ocean ce conține un iceberg; valorile egale cu &amp;#039;&amp;#039;&amp;#039;1&amp;#039;&amp;#039;&amp;#039; fac parte din iceberg, iar cele egale cu &amp;#039;&amp;#039;&amp;#039;0&amp;#039;&amp;#039;&amp;#039; reprezintă apă.  Se știe că icebergul este înconjurat de apa (nu există nici o valoare de &amp;#039;&amp;#039;&amp;#039;1&amp;#039;&amp;#039;&amp;#039; pe marginea matricei) și că într-un interval de timp se topesc toate zonele icebergului care au cel puțin doua laturi vecine cu apa.  Determinați și afișați cate intervale de timp sunt necesare ca ice...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cerinţa ==&lt;br /&gt;
Se dă o matrice reprezentând o zonă dintr-un ocean ce conține un iceberg; valorile egale cu &#039;&#039;&#039;1&#039;&#039;&#039; fac parte din iceberg, iar cele egale cu &#039;&#039;&#039;0&#039;&#039;&#039; reprezintă apă.&lt;br /&gt;
&lt;br /&gt;
Se știe că icebergul este înconjurat de apa (nu există nici o valoare de &#039;&#039;&#039;1&#039;&#039;&#039; pe marginea matricei) și că într-un interval de timp se topesc toate zonele icebergului care au cel puțin doua laturi vecine cu apa.&lt;br /&gt;
&lt;br /&gt;
Determinați și afișați cate intervale de timp sunt necesare ca icebergul să se topească în întregime. De asemenea, afișați pentru fiecare interval de timp câte poziții de gheață are icebergul la începutul intervalului.&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 o matrice de &#039;&#039;&#039;n&#039;&#039;&#039; linii și &#039;&#039;&#039;n&#039;&#039;&#039; coloane reprezentând zona icebergului.&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 un rând nou numărul &#039;&#039;&#039;t&#039;&#039;&#039; reprezentând numărul de intervale de timp și &#039;&#039;&#039;t&#039;&#039;&#039; numere naturale reprezentând suprafața ghețarului la începutul fiecărui interval.Î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;
* 1 &amp;amp;les; N &amp;amp;les; 31&lt;br /&gt;
* Elementele de pe marginile matricii sunt tot timpul 0&lt;br /&gt;
== Exemplu ==&lt;br /&gt;
; Intrare&lt;br /&gt;
: 7&lt;br /&gt;
: 0 0 0 0 0 0 0 &lt;br /&gt;
: 0 1 1 1 1 1 0 &lt;br /&gt;
: 0 0 1 1 1 0 0 &lt;br /&gt;
: 0 0 1 1 1 0 0 &lt;br /&gt;
: 0 1 1 1 1 1 0 &lt;br /&gt;
: 0 0 0 0 0 0 0&lt;br /&gt;
: 0 0 0 0 0 0 0&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele sunt introduse corect.&lt;br /&gt;
: 4&lt;br /&gt;
: 16&lt;br /&gt;
: 12&lt;br /&gt;
: 8&lt;br /&gt;
: 2&lt;br /&gt;
== Explicație == &lt;br /&gt;
&lt;br /&gt;
După primul interval de timp ghețarul arată astfel:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
0 0 0 0 0 0 0 &amp;lt;br&amp;gt;&lt;br /&gt;
0 0 1 1 1 0 0 &amp;lt;br&amp;gt;&lt;br /&gt;
0 0 1 1 1 0 0 &amp;lt;br&amp;gt;&lt;br /&gt;
0 0 1 1 1 0 0 &amp;lt;br&amp;gt;&lt;br /&gt;
0 0 1 1 1 0 0 &amp;lt;br&amp;gt;&lt;br /&gt;
0 0 0 0 0 0 0 &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
După cel de-al doilea interval de timp ghețarul arată astfel:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
0 0 0 0 0 0 0 &amp;lt;br&amp;gt;&lt;br /&gt;
0 0 0 1 0 0 0 &amp;lt;br&amp;gt;&lt;br /&gt;
0 0 1 1 1 0 0 &amp;lt;br&amp;gt;&lt;br /&gt;
0 0 1 1 1 0 0 &amp;lt;br&amp;gt;&lt;br /&gt;
0 0 0 1 0 0 0 &amp;lt;br&amp;gt;&lt;br /&gt;
0 0 0 0 0 0 0 &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
După cel de-al treilea interval de timp ghețarul arată astfel:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
0 0 0 0 0 0 0 &amp;lt;br&amp;gt;&lt;br /&gt;
0 0 0 0 0 0 0 &amp;lt;br&amp;gt;&lt;br /&gt;
0 0 0 1 0 0 0 &amp;lt;br&amp;gt;&lt;br /&gt;
0 0 0 1 0 0 0 &amp;lt;br&amp;gt;&lt;br /&gt;
0 0 0 0 0 0 0 &amp;lt;br&amp;gt;&lt;br /&gt;
0 0 0 0 0 0 0 &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
iar la pasul următor se topește de în întregime.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
&lt;br /&gt;
def validare_matrice(matrice):&lt;br /&gt;
    n = len(matrice)&lt;br /&gt;
    # verificăm dacă matricea este pătratică și are dimensiunea între 1 și 31&lt;br /&gt;
    if not all(len(row) == n for row in matrice) or n &amp;lt; 1 or n &amp;gt; 31:&lt;br /&gt;
        return False&lt;br /&gt;
    # verificăm dacă marginile matricei conțin doar valori de 0&lt;br /&gt;
    if not all(matrice[0][j] == 0 and matrice[n-1][j] == 0 and matrice[i][0] == 0 and matrice[i][n-1] == 0&lt;br /&gt;
               for i in range(n) for j in range(n)):&lt;br /&gt;
        return False&lt;br /&gt;
    # verificăm dacă matricea conține doar valori de 0 și 1&lt;br /&gt;
    if not all(val in [0, 1] for row in matrice for val in row):&lt;br /&gt;
        return False&lt;br /&gt;
    # verificăm dacă icebergul este înconjurat de apă&lt;br /&gt;
    for i in range(1, n-1):&lt;br /&gt;
        for j in range(1, n-1):&lt;br /&gt;
            if matrice[i][j] == 1 and all(matrice[i+di][j+dj] == 0 for di, dj in [(0,1), (1,0), (0,-1), (-1,0)]):&lt;br /&gt;
                return False&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
def topire_iceberguri(matrice):&lt;br /&gt;
    n = len(matrice)&lt;br /&gt;
    S = sum(row.count(1) for row in matrice)  # calculăm inițial numărul de celule din iceberg&lt;br /&gt;
    v = [S]  # adăugăm numărul inițial de celule în lista de soluții&lt;br /&gt;
    while S &amp;gt; 0:  # repetăm până când icebergul a fost complet topit&lt;br /&gt;
        for i in range(1, n-1):&lt;br /&gt;
            for j in range(1, n-1):&lt;br /&gt;
                if matrice[i][j] == 1:  # dacă celula este o parte din iceberg&lt;br /&gt;
                    contor = 0&lt;br /&gt;
                    if matrice[i-1][j] == 0: contor += 1  # dacă celula de sus este apă&lt;br /&gt;
                    if matrice[i+1][j] == 0: contor += 1  # dacă celula de jos este apă&lt;br /&gt;
                    if matrice[i][j-1] == 0: contor += 1  # dacă celula din stânga este apă&lt;br /&gt;
                    if matrice[i][j+1] == 0: contor += 1  # dacă celula din dreapta este apă&lt;br /&gt;
                    if contor &amp;gt;= 2:  # dacă icebergul are mai mult de o celulă de apă învecinată&lt;br /&gt;
                        S -= 1  # scădem numărul de celule din iceberg&lt;br /&gt;
                        matrice[i][j] = 2  # marcam celula curenta ca fiind topita&lt;br /&gt;
        v.append(S)  # adăugăm numărul de celule din iceberg în lista de soluții&lt;br /&gt;
        for i in range(1, n-1):&lt;br /&gt;
            for j in range(1, n-1):&lt;br /&gt;
                if matrice[i][j] == 2:&lt;br /&gt;
                    matrice[i][j] = 0  # resetăm celulele topite la valoarea de apă&lt;br /&gt;
    return v&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
   # citim matricea de la tastatură&lt;br /&gt;
    n = int(input())&lt;br /&gt;
    matrice = []&lt;br /&gt;
    for i in range(n):&lt;br /&gt;
        linie = list(map(int, input().split()))&lt;br /&gt;
        matrice.append(linie)&lt;br /&gt;
&lt;br /&gt;
    # validăm matricea&lt;br /&gt;
    if not validare_matrice(matrice):&lt;br /&gt;
       print(&amp;quot;Datele nu corespund restricțiilor impuse.&amp;quot;)&lt;br /&gt;
    else:&lt;br /&gt;
       solutie = topire_iceberguri(matrice)&lt;br /&gt;
       print(&amp;quot;Datele sunt introduse corect.&amp;quot;)&lt;br /&gt;
       print(len(solutie)-1)&lt;br /&gt;
    for t in solutie[:-1]:&lt;br /&gt;
        print(t)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Alexandra Leș</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=1749_-_Zona_4&amp;diff=5288</id>
		<title>1749 - Zona 4</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=1749_-_Zona_4&amp;diff=5288"/>
		<updated>2023-04-28T20:54:43Z</updated>

		<summary type="html">&lt;p&gt;Alexandra Leș: Pagină nouă: == Enunț == Considerăm o matrice pătratică cu &amp;#039;&amp;#039;&amp;#039;N&amp;#039;&amp;#039;&amp;#039; linii și &amp;#039;&amp;#039;&amp;#039;N&amp;#039;&amp;#039;&amp;#039; coloane. În această matrice sunt definite &amp;#039;&amp;#039;&amp;#039;4&amp;#039;&amp;#039;&amp;#039; zone:  &amp;#039;&amp;#039;&amp;#039;zona 1&amp;#039;&amp;#039;&amp;#039;, formată din elementele situate strict deasupra diagonalei principale și strict deasupra diagonalei secundare; &amp;#039;&amp;#039;&amp;#039;zona 2&amp;#039;&amp;#039;&amp;#039;, formată din elementele situate strict deasupra diagonalei principale și strict sub diagonala secundară; &amp;#039;&amp;#039;&amp;#039;zona 3&amp;#039;&amp;#039;&amp;#039;, formată din elementele situate strict sub diagonala principală și strict sub diag...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Enunț ==&lt;br /&gt;
Considerăm o matrice pătratică cu &#039;&#039;&#039;N&#039;&#039;&#039; linii și &#039;&#039;&#039;N&#039;&#039;&#039; coloane. În această matrice sunt definite &#039;&#039;&#039;4&#039;&#039;&#039; zone:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;zona 1&#039;&#039;&#039;, formată din elementele situate strict deasupra diagonalei principale și strict deasupra diagonalei secundare;&lt;br /&gt;
&#039;&#039;&#039;zona 2&#039;&#039;&#039;, formată din elementele situate strict deasupra diagonalei principale și strict sub diagonala secundară;&lt;br /&gt;
&#039;&#039;&#039;zona 3&#039;&#039;&#039;, formată din elementele situate strict sub diagonala principală și strict sub diagonala secundară;&lt;br /&gt;
&#039;&#039;&#039;zona 4&#039;&#039;&#039;, formată din elementele situate strict sub diagonala principală și strict deasupra diagonalei secundare;&lt;br /&gt;
== Cerinţa ==&lt;br /&gt;
Se dă o matrice pătratică și un număr natural &#039;&#039;&#039;Z&#039;&#039;&#039;, reprezentând o zonă din matrice. Să se determine suma elementelor din zona &#039;&#039;&#039;Z&#039;&#039;&#039;.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Programul citește de la tastatură numerele &#039;&#039;&#039;N Z&#039;&#039;&#039;, iar apoi &#039;&#039;&#039;N*N&#039;&#039;&#039; numere naturale, reprezentând elementele matricei.&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 un rând nou numărul &#039;&#039;&#039;S&#039;&#039;&#039;, reprezentând suma elementelor din zona &#039;&#039;&#039;Z&#039;&#039;&#039; a matricei.Î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;
* 1 &amp;amp;les; N &amp;amp;les; 200&lt;br /&gt;
* 1 &amp;amp;les; Z &amp;amp;les; 4&lt;br /&gt;
*elementele matricei vor fi mai mici decât 1000&lt;br /&gt;
== Exemplu ==&lt;br /&gt;
; Intrare&lt;br /&gt;
: 5 2&lt;br /&gt;
: 7 4 8 5 10 &lt;br /&gt;
: 7 7 10 2 2 &lt;br /&gt;
: 1 2 8 8 4 &lt;br /&gt;
: 9 9 5 3 2 &lt;br /&gt;
: 3 6 7 1 7 &lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele sunt introduse corect.&lt;br /&gt;
: 16&lt;br /&gt;
== Explicație == &lt;br /&gt;
Elementele din zona &#039;&#039;&#039;2&#039;&#039;&#039; sunt &#039;&#039;&#039;2 8 4 2&#039;&#039;&#039;, cu suma &#039;&#039;&#039;16&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
&lt;br /&gt;
def validare_matrice(matrice):&lt;br /&gt;
    n = len(matrice)&lt;br /&gt;
    # Verificăm dacă matricea este pătratică&lt;br /&gt;
    for linie in matrice:&lt;br /&gt;
        if len(linie) != n:&lt;br /&gt;
            return False&lt;br /&gt;
    # Verificăm dacă elementele matricei sunt mai mici decât 1000&lt;br /&gt;
    for i in range(n):&lt;br /&gt;
        for j in range(n):&lt;br /&gt;
            if matrice[i][j] &amp;gt;= 1000:&lt;br /&gt;
                return False&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
def suma_zona(matrice, z):&lt;br /&gt;
    n = len(matrice)  # dimensiunea matricei&lt;br /&gt;
&lt;br /&gt;
    s = 0  # suma inițială este 0&lt;br /&gt;
&lt;br /&gt;
    # pentru fiecare zonă, adăugăm elementele corespunzătoare la suma&lt;br /&gt;
    if z == 1:&lt;br /&gt;
        # Zona 1 este triunghiulară și se află sub diagonala principală&lt;br /&gt;
        for i in range(n):&lt;br /&gt;
            for j in range(n):&lt;br /&gt;
                if i &amp;lt; j and i + j &amp;lt; n:  # condiția pentru a fi în zona 1&lt;br /&gt;
                    s += matrice[i][j]  # adăugăm elementul la sumă&lt;br /&gt;
&lt;br /&gt;
    elif z == 2:&lt;br /&gt;
        # Zona 2 este triunghiulară și se află deasupra diagonalei principale&lt;br /&gt;
        for i in range(n):&lt;br /&gt;
            for j in range(n):&lt;br /&gt;
                if i &amp;lt; j and i + j &amp;gt; n - 1:  # condiția pentru a fi în zona 2&lt;br /&gt;
                    s += matrice[i][j]  # adăugăm elementul la sumă&lt;br /&gt;
&lt;br /&gt;
    elif z == 3:&lt;br /&gt;
        # Zona 3 este triunghiulară și se află deasupra diagonalei secundare&lt;br /&gt;
        for i in range(n):&lt;br /&gt;
            for j in range(n):&lt;br /&gt;
                if i &amp;gt; j and i + j &amp;gt; n - 1:  # condiția pentru a fi în zona 3&lt;br /&gt;
                    s += matrice[i][j]  # adăugăm elementul la sumă&lt;br /&gt;
&lt;br /&gt;
    elif z == 4:&lt;br /&gt;
        # Zona 4 este triunghiulară și se află sub diagonala secundară&lt;br /&gt;
        for i in range(n):&lt;br /&gt;
            for j in range(n):&lt;br /&gt;
                if i &amp;gt; j and i + j &amp;lt; n:  # condiția pentru a fi în zona 4&lt;br /&gt;
                    s += matrice[i][j]  # adăugăm elementul la sumă&lt;br /&gt;
&lt;br /&gt;
    return s  # returnăm suma calculată&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    dimensiune, zona = input().split() &lt;br /&gt;
    z = int(zona)&lt;br /&gt;
    matrice = []&lt;br /&gt;
    for i in range(n):&lt;br /&gt;
        linie = [int(x) for x in input().split()]&lt;br /&gt;
        matrice.append(linie)&lt;br /&gt;
&lt;br /&gt;
    if validare_matrice(matrice):&lt;br /&gt;
        s = suma_zona(matrice, z)&lt;br /&gt;
        print((&amp;quot;Datele sunt introduse corect.\n&amp;quot;))&lt;br /&gt;
        print(s)&lt;br /&gt;
    else:&lt;br /&gt;
        print(&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>Alexandra Leș</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=0234_-_Med_Poz&amp;diff=5203</id>
		<title>0234 - Med Poz</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=0234_-_Med_Poz&amp;diff=5203"/>
		<updated>2023-04-28T13:01:50Z</updated>

		<summary type="html">&lt;p&gt;Alexandra Leș: &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 intregi din intervalul &#039;&#039;&#039;[-100,100]&#039;&#039;&#039;.&lt;br /&gt;
== Cerinţa ==&lt;br /&gt;
Să se determine media aritmetică a elementelor strict pozitive din matrice, care sunt situate sub diagonala principală.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Fişierul de intrare &#039;&#039;&#039;medpoz.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;medpoz.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; 20&lt;br /&gt;
* dacă în matrice nu există elemente strict pozitive, situate sub diagonala principală, se va afișa mesajul &#039;&#039;&#039;NU EXISTA&#039;&#039;&#039;;&lt;br /&gt;
* media se va afişa cu exact trei zecimale, fără rotunjire;&lt;br /&gt;
== Exemplu ==&lt;br /&gt;
; medpoz.in&lt;br /&gt;
: 4&lt;br /&gt;
: -1 2 4 5&lt;br /&gt;
: 0 6 3 1&lt;br /&gt;
: 2 4 2 0&lt;br /&gt;
: 3 -5 1 -3 &lt;br /&gt;
; medpoz.out&lt;br /&gt;
: Datele sunt introduse corect.&lt;br /&gt;
: 2.500&lt;br /&gt;
== Explicație == &lt;br /&gt;
Valorile strict pozitive situate sub diagonala principală sunt &#039;&#039;&#039;2&#039;&#039;&#039;, &#039;&#039;&#039;4&#039;&#039;&#039;, &#039;&#039;&#039;3&#039;&#039;&#039; şi &#039;&#039;&#039;1&#039;&#039;&#039;, iar media lor aritmetică este &#039;&#039;&#039;2.5&#039;&#039;&#039;. Se va afişa cu trei zecimale, adică &#039;&#039;&#039;2.500&#039;&#039;&#039;&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
&lt;br /&gt;
def validare_date(n: int, a: list[list[int]]) -&amp;gt; bool:&lt;br /&gt;
    # Verificare dimensiunea matricei&lt;br /&gt;
    if not (2 &amp;lt;= n &amp;lt;= 20):&lt;br /&gt;
        return False&lt;br /&gt;
    # Verificare interval valori elemente&lt;br /&gt;
    for i in range(n):&lt;br /&gt;
        for j in range(n):&lt;br /&gt;
            if not (-100 &amp;lt;= a[i][j] &amp;lt;= 100):&lt;br /&gt;
                return False&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
def media_aritmetica_pozitive_sub_diagonala(n: int, a: list[list[int]]) -&amp;gt; float:&lt;br /&gt;
    suma_pozitive_sub_diagonala = 0&lt;br /&gt;
    numar_elemente_pozitive_sub_diagonala = 0&lt;br /&gt;
    # Parcurgere elemente sub diagonala principală&lt;br /&gt;
    for i in range(1, n):&lt;br /&gt;
        for j in range(i):&lt;br /&gt;
            # Dacă elementul este strict pozitiv, se adună la suma S&lt;br /&gt;
            if a[i][j] &amp;gt; 0:&lt;br /&gt;
                suma_pozitive_sub_diagonala += a[i][j]&lt;br /&gt;
                numar_elemente_pozitive_sub_diagonala += 1&lt;br /&gt;
    # Daca nu s-au găsit elemente pozitive sub diagonală, se returnează None&lt;br /&gt;
    if numar_elemente_pozitive_sub_diagonala == 0:&lt;br /&gt;
        return None&lt;br /&gt;
    # Altfel, se calculează și se returnează media aritmetică&lt;br /&gt;
    else:&lt;br /&gt;
        return suma_pozitive_sub_diagonala / numar_elemente_pozitive_sub_diagonala&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    # Citire date de intrare&lt;br /&gt;
    with open(&#039;medpoz.in&#039;, &#039;r&#039;) as fin:&lt;br /&gt;
        n = int(fin.readline())&lt;br /&gt;
        a = []&lt;br /&gt;
        for i in range(n):&lt;br /&gt;
            linie = list(map(int, fin.readline().split()))&lt;br /&gt;
            a.append(linie)&lt;br /&gt;
    # Verificare date de intrare&lt;br /&gt;
    if not validare_date(n, a):&lt;br /&gt;
        with open(&#039;medpoz.out&#039;, &#039;w&#039;) as fout:&lt;br /&gt;
            fout.write(&amp;quot;Datele nu corespund restricțiilor impuse.&amp;quot;)&lt;br /&gt;
    else:&lt;br /&gt;
        # Calcul și afișare rezultat&lt;br /&gt;
        rezultat = media_aritmetica_pozitive_sub_diagonala(n, a)&lt;br /&gt;
        if rezultat is None:&lt;br /&gt;
            print(&amp;quot;NU EXISTA&amp;quot;)&lt;br /&gt;
        else:&lt;br /&gt;
            with open(&#039;medpoz.out&#039;, &#039;w&#039;) as fout:&lt;br /&gt;
                fout.write(&amp;quot;Datele sunt introduse corect.\n&amp;quot;)&lt;br /&gt;
                fout.write(f&amp;quot;{rezultat:.3f}&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Alexandra Leș</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=3483_-_Pct&amp;diff=5201</id>
		<title>3483 - Pct</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=3483_-_Pct&amp;diff=5201"/>
		<updated>2023-04-28T12:52:37Z</updated>

		<summary type="html">&lt;p&gt;Alexandra Leș: Pagină nouă: == Cerinţa == Se dau &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039; puncte distincte în plan, de coordonate întregi. Aflați numărul maxim de puncte aflate în interiorul sau pe laturile unui pătrat de latură &amp;#039;&amp;#039;&amp;#039;k&amp;#039;&amp;#039;&amp;#039;, având vârfurile de coordonate întregi și laturile paralele cu axele de coordonate. == Date de intrare == Fișierul de intrare &amp;#039;&amp;#039;&amp;#039;pct.in&amp;#039;&amp;#039;&amp;#039; conține pe prima linie numerele &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039; și &amp;#039;&amp;#039;&amp;#039;k&amp;#039;&amp;#039;&amp;#039;, iar pe a doua linie &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039; perechi de numere întregi reprezentând coordonatele punctelor, separ...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cerinţa ==&lt;br /&gt;
Se dau &#039;&#039;&#039;n&#039;&#039;&#039; puncte distincte în plan, de coordonate întregi. Aflați numărul maxim de puncte aflate în interiorul sau pe laturile unui pătrat de latură &#039;&#039;&#039;k&#039;&#039;&#039;, având vârfurile de coordonate întregi și laturile paralele cu axele de coordonate.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Fișierul de intrare &#039;&#039;&#039;pct.in&#039;&#039;&#039; conține pe prima linie numerele &#039;&#039;&#039;n&#039;&#039;&#039; și &#039;&#039;&#039;k&#039;&#039;&#039;, iar pe a doua linie &#039;&#039;&#039;n&#039;&#039;&#039; perechi de numere întregi reprezentând coordonatele punctelor, separate prin spații.&lt;br /&gt;
== Date de ieşire ==&lt;br /&gt;
Dacă datele sunt introduse corect,în fişierul de ieşire &#039;&#039;&#039;pct.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 numărul maxim de puncte situate în interiorul sau pe laturile unui pătrat de latură k.Î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;
* 1 &amp;amp;les; n &amp;amp;les; 100.000&lt;br /&gt;
* 2 &amp;amp;les; k &amp;amp;les; 1000&lt;br /&gt;
*coordonatele punctelor sunt cuprinse între 0 și 1000, inclusiv&lt;br /&gt;
== Exemplu ==&lt;br /&gt;
; pct.in&lt;br /&gt;
: 3 2&lt;br /&gt;
: 1 1&lt;br /&gt;
: 1 0&lt;br /&gt;
: 3 4 &lt;br /&gt;
; pct.out&lt;br /&gt;
: Datele sunt introduse corect.&lt;br /&gt;
: 2&lt;br /&gt;
== Explicație == &lt;br /&gt;
Se poate alege pătratul de latură &#039;&#039;&#039;2&#039;&#039;&#039;, având vârful stânga-jos de coordonate &#039;&#039;&#039;(0,0)&#039;&#039;&#039;.&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#Funcție care verifică dacă datele de intrare sunt valide, conform restricțiilor problemei.&lt;br /&gt;
def validare(n, k, puncte):&lt;br /&gt;
&lt;br /&gt;
    if not (1 &amp;lt;= n &amp;lt;= 100000):  # n trebuie să fie între 1 și 100000&lt;br /&gt;
        return False&lt;br /&gt;
    if not (2 &amp;lt;= k &amp;lt;= 1000):  # k trebuie să fie între 2 și 1000&lt;br /&gt;
        return False&lt;br /&gt;
    for x, y in puncte:  # fiecare punct trebuie să aibă coordonate între 0 și 1000&lt;br /&gt;
        if not (0 &amp;lt;= x &amp;lt;= 1000 and 0 &amp;lt;= y &amp;lt;= 1000):&lt;br /&gt;
            return False&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
#Funcție care află numărul maxim de puncte situate în interiorul sau pe laturile unui pătrat de latură k.&lt;br /&gt;
def rezolvare(n, k, puncte):&lt;br /&gt;
    &lt;br /&gt;
    a = [[False] * 1002 for _ in range(1002)]  # matricea a reține dacă există puncte la coordonatele (i, j)&lt;br /&gt;
    sp = [[0] * 1002 for _ in range(1002)]  # matricea sp reține suma punctelor dintr-un dreptunghi format de (1, 1) și (i, j)&lt;br /&gt;
    lin = col = 0  # variabilele lin și col rețin coordonatele maxime ale punctelor&lt;br /&gt;
&lt;br /&gt;
    # parcurgerea listei de puncte&lt;br /&gt;
    for x, y in puncte:&lt;br /&gt;
        a[x + 1][y + 1] = True  # marchează existența punctului la coordonatele (x+1, y+1)&lt;br /&gt;
&lt;br /&gt;
        if lin &amp;lt; x:&lt;br /&gt;
            lin = x  # actualizează coordonata maximă pe linii&lt;br /&gt;
&lt;br /&gt;
        if col &amp;lt; y:&lt;br /&gt;
            col = y  # actualizează coordonata maximă pe coloane&lt;br /&gt;
&lt;br /&gt;
    # parcurgerea matricii sp și calcularea sumelor&lt;br /&gt;
    for i in range(1, lin+1):&lt;br /&gt;
        for j in range(1, col+1):&lt;br /&gt;
            sp[i][j] = sp[i-1][j] + sp[i][j-1] - sp[i-1][j-1] + a[i][j]&lt;br /&gt;
&lt;br /&gt;
    maxi = 0  # variabila maxi reține numărul maxim de puncte găsit până acum&lt;br /&gt;
&lt;br /&gt;
    # parcurgerea matricii sp și găsirea numărului maxim de puncte&lt;br /&gt;
    for i in range(1, lin+1):&lt;br /&gt;
        for j in range(1, col+1):&lt;br /&gt;
            linie_dr = i + k&lt;br /&gt;
            coloana_dr = j + k&lt;br /&gt;
            if linie_dr &amp;lt;= lin and coloana_dr &amp;lt;= col:&lt;br /&gt;
                puncte = sp[linie_dr][coloana_dr] - sp[linie_dr][j-1] - sp[i-1][coloana_dr] + sp[i-1][j-1]&lt;br /&gt;
                if maxi &amp;lt; puncte:&lt;br /&gt;
                    maxi = puncte&lt;br /&gt;
&lt;br /&gt;
    return maxi&lt;br /&gt;
&lt;br /&gt;
#Funcția principală&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    with open(&#039;pct.in&#039;, &#039;r&#039;) as f:&lt;br /&gt;
       &lt;br /&gt;
        n, k = map(int, f.readline().split())&lt;br /&gt;
        puncte = [tuple(map(int, linie.split())) for linie in f.readlines()]&lt;br /&gt;
&lt;br /&gt;
    if validare(n, k, puncte):&lt;br /&gt;
        rezultat = rezolvare(n, k, puncte)&lt;br /&gt;
&lt;br /&gt;
        with open(&#039;pct.out&#039;, &#039;w&#039;) as f:&lt;br /&gt;
            f.write(&#039;Datele sunt introduse corect.\n&#039;)&lt;br /&gt;
            f.write(str(rezultat))&lt;br /&gt;
    else:&lt;br /&gt;
        with open(&#039;pct.out&#039;, &#039;w&#039;) as f:&lt;br /&gt;
            f.write(&#039;Datele nu corespund restricțiilor impuse.\n&#039;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Alexandra Leș</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=1008_-_Spirala_1&amp;diff=4815</id>
		<title>1008 - Spirala 1</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=1008_-_Spirala_1&amp;diff=4815"/>
		<updated>2023-04-26T19:22:51Z</updated>

		<summary type="html">&lt;p&gt;Alexandra Leș: &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, un &#039;&#039;&#039;n&#039;&#039;&#039; este un pătrat perfect. Să se construiască în memorie o matrice pătratică cu toate cele &#039;&#039;&#039;n&#039;&#039;&#039; numere, în spirală, în sens invers acelor de ceas astfel: pe prima coloană, începând cu linia &#039;&#039;&#039;1&#039;&#039;&#039;, se vor trece primele elemente din şir (de sus în jos), apoi pe ultima linie, începând de la prima coloană până la ultima (de la stânga la dreapta), apoi pe ultima coloană, de la ultima linie la prima (de jos în sus), apoi pe prima linie, de la ultima coloană la prima (de la dreapta la stânga) şamd.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Fișierul de intrare &#039;&#039;&#039;spirala1.in&#039;&#039;&#039; conține pe prima linie numărul &#039;&#039;&#039;n&#039;&#039;&#039;, iar pe următoarea linie cele &#039;&#039;&#039;n&#039;&#039;&#039; numere.&lt;br /&gt;
== Date de ieşire ==&lt;br /&gt;
Dacă datele sunt introduse corect,în fişierul de ieşire &#039;&#039;&#039;spirala1.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 va conţine matricea construită, câte o linie a matricei pe o linie a fişierului, elementele fiecărei linii fiind separate prin exact un spaţiu.Î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;
* 1 &amp;amp;les; n &amp;amp;les; 10000&lt;br /&gt;
* numerele date vor fi mai mici decât 1000&lt;br /&gt;
== Exemplu ==&lt;br /&gt;
; spirala1.in&lt;br /&gt;
: 9&lt;br /&gt;
: 2 6 7 3 7 1 7 1 5&lt;br /&gt;
; spirala1.out&lt;br /&gt;
: Datele sunt introduse corect.&lt;br /&gt;
: 2 1 7&lt;br /&gt;
: 6 5 1&lt;br /&gt;
: 7 3 7&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(n: int, lst: list[int]) -&amp;gt; bool:&lt;br /&gt;
&lt;br /&gt;
    if not (1 &amp;lt;= n &amp;lt;= 10000):&lt;br /&gt;
        return False&lt;br /&gt;
&lt;br /&gt;
    if any(num &amp;gt;= 1000 for num in lst):&lt;br /&gt;
        return False&lt;br /&gt;
&lt;br /&gt;
    if int(n ** 0.5) ** 2 != n:&lt;br /&gt;
        return False&lt;br /&gt;
&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def construieste_matrice_spirala(n: int, lst: list[int]) -&amp;gt; list[list[int]]:&lt;br /&gt;
&lt;br /&gt;
    n = int(n ** 0.5)&lt;br /&gt;
    matrice = [[0] * n for _ in range(n)]&lt;br /&gt;
&lt;br /&gt;
    for k in range(1, (n + 1) // 2 + 1):&lt;br /&gt;
        for i in range(k - 1, n - k + 1):&lt;br /&gt;
            matrice[i][k - 1] = lst.pop(0)&lt;br /&gt;
&lt;br /&gt;
        for j in range(k, n - k + 1):&lt;br /&gt;
            matrice[n - k][j] = lst.pop(0)&lt;br /&gt;
&lt;br /&gt;
        for i in range(n - k - 1, k - 2, -1):&lt;br /&gt;
            matrice[i][n - k] = lst.pop(0)&lt;br /&gt;
&lt;br /&gt;
        for j in range(n - k - 1, k - 1, -1):&lt;br /&gt;
            matrice[k - 1][j] = lst.pop(0)&lt;br /&gt;
&lt;br /&gt;
    return matrice&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    with open(&amp;quot;spirala1.in&amp;quot;, &amp;quot;r&amp;quot;) as fin:&lt;br /&gt;
        n = int(fin.readline().strip())&lt;br /&gt;
        lst = list(map(int, fin.readline().split()))&lt;br /&gt;
&lt;br /&gt;
    if validare(n, lst):&lt;br /&gt;
        matrice = construieste_matrice_spirala(n, lst)&lt;br /&gt;
        with open(&amp;quot;spirala1.out&amp;quot;, &amp;quot;w&amp;quot;) as fout:&lt;br /&gt;
            fout.write(&amp;quot;Datele sunt introduse corect.\n&amp;quot;)&lt;br /&gt;
            for linie in matrice:&lt;br /&gt;
                fout.write(&amp;quot; &amp;quot;.join(map(str, linie)) + &amp;quot;\n&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    else:&lt;br /&gt;
        with open(&amp;quot;spirala1.out&amp;quot;, &amp;quot;w&amp;quot;) as fout:&lt;br /&gt;
           fout.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;br /&gt;
== Explicație rezolvare ==&lt;br /&gt;
Acest cod citește datele de intrare din fișierul &amp;quot;spirala1.in&amp;quot; si construiește o matrice pătratică cu toate cele n numere, în spirală, în sens invers acelor de ceas.&amp;lt;br&amp;gt;Mai exact, citim numarul &amp;quot;n&amp;quot; , care reprezintă numarul de elemente din matrice, iar apoi construim o matrice de dimensiune &amp;quot;n x n&amp;quot; cu ajutorul unui for loop care trece de la exteriorul spre interiorul matricei. În interiorul loop-ului for, se citesc elementele matricei în funcție de poziția curentă a loop-ului si pozițiile pe care trebuie sa le aibă fiecare element in matrice. Ulterior, matricea construită este scrisă in fișierul &amp;quot;spirala1.out&amp;quot;.&lt;/div&gt;</summary>
		<author><name>Alexandra Leș</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=1008_-_Spirala_1&amp;diff=4814</id>
		<title>1008 - Spirala 1</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=1008_-_Spirala_1&amp;diff=4814"/>
		<updated>2023-04-26T19:18:11Z</updated>

		<summary type="html">&lt;p&gt;Alexandra Leș: Pagină nouă: == Cerinţa == Se dau &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039; numere naturale, un &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039; este un pătrat perfect. Să se construiască în memorie o matrice pătratică cu toate cele &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039; numere, în spirală, în sens invers acelor de ceas astfel: pe prima coloană, începând cu linia &amp;#039;&amp;#039;&amp;#039;1&amp;#039;&amp;#039;&amp;#039;, se vor trece primele elemente din şir (de sus în jos), apoi pe ultima linie, începând de la prima coloană până la ultima (de la stânga la dreapta), apoi pe ultima coloană, de la ultima linie la prima (d...&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, un &#039;&#039;&#039;n&#039;&#039;&#039; este un pătrat perfect. Să se construiască în memorie o matrice pătratică cu toate cele &#039;&#039;&#039;n&#039;&#039;&#039; numere, în spirală, în sens invers acelor de ceas astfel: pe prima coloană, începând cu linia &#039;&#039;&#039;1&#039;&#039;&#039;, se vor trece primele elemente din şir (de sus în jos), apoi pe ultima linie, începând de la prima coloană până la ultima (de la stânga la dreapta), apoi pe ultima coloană, de la ultima linie la prima (de jos în sus), apoi pe prima linie, de la ultima coloană la prima (de la dreapta la stânga) şamd.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Fișierul de intrare &#039;&#039;&#039;spirala1.in&#039;&#039;&#039; conține pe prima linie numărul &#039;&#039;&#039;n&#039;&#039;&#039;, iar pe următoarea linie cele &#039;&#039;&#039;n&#039;&#039;&#039; numere.&lt;br /&gt;
== Date de ieşire ==&lt;br /&gt;
Dacă datele sunt introduse corect,în fişierul de ieşire &#039;&#039;&#039;spirala1.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 va conţine matricea construită, câte o linie a matricei pe o linie a fişierului, elementele fiecărei linii fiind separate prin exact un spaţiu.Î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;
* 1 &amp;amp;les; n &amp;amp;les; 10000&lt;br /&gt;
* numerele date vor fi mai mici decât 1000&lt;br /&gt;
== Exemplu ==&lt;br /&gt;
; spirala1.in&lt;br /&gt;
: 9&lt;br /&gt;
: 2 6 7 3 7 1 7 1 5&lt;br /&gt;
; spirala1.out&lt;br /&gt;
: Datele sunt introduse corect.&lt;br /&gt;
: 2 1 7&lt;br /&gt;
: 6 5 1&lt;br /&gt;
: 7 3 7&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(n: int, lst: list[int]) -&amp;gt; bool:&lt;br /&gt;
&lt;br /&gt;
    if not (1 &amp;lt;= n &amp;lt;= 10000):&lt;br /&gt;
        return False&lt;br /&gt;
&lt;br /&gt;
    if any(num &amp;gt;= 1000 for num in lst):&lt;br /&gt;
        return False&lt;br /&gt;
&lt;br /&gt;
    if int(n ** 0.5) ** 2 != n:&lt;br /&gt;
        return False&lt;br /&gt;
&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def construieste_matrice_spirala(n: int, lst: list[int]) -&amp;gt; list[list[int]]:&lt;br /&gt;
&lt;br /&gt;
    n = int(n ** 0.5)&lt;br /&gt;
    matrice = [[0] * n for _ in range(n)]&lt;br /&gt;
&lt;br /&gt;
    for k in range(1, (n + 1) // 2 + 1):&lt;br /&gt;
        for i in range(k - 1, n - k + 1):&lt;br /&gt;
            matrice[i][k - 1] = lst.pop(0)&lt;br /&gt;
&lt;br /&gt;
        for j in range(k, n - k + 1):&lt;br /&gt;
            matrice[n - k][j] = lst.pop(0)&lt;br /&gt;
&lt;br /&gt;
        for i in range(n - k - 1, k - 2, -1):&lt;br /&gt;
            matrice[i][n - k] = lst.pop(0)&lt;br /&gt;
&lt;br /&gt;
        for j in range(n - k - 1, k - 1, -1):&lt;br /&gt;
            matrice[k - 1][j] = lst.pop(0)&lt;br /&gt;
&lt;br /&gt;
    return matrice&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    with open(&amp;quot;spirala1.in&amp;quot;, &amp;quot;r&amp;quot;) as fin:&lt;br /&gt;
        n = int(fin.readline().strip())&lt;br /&gt;
        lst = list(map(int, fin.readline().split()))&lt;br /&gt;
&lt;br /&gt;
    if validare(n, lst):&lt;br /&gt;
        matrice = construieste_matrice_spirala(n, lst)&lt;br /&gt;
        with open(&amp;quot;spirala1.out&amp;quot;, &amp;quot;w&amp;quot;) as fout:&lt;br /&gt;
            fout.write(&amp;quot;Datele sunt introduse corect.\n&amp;quot;)&lt;br /&gt;
            for linie in matrice:&lt;br /&gt;
                fout.write(&amp;quot; &amp;quot;.join(map(str, linie)) + &amp;quot;\n&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    else:&lt;br /&gt;
        with open(&amp;quot;spirala1.out&amp;quot;, &amp;quot;w&amp;quot;) as fout:&lt;br /&gt;
           fout.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;br /&gt;
 == Explicații rezolvare ==&lt;br /&gt;
Acest cod citeste datele de intrare din fisierul &amp;quot;spirala1.in&amp;quot; si construieste o matrice pătratică cu toate cele n numere, în spirală, în sens invers acelor de ceas astfel: pe prima coloană, începând cu linia 1, se vor trece primele elemente din şir (de sus în jos), apoi pe ultima linie, începând de la prima coloană până la ultima (de la stânga la dreapta), apoi pe ultima coloană, de la ultima linie la prima (de jos în sus), apoi pe prima linie, de la ultima coloană la prima (de la dreapta la stânga) şamd.&amp;lt;br&amp;gt;Mai exact, citim numarul &amp;quot;n&amp;quot; de la intrare, care reprezinta numarul de elemente din matrice, iar apoi construim o matrice de dimensiune &amp;quot;n x n&amp;quot; cu ajutorul unui for loop care trece de la exteriorul spre interiorul matricei. In interiorul loop-ului for, se citesc elementele matricei in functie de pozitia curenta a loop-ului si pozitiile pe care trebuie sa le aiba fiecare element in matrice. Ulterior, matricea construita este scrisa in fisierul &amp;quot;spirala1.out&amp;quot;.&lt;/div&gt;</summary>
		<author><name>Alexandra Leș</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=0961_-_Criptare&amp;diff=4809</id>
		<title>0961 - Criptare</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=0961_-_Criptare&amp;diff=4809"/>
		<updated>2023-04-26T18:50:23Z</updated>

		<summary type="html">&lt;p&gt;Alexandra Leș: Pagină nouă: == Cerinţa == După dezastrul cauzat de hackerul Gigel ( #Suprasolicitare ), administratorul rețelei s-a decis să ia măsuri.  Acesta este responsabil de o rețea cu &amp;#039;&amp;#039;&amp;#039;n*n&amp;#039;&amp;#039;&amp;#039; calculatoare dispuse sub forma unei matrice cu &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039; linii și &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039; coloane, în care fiecare calculator este conectat la calculatoarele adiacente(sus, dreapta, stânga, jos), fiecare calculator de pe rândul &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039; este conectat la calculatorul de pe rândul &amp;#039;&amp;#039;&amp;#039;1&amp;#039;&amp;#039;&amp;#039; și aceeași coloană, și...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cerinţa ==&lt;br /&gt;
După dezastrul cauzat de hackerul Gigel ( #Suprasolicitare ), administratorul rețelei s-a decis să ia măsuri.&lt;br /&gt;
&lt;br /&gt;
Acesta este responsabil de o rețea cu &#039;&#039;&#039;n*n&#039;&#039;&#039; calculatoare dispuse sub forma unei matrice cu &#039;&#039;&#039;n&#039;&#039;&#039; linii și &#039;&#039;&#039;n&#039;&#039;&#039; coloane, în care fiecare calculator este conectat la calculatoarele adiacente(sus, dreapta, stânga, jos), fiecare calculator de pe rândul &#039;&#039;&#039;n&#039;&#039;&#039; este conectat la calculatorul de pe rândul &#039;&#039;&#039;1&#039;&#039;&#039; și aceeași coloană, și fiecare calculator de pe de pe coloana &#039;&#039;&#039;n&#039;&#039;&#039; este conectat la cel de pe coloana &#039;&#039;&#039;1&#039;&#039;&#039; și aceeași linie.&lt;br /&gt;
&lt;br /&gt;
În această rețea, există calculatoare criptate, care nu pot primi pachete de date corupte. Calculatoarele necriptate pot primi pachete corupte dar nu le pot prelucra. Comportamentul lor este unul aparte: când un calculator necriptat primește un pachet de date, îl transmite mai departe la următorul calculator pe aceeași direcție până întâlnesc un calculator criptat. Calculatorul care conține pachetul de date corupt poate primi apoi o comandă prin care să îl transmită mai departe în altă direcție.&lt;br /&gt;
&lt;br /&gt;
Rețeaua devine suprasolicitată dacă pachetul corupt ajunge pe o linie sau coloană care conține numai calculatoare necriptate, putându-se astfel să se transmită la infinit.&lt;br /&gt;
&lt;br /&gt;
Hackerul Gigel a profitat de această slăbiciune a rețelei și a reușit dea comenzi prin terminalele calculatoarelor astfel încât pachetul de date să se transmită la infinit între ele, suprasolicitând rețeaua, (vezi problema #Suprasolicitare ).&lt;br /&gt;
&lt;br /&gt;
Administratorul rețelei a decis să cripteze suficiente calculatoare pentru a evita orice posibilitate de suprasolicitare a rețelei. Deoarece criptarea unui singur calculator ia mult timp, administratorul dorește să afle numărul minim de calculatoare care trebuie criptate astfel încât hackerul Gigel să nu se mai poată distra cu rețeaua.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Fișierul de intrare &#039;&#039;&#039;criptare.in&#039;&#039;&#039; conține pe prima linie numărul n, urmat de n rânduri cu n numere. Valoarea 1 reprezentă un calculator deja criptat, iar valoarea 0 un calculator necriptat.&lt;br /&gt;
== Date de ieşire ==&lt;br /&gt;
Dacă datele sunt introduse corect,în fişierul de ieşire &#039;&#039;&#039;criptare.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 va conţine numărul Sol, reprezentând numărul minim de calculatoare ce necesită a fi criptate, iar pe următoarele Sol rânduri o pereche de numere x și y reprezentând că pe linia x și coloana y calculatorul trebuie criptat.Î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;
* 1 &amp;amp;les; n &amp;amp;les; 1000&lt;br /&gt;
* Orice soluție cu număr minim de calculatoare criptate este corectă.&lt;br /&gt;
* Pentru afișarea doar a lui Sol, se acordă 20% din punctaj&lt;br /&gt;
* Pentru teste în valoare de 40 de puncte, n ≤ 10.&lt;br /&gt;
== Exemplu ==&lt;br /&gt;
; criptare.in&lt;br /&gt;
: 5&lt;br /&gt;
: 0 0 0 0 0&lt;br /&gt;
: 1 1 1 1 1&lt;br /&gt;
: 1 0 1 1 0&lt;br /&gt;
: 0 1 0 1 0&lt;br /&gt;
: 0 0 0 0 0 &lt;br /&gt;
; criptare.out&lt;br /&gt;
: Datele sunt introduse corect.&lt;br /&gt;
: 2&lt;br /&gt;
: 1 1&lt;br /&gt;
: 5 3&lt;br /&gt;
== Explicație == &lt;br /&gt;
După criptarea calculatoarelor &#039;&#039;&#039;(1,1)&#039;&#039;&#039; și &#039;&#039;&#039;(5,3)&#039;&#039;&#039;, hackerul Gigel nu mai poate trimite pachetul la infinit pe linia &#039;&#039;&#039;1&#039;&#039;&#039;, respectiv linia &#039;&#039;&#039;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;
&lt;br /&gt;
# Funcție care verifică dacă datele de intrare sunt valide&lt;br /&gt;
def validare_date(n: int, a: list[list[int]]) -&amp;gt; bool:&lt;br /&gt;
&lt;br /&gt;
    if n &amp;lt; 1 or n &amp;gt; 1000:&lt;br /&gt;
        return False&lt;br /&gt;
    for i in range(n):&lt;br /&gt;
        if len(a[i]) != n:&lt;br /&gt;
            return False&lt;br /&gt;
        for j in range(n):&lt;br /&gt;
            if a[i][j] not in [0, 1]:&lt;br /&gt;
                return False&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
# Funcție care calculează numărul minim de calculatoare care trebuie criptate astfel încât hackerul Gigel să nu se mai&lt;br /&gt;
# se poată distra cu rețeaua.&lt;br /&gt;
def criptare(n: int, a: list[list[int]]) -&amp;gt; tuple[int, list[tuple[int, int]]]:&lt;br /&gt;
    L, C = [], []&lt;br /&gt;
    for i in range(n):&lt;br /&gt;
        linie_criptata = any(a[i][j] for j in range(n))  # verifică dacă există cel puțin un element 1 în linia i&lt;br /&gt;
        coloana_criptata = any(a[j][i] for j in range(n))  # verifică dacă există cel puțin un element 1 în coloana i&lt;br /&gt;
        if not linie_criptata:&lt;br /&gt;
            L.append(i + 1)  # adaugă linia i+1 la lista L dacă aceasta nu are niciun element 1&lt;br /&gt;
        if not coloana_criptata:&lt;br /&gt;
            C.append(i + 1)  # adaugă coloana i+1 la lista C dacă aceasta nu are niciun element 1&lt;br /&gt;
    numar_calculatoare_criptate = max(len(L), len(C))  # determină numărul minim de calculatoare care trebuie criptate&lt;br /&gt;
    puncte_criptare = [(L[i], C[i]) for i in range(min(len(L), len(C)))]  # perechile (linie, coloană) pentru primele L sau C elemente&lt;br /&gt;
    if len(L) &amp;gt; len(C):&lt;br /&gt;
        for i in range(len(C), len(L)):&lt;br /&gt;
            puncte_criptare.append((L[i], 1))  # adaugă perechi (linie, 1) pentru fiecare element L care nu are corespondent în C&lt;br /&gt;
    elif len(C) &amp;gt; len(L):&lt;br /&gt;
        for i in range(len(L), len(C)):&lt;br /&gt;
            puncte_criptare.append((1, C[i]))  # adaugă perechi (1, coloană) pentru fiecare element C care nu are corespondent în L&lt;br /&gt;
    return numar_calculatoare_criptate, puncte_criptare&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#Programul principal&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    with open(&#039;criptare.in&#039;, &#039;r&#039;) as fin:&lt;br /&gt;
        n = int(fin.readline().strip())&lt;br /&gt;
        a = [list(map(int, fin.readline().split())) for _ in range(n)]&lt;br /&gt;
    if validare_date(n, a):&lt;br /&gt;
        numar_calculatoare_criptate, puncte_criptare = criptare(n, a)&lt;br /&gt;
        with open(&#039;criptare.out&#039;, &#039;w&#039;) as fout:&lt;br /&gt;
            fout.write(&amp;quot;Datele sunt introduse corect.\n&amp;quot;)&lt;br /&gt;
            fout.write(str(numar_calculatoare_criptate) + &#039;\n&#039;)&lt;br /&gt;
            for Sol in puncte_criptare:&lt;br /&gt;
                fout.write(str(Sol[0]) + &#039; &#039; + str(Sol[1]) + &#039;\n&#039;)&lt;br /&gt;
    else:&lt;br /&gt;
        with open(&#039;criptare.out&#039;, &#039;w&#039;) as fout:&lt;br /&gt;
           fout.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>Alexandra Leș</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=0210_-_Chenar&amp;diff=4799</id>
		<title>0210 - Chenar</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=0210_-_Chenar&amp;diff=4799"/>
		<updated>2023-04-26T18:27:34Z</updated>

		<summary type="html">&lt;p&gt;Alexandra Leș: Pagină nouă: == Enunț == Se consideră tabloul bidimensional cu &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039; linii şi &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039; coloane ce conţine numere naturale cu cel mult patru cifre fiecare. == Cerinţa == Scrieţi un program care citeşte numărul natural &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039; şi cele &amp;#039;&amp;#039;&amp;#039;n*n&amp;#039;&amp;#039;&amp;#039; elemente ale tabloului şi apoi afişează elementele chenarului exterior al tabloului, separate prin câte un spaţiu. Chenarul este parcurs în sensul acelor de ceasornic începând din colţul său stânga-sus. Chenarul este format din p...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Enunț ==&lt;br /&gt;
Se consideră tabloul 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 patru cifre fiecare.&lt;br /&gt;
== Cerinţa ==&lt;br /&gt;
Scrieţi un program care citeşte numărul natural &#039;&#039;&#039;n&#039;&#039;&#039; şi cele &#039;&#039;&#039;n*n&#039;&#039;&#039; elemente ale tabloului şi apoi afişează elementele chenarului exterior al tabloului, separate prin câte un spaţiu. Chenarul este parcurs în sensul acelor de ceasornic începând din colţul său stânga-sus. Chenarul este format din prima şi ultima linie, prima şi ultima coloană a tabloului.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Fişierul de intrare &#039;&#039;&#039;chenar.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; chenar.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 va conţine elementele cerute, separate prin câte un spaţiu.Î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; 23&lt;br /&gt;
* elementele tabloului sunt mai mici decât 1000&lt;br /&gt;
== Exemplu ==&lt;br /&gt;
; chenar.in&lt;br /&gt;
: 5&lt;br /&gt;
: 1 2 3 4 5&lt;br /&gt;
: 6 7 8 9 1&lt;br /&gt;
: 2 3 4 5 6&lt;br /&gt;
: 7 8 9 1 2&lt;br /&gt;
: 3 4 5 6 7&lt;br /&gt;
; chenar.out&lt;br /&gt;
: Datele sunt introduse corect.&lt;br /&gt;
: 1 2 3 4 5 1 6 2 7 6 5 4 3 7 2 6 &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;
# Funție care verifică dacă datele de intrare sunt valide conform cerinței.&lt;br /&gt;
def validare(n: int, a: list[list[int]]) -&amp;gt; bool:&lt;br /&gt;
    # Verifică dacă n este între 2 și 23, inclusiv&lt;br /&gt;
    if n &amp;lt; 2 or n &amp;gt; 23:&lt;br /&gt;
        return False&lt;br /&gt;
    # Verifică dacă fiecare element din matricea a este între 0 și 9999, inclusiv&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;= 10000:&lt;br /&gt;
                return False&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
# Funcție care returnează elementele chenarului exterior al tabloului, în sensul acelor&lt;br /&gt;
# de ceasornic începând din colțul stânga-sus.&lt;br /&gt;
def chenar(n: int, a: list[list[int]]) -&amp;gt; list[int]:&lt;br /&gt;
    # Inițializăm lista rezultat cu elementele din prima linie a matricei a&lt;br /&gt;
    result = []&lt;br /&gt;
    for j in range(n):&lt;br /&gt;
        result.append(a[0][j])&lt;br /&gt;
    # Adăugăm elementele de pe ultima coloană a matricei a, cu excepția colțului din dreapta sus&lt;br /&gt;
    for i in range(1, n):&lt;br /&gt;
        result.append(a[i][n-1])&lt;br /&gt;
    # Adăugăm elementele de pe ultima linie a matricei a, în ordine inversă&lt;br /&gt;
    for j in range(n-2, -1, -1):&lt;br /&gt;
        result.append(a[n-1][j])&lt;br /&gt;
    # Adăugăm elementele de pe prima coloană a matricei a, cu excepția colțului din stânga sus, în ordine inversă&lt;br /&gt;
    for i in range(n-2, 0, -1):&lt;br /&gt;
        result.append(a[i][0])&lt;br /&gt;
    # Returnăm lista cu elementele chenarului&lt;br /&gt;
    return result&lt;br /&gt;
&lt;br /&gt;
# Programul principal&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    # Deschidem fișierele de intrare și de ieșire&lt;br /&gt;
    with open(&#039;chenar.in&#039;, &#039;r&#039;) as fin, open(&#039;chenar.out&#039;, &#039;w&#039;) as fout:&lt;br /&gt;
        # Citim dimensiunea matricei&lt;br /&gt;
        n = int(fin.readline().strip())&lt;br /&gt;
        # Inițializăm matricea a cu datele citite din fișierul de intrare&lt;br /&gt;
        a = []&lt;br /&gt;
        for i in range(n):&lt;br /&gt;
            row = list(map(int, fin.readline().strip().split()))&lt;br /&gt;
            a.append(row)&lt;br /&gt;
&lt;br /&gt;
        # Verificăm dacă datele de intrare sunt valide&lt;br /&gt;
        if validare(n, a):&lt;br /&gt;
            # Calculăm elementele chenarului și le scriem în fișierul de ieșire, separate prin spațiu&lt;br /&gt;
            result = chenar(n, a)&lt;br /&gt;
            fout.write(&amp;quot;Datele sunt introduse corect.\n&amp;quot;)&lt;br /&gt;
            fout.write(&#039; &#039;.join(map(str, result)))&lt;br /&gt;
        else:&lt;br /&gt;
            # Scriem mesajul de eroare în fișierul de ieșire&lt;br /&gt;
            fout.write(&#039;Datele nu corespund restricțiilor impuse.&#039;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Alexandra Leș</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=0234_-_Med_Poz&amp;diff=4795</id>
		<title>0234 - Med Poz</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=0234_-_Med_Poz&amp;diff=4795"/>
		<updated>2023-04-26T18:13:34Z</updated>

		<summary type="html">&lt;p&gt;Alexandra Leș: Pagină nouă: == Enunț == Se consideră un tablou bidimensional cu &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039; linii şi &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039; coloane ce conţine numere intregi din intervalul &amp;#039;&amp;#039;&amp;#039;[-100,100]&amp;#039;&amp;#039;&amp;#039;. == Cerinţa == Să se determine media aritmetică a elementelor strict pozitive din matrice, care sunt situate sub diagonala principală. == Date de intrare == Fişierul de intrare &amp;#039;&amp;#039;&amp;#039;medpoz.in&amp;#039;&amp;#039;&amp;#039; conţine pe prima linie numărul &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039;, iar pe următoarele &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039; linii câte &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039; numere naturale separate prin spaţii, reprez...&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 intregi din intervalul &#039;&#039;&#039;[-100,100]&#039;&#039;&#039;.&lt;br /&gt;
== Cerinţa ==&lt;br /&gt;
Să se determine media aritmetică a elementelor strict pozitive din matrice, care sunt situate sub diagonala principală.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Fişierul de intrare &#039;&#039;&#039;medpoz.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;medpoz.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 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; 20&lt;br /&gt;
* dacă în matrice nu există elemente strict pozitive, situate sub diagonala principală, se va afișa mesajul &#039;&#039;&#039;NU EXISTA&#039;&#039;&#039;;&lt;br /&gt;
* media se va afişa cu exact trei zecimale, fără rotunjire;&lt;br /&gt;
== Exemplu ==&lt;br /&gt;
; medpoz.in&lt;br /&gt;
: 4&lt;br /&gt;
: -1 2 4 5&lt;br /&gt;
: 0 6 3 1&lt;br /&gt;
: 2 4 2 0&lt;br /&gt;
: 3 -5 1 -3 &lt;br /&gt;
; medpoz.out&lt;br /&gt;
: Datele sunt introduse corect.&lt;br /&gt;
: 2.500&lt;br /&gt;
== Explicație == &lt;br /&gt;
Valorile strict pozitive situate sub diagonala principală sunt &#039;&#039;&#039;2&#039;&#039;&#039;, &#039;&#039;&#039;4&#039;&#039;&#039;, &#039;&#039;&#039;3&#039;&#039;&#039; şi &#039;&#039;&#039;1&#039;&#039;&#039;, iar media lor aritmetică este &#039;&#039;&#039;2.5&#039;&#039;&#039;. Se va afişa cu trei zecimale, adică &#039;&#039;&#039;2.500&#039;&#039;&#039;&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
&lt;br /&gt;
def validare_date(n: int, a: list[list[int]]) -&amp;gt; bool:&lt;br /&gt;
    # Verificare dimensiunea matricei&lt;br /&gt;
    if not (2 &amp;lt;= n &amp;lt;= 20):&lt;br /&gt;
        return False&lt;br /&gt;
    # Verificare interval valori elemente&lt;br /&gt;
    for i in range(n):&lt;br /&gt;
        for j in range(n):&lt;br /&gt;
            if not (-100 &amp;lt;= a[i][j] &amp;lt;= 100):&lt;br /&gt;
                return False&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
def media_aritmetica_pozitive_sub_diagonala(n: int, a: list[list[int]]) -&amp;gt; float:&lt;br /&gt;
    suma_pozitive_sub_diagonala = 0&lt;br /&gt;
    numar_elemente_pozitive_sub_diagonala = 0&lt;br /&gt;
    # Parcurgere elemente sub diagonala principală&lt;br /&gt;
    for i in range(1, n):&lt;br /&gt;
        for j in range(i):&lt;br /&gt;
            # Dacă elementul este strict pozitiv, se adună la suma S&lt;br /&gt;
            if a[i][j] &amp;gt; 0:&lt;br /&gt;
                suma_pozitive_sub_diagonala += a[i][j]&lt;br /&gt;
                numar_elemente_pozitive_sub_diagonala += 1&lt;br /&gt;
    # Daca nu s-au găsit elemente pozitive sub diagonală, se returnează None&lt;br /&gt;
    if numar_elemente_pozitive_sub_diagonala == 0:&lt;br /&gt;
        return None&lt;br /&gt;
    # Altfel, se calculează și se returnează media aritmetică&lt;br /&gt;
    else:&lt;br /&gt;
        return suma_pozitive_sub_diagonala / numar_elemente_pozitive_sub_diagonala&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    # Citire date de intrare&lt;br /&gt;
    with open(&#039;medpoz.in&#039;, &#039;r&#039;) as fin:&lt;br /&gt;
        n = int(fin.readline())&lt;br /&gt;
        a = []&lt;br /&gt;
        for i in range(n):&lt;br /&gt;
            linie = list(map(int, fin.readline().split()))&lt;br /&gt;
            a.append(linie)&lt;br /&gt;
    # Verificare date de intrare&lt;br /&gt;
    if not validare_date(n, a):&lt;br /&gt;
        with open(&#039;medpoz.out&#039;, &#039;w&#039;) as fout:&lt;br /&gt;
            fout.write(&amp;quot;Datele nu corespund restricțiilor impuse.&amp;quot;)&lt;br /&gt;
    else:&lt;br /&gt;
        # Calcul și afișare rezultat&lt;br /&gt;
        rezultat = media_aritmetica_pozitive_sub_diagonala(n, a)&lt;br /&gt;
        if rezultat is None:&lt;br /&gt;
            print(&amp;quot;NU EXISTA&amp;quot;)&lt;br /&gt;
        else:&lt;br /&gt;
            with open(&#039;medpoz.out&#039;, &#039;w&#039;) as fout:&lt;br /&gt;
                fout.write(&amp;quot;Datele sunt introduse corect.\n&amp;quot;)&lt;br /&gt;
                fout.write(f&amp;quot;{rezultat:.3f}&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Alexandra Leș</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=0223_-_Min_Cols_1&amp;diff=4760</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=4760"/>
		<updated>2023-04-26T17:28:54Z</updated>

		<summary type="html">&lt;p&gt;Alexandra Leș: Pagină nouă: == Enunț == Se consideră un tablou bidimensional cu &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039; linii şi &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039; coloane ce conţine numere naturale cu cel mult două cifre fiecare. == Cerinţa == Să se determine ultima cifră a produsului elementelor de pe diagonala secundară cu proprietatea că sunt minime pe coloanele lor. == Date de intrare == Fişierul de intrare &amp;#039;&amp;#039;&amp;#039;mincols1.in&amp;#039;&amp;#039;&amp;#039; conţine pe prima linie numărul &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039;, iar pe următoarele &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039; linii câte &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039; numere naturale separate prin sp...&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;
# Funț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>Alexandra Leș</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=0211_-_Spirala&amp;diff=4740</id>
		<title>0211 - Spirala</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=0211_-_Spirala&amp;diff=4740"/>
		<updated>2023-04-26T17:08:54Z</updated>

		<summary type="html">&lt;p&gt;Alexandra Leș: Pagină nouă: == Enunț == Se consideră tabloul bidimensional cu &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039; linii şi &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039; coloane ce conţine numere naturale cu cel mult patru cifre fiecare. == Cerinţa == Scrieţi un program care citeşte numărul natural &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039; şi cele &amp;#039;&amp;#039;&amp;#039;n*n&amp;#039;&amp;#039;&amp;#039; elemente ale tabloului şi apoi afişează pe ecran elementele tabloului, separate prin câte un spaţiu, obţinute prin parcurgerea în spirală în sensul acelor de ceasornic. == Date de intrare == Fişierul de intrare &amp;#039;&amp;#039;&amp;#039;spirala.in&amp;#039;&amp;#039;&amp;#039; co...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Enunț ==&lt;br /&gt;
Se consideră tabloul 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 patru cifre fiecare.&lt;br /&gt;
== Cerinţa ==&lt;br /&gt;
Scrieţi un program care citeşte numărul natural &#039;&#039;&#039;n&#039;&#039;&#039; şi cele &#039;&#039;&#039;n*n&#039;&#039;&#039; elemente ale tabloului şi apoi afişează pe ecran elementele tabloului, separate prin câte un spaţiu, obţinute prin parcurgerea în spirală în sensul acelor de ceasornic.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Fişierul de intrare &#039;&#039;&#039;spirala.in&#039;&#039;&#039; conţine pe prima linie numărul n, iar pe următoarele n linii câte n 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șier se va afișa :&#039;&#039;&#039;&amp;quot;Datele sunt introduse corect.&amp;quot;&#039;&#039;&#039;,apoi pe un rând nou fişierul de ieşire &#039;&#039;&#039;spirala.out&#039;&#039;&#039; va conţine pe prima linie elementele cerute, separate prin câte un spaţiu.Î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; 23&lt;br /&gt;
* elementele tabloului sunt mai mici decât 1000&lt;br /&gt;
== Exemplu ==&lt;br /&gt;
; spirala.in&lt;br /&gt;
: 4&lt;br /&gt;
: 1 2 3 4 &lt;br /&gt;
: 5 6 7 8 &lt;br /&gt;
: 9 10 11 12&lt;br /&gt;
: 13 14 15 16&lt;br /&gt;
; spirala.out&lt;br /&gt;
: Datele sunt introduse corect.&lt;br /&gt;
: 1 2 3 4 8 12 16 15 14 13 9 5 6 7 11 10&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;
from typing import List&lt;br /&gt;
&lt;br /&gt;
def validare_date(n: int, a: List[List[int]]) -&amp;gt; bool:&lt;br /&gt;
    # Verificăm dacă n este între 2 și 23&lt;br /&gt;
    if n &amp;lt; 2 or n &amp;gt; 23:&lt;br /&gt;
        return False&lt;br /&gt;
&lt;br /&gt;
    # Verificăm dacă matricea are n linii și n coloane&lt;br /&gt;
    if len(a) != n:&lt;br /&gt;
        return False&lt;br /&gt;
    for row in a:&lt;br /&gt;
        if len(row) != n:&lt;br /&gt;
            return False&lt;br /&gt;
&lt;br /&gt;
    # Verificăm dacă toate elementele matricei au cel mult 4 cifre&lt;br /&gt;
    for row in a:&lt;br /&gt;
        for elem in row:&lt;br /&gt;
            if elem &amp;gt;= 10000:&lt;br /&gt;
                return False&lt;br /&gt;
&lt;br /&gt;
    # Toate verificările au trecut, deci matricea este validă&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def rezolvare_spirala(n: int, a: List[List[int]]) -&amp;gt; List[int]:&lt;br /&gt;
    # Inițializăm poziția curentă la colțul din stânga sus&lt;br /&gt;
    poz_i, poz_j = 0, 0&lt;br /&gt;
&lt;br /&gt;
    # Inițializăm direcția de mers&lt;br /&gt;
    directii = [(0, 1), (1, 0), (0, -1), (-1, 0)]&lt;br /&gt;
    dir_index = 0&lt;br /&gt;
&lt;br /&gt;
    # Inițializăm lista rezultat&lt;br /&gt;
    rezultat = []&lt;br /&gt;
&lt;br /&gt;
    # Parcurgem matricea în spirală&lt;br /&gt;
    for _ in range(n * n):&lt;br /&gt;
        # Adăugăm elementul curent în rezultat&lt;br /&gt;
        rezultat.append(a[poz_i][poz_j])&lt;br /&gt;
&lt;br /&gt;
        # Marcam elementul curent ca fiind deja vizitat&lt;br /&gt;
        a[poz_i][poz_j] = None&lt;br /&gt;
&lt;br /&gt;
        # Calculăm următoarea poziție în funcție de direcție&lt;br /&gt;
        urm_i = poz_i + directii[dir_index][0]&lt;br /&gt;
        urm_j = poz_j + directii[dir_index][1]&lt;br /&gt;
&lt;br /&gt;
        # Dacă următoarea poziție este invalidă sau deja vizitată,&lt;br /&gt;
        # schimbăm direcția de mers&lt;br /&gt;
        if (not 0 &amp;lt;= urm_i &amp;lt; n) or (not 0 &amp;lt;= urm_j &amp;lt; n) or (a[urm_i][urm_j] is None):&lt;br /&gt;
            dir_index = (dir_index + 1) % 4&lt;br /&gt;
            urm_i = poz_i + directii[dir_index][0]&lt;br /&gt;
            urm_j = poz_j + directii[dir_index][1]&lt;br /&gt;
&lt;br /&gt;
        # Actualizăm poziția curentă&lt;br /&gt;
        poz_i, poz_j = urm_i, urm_j&lt;br /&gt;
&lt;br /&gt;
    # Returnăm lista rezultat&lt;br /&gt;
    return rezultat&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Funcția principală&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    # Citim datele de intrare&lt;br /&gt;
    with open(&amp;quot;spirala.in&amp;quot;, &amp;quot;r&amp;quot;) as fin:&lt;br /&gt;
        n = int(fin.readline())&lt;br /&gt;
        a = []&lt;br /&gt;
        for _ in range(n):&lt;br /&gt;
            row = list(map(int, fin.readline().split()))&lt;br /&gt;
            a.append(row)&lt;br /&gt;
&lt;br /&gt;
    # Verificăm dacă datele de intrare sunt valide&lt;br /&gt;
    if not validare_date(n, a):&lt;br /&gt;
        with open(&amp;quot;spirala.out&amp;quot;, &amp;quot;w&amp;quot;) as fout:&lt;br /&gt;
            fout.write(&amp;quot;Datele nu corespund restricțiilor impuse.&amp;quot;)&lt;br /&gt;
    else :&lt;br /&gt;
&lt;br /&gt;
    # Rezolvăm problema&lt;br /&gt;
        rezultat = rezolvare_spirala(n, a)&lt;br /&gt;
&lt;br /&gt;
    # Afișăm rezultatul&lt;br /&gt;
    with open(&amp;quot;spirala.out&amp;quot;, &amp;quot;w&amp;quot;) as fout:&lt;br /&gt;
        fout.write(&amp;quot;Datele sunt introduse corect.\n&amp;quot;)&lt;br /&gt;
        fout.write(&amp;quot; &amp;quot;.join(str(elem) for elem in rezultat))&lt;br /&gt;
        fout.write(&amp;quot;\n&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;/div&gt;</summary>
		<author><name>Alexandra Leș</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=0782_-_Zona_1&amp;diff=4733</id>
		<title>0782 - Zona 1</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=0782_-_Zona_1&amp;diff=4733"/>
		<updated>2023-04-26T16:51:29Z</updated>

		<summary type="html">&lt;p&gt;Alexandra Leș: Pagină nouă: == Cerinţa == Se dă o matrice pătratică cu &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039; linii și &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039; coloane și elemente numere naturale mai mici decât &amp;#039;&amp;#039;&amp;#039;1000&amp;#039;&amp;#039;&amp;#039;. Să se afișeze în ordine strict crescătoare valorile care apar sub diagonala principală și sub diagonala secundară de cel puţin &amp;#039;&amp;#039;&amp;#039;2&amp;#039;&amp;#039;&amp;#039; ori. Fiecare valoare se va afişa o singură dată. == Date de intrare == Programul citește de la tastatură numărul &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039;, apoi elementele matricei, linie cu linie. == Date de ieşire == Dacă d...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cerinţa ==&lt;br /&gt;
Se dă o matrice pătratică cu &#039;&#039;&#039;n&#039;&#039;&#039; linii și &#039;&#039;&#039;n&#039;&#039;&#039; coloane și elemente numere naturale mai mici decât &#039;&#039;&#039;1000&#039;&#039;&#039;. Să se afișeze în ordine strict crescătoare valorile care apar sub diagonala principală și sub diagonala secundară de cel puţin &#039;&#039;&#039;2&#039;&#039;&#039; ori. Fiecare valoare se va afişa o singură dată.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Programul citește de la tastatură numărul &#039;&#039;&#039;n&#039;&#039;&#039;, apoi elementele matricei, linie cu linie.&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 un rând nou numărul, în ordine strict crescătoare, valorile cerute, separate printr-un spaţiu.Î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;
* 1 &amp;amp;les; n &amp;amp;les; 200&lt;br /&gt;
== Exemplu ==&lt;br /&gt;
; Intrare&lt;br /&gt;
: 6&lt;br /&gt;
: 10 8 5 8 4 2 &lt;br /&gt;
: 6 5 3 1 3 8 &lt;br /&gt;
: 8 1 4 7 8 8 &lt;br /&gt;
: 5 1 9 6 6 1 &lt;br /&gt;
: 8 9 3 2 3 6 &lt;br /&gt;
: 8 9 3 3 9 6   &lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele sunt introduse corect.&lt;br /&gt;
: 3 9&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(n, a):&lt;br /&gt;
    # Verificăm dacă matricea respectă restricția impusă&lt;br /&gt;
    # și anume să conțină elemente mai mici decât 200.&lt;br /&gt;
    for i in range(n):&lt;br /&gt;
        for j in range(n):&lt;br /&gt;
            if a[i][j] &amp;gt;= 200:&lt;br /&gt;
                return False&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
def valorile_sub_diagonala(n, a):&lt;br /&gt;
    # Parcurgem matricea și adaugăm elementele sub diagonala secundară&lt;br /&gt;
    # și peste diagonala principală în lista v.&lt;br /&gt;
    v = []&lt;br /&gt;
    for i in range(n):&lt;br /&gt;
        for j in range(n):&lt;br /&gt;
            if i &amp;gt; j and i + j &amp;gt; n - 1:&lt;br /&gt;
                v.append(a[i][j])&lt;br /&gt;
    # Sortăm lista v în ordine crescătoare și căutăm elementele care se repetă și apar de cel puțin 2 ori.&lt;br /&gt;
    v.sort()&lt;br /&gt;
    rezultat = []&lt;br /&gt;
    for i in range(1, len(v)):&lt;br /&gt;
        if v[i] == v[i-1] and v[i] not in rezultat:&lt;br /&gt;
            rezultat.append(v[i])&lt;br /&gt;
    return rezultat&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    # Citim dimensiunea matricei și elementele acesteia.&lt;br /&gt;
    n = int(input())&lt;br /&gt;
    a = []&lt;br /&gt;
    for i in range(n):&lt;br /&gt;
        linie = input()&lt;br /&gt;
        a.append([int(x) for x in linie.split()])&lt;br /&gt;
    # Verificăm dacă matricea este validă și afișăm valorile care respectă condițiile problemei, în ordine crescătoare.&lt;br /&gt;
    if not validare_date(n, a):&lt;br /&gt;
        print(&amp;quot;Datele nu corespund restrictiilor impuse.&amp;quot;)&lt;br /&gt;
    else:&lt;br /&gt;
        rezultat = valorile_sub_diagonala(n, a)&lt;br /&gt;
        print(&amp;quot;Datele sunt introduse corect.&amp;quot;)&lt;br /&gt;
        for x in rezultat:&lt;br /&gt;
            print(x, end=&amp;quot; &amp;quot;)&lt;br /&gt;
        print()&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Alexandra Leș</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=0729_-_Zona&amp;diff=4516</id>
		<title>0729 - Zona</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=0729_-_Zona&amp;diff=4516"/>
		<updated>2023-04-26T12:32:29Z</updated>

		<summary type="html">&lt;p&gt;Alexandra Leș: Pagină nouă: == Cerinţa == Se dă o matrice pătratică cu &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039; linii și &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039; coloane și elemente numere naturale mai mici decât &amp;#039;&amp;#039;&amp;#039;1000&amp;#039;&amp;#039;&amp;#039;. Să se afișeze în ordine strict crescătoare valorile situate sub diagonala principală și deasupra diagonalei secundare. Dacă o valoare apare în zona respectivă de mai multe ori, se va afișa o singură dată. == Date de intrare == Programul citește de la tastatură numărul &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039;, apoi elementele matricei, linie cu linie. == Date...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cerinţa ==&lt;br /&gt;
Se dă o matrice pătratică cu &#039;&#039;&#039;n&#039;&#039;&#039; linii și &#039;&#039;&#039;n&#039;&#039;&#039; coloane și elemente numere naturale mai mici decât &#039;&#039;&#039;1000&#039;&#039;&#039;. Să se afișeze în ordine strict crescătoare valorile situate sub diagonala principală și deasupra diagonalei secundare. Dacă o valoare apare în zona respectivă de mai multe ori, se va afișa o singură dată.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Programul citește de la tastatură numărul &#039;&#039;&#039;n&#039;&#039;&#039;, apoi elementele matricei, linie cu linie.&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 un rând nou,în ordine strict crescătoare, valorile cerute, separate prin spații.Î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;
* 1 &amp;amp;les; n &amp;amp;les; 200&lt;br /&gt;
== Exemplu ==&lt;br /&gt;
; Intrare&lt;br /&gt;
: 6&lt;br /&gt;
: 10 8 5 8 4 2 &lt;br /&gt;
: 6 5 3 1 3 8 &lt;br /&gt;
: 8 1 4 7 8 8 &lt;br /&gt;
: 5 1 9 6 6 1 &lt;br /&gt;
: 8 9 10 1 3 6 &lt;br /&gt;
: 8 2 3 3 9 6 &lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele sunt introduse corect.&lt;br /&gt;
: 1 5 6 8&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;
# Functia de validare pentru matricea de intrare.&lt;br /&gt;
def validare(n: int, a: list[list[int]]) -&amp;gt; bool:&lt;br /&gt;
&lt;br /&gt;
    # Verificăm dacă n se află în intervalul specificat&lt;br /&gt;
    if n &amp;lt; 1 or n &amp;gt; 200:&lt;br /&gt;
        return False&lt;br /&gt;
    # Verificăm dacă fiecare element al matricei se află în intervalul [0, 1000)&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;= 1000:&lt;br /&gt;
                return False&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Funcția care rezolvă problema și returnează valorile cerute.&lt;br /&gt;
def rezolva_matrice(n: int, a: list[list[int]]) -&amp;gt; list[int]:&lt;br /&gt;
    # Inițializăm un vector v de dimensiune 1000, initial cu valori 0&lt;br /&gt;
    v = [0] * 1000&lt;br /&gt;
    # Parcurgem matricea și setăm elementele corespunzătoare din v pe 1 dacă se află sub diagonala principală și&lt;br /&gt;
    # deasupra diagonalei secundare&lt;br /&gt;
    for i in range(n):&lt;br /&gt;
        for j in range(n):&lt;br /&gt;
            if i &amp;gt; j and i + j &amp;lt; n - 1:&lt;br /&gt;
                v[a[i][j]] = 1&lt;br /&gt;
    # Inițializam o lista rezultat cu valorile de 0 și apoi adaugăm valorile de 1 din v in ordine crescătoare&lt;br /&gt;
    rezultat = []&lt;br /&gt;
    for i in range(1000):&lt;br /&gt;
        if v[i] == 1:&lt;br /&gt;
            rezultat.append(i)&lt;br /&gt;
    return rezultat&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Programul principal&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    # Citim n și matricea de la tastatură&lt;br /&gt;
    n = int(input())&lt;br /&gt;
    a = []&lt;br /&gt;
    for i in range(n):&lt;br /&gt;
        a.append(list(map(int, input().split())))&lt;br /&gt;
&lt;br /&gt;
    # Verificăm dacă matricea îndeplineste cerințele problemei&lt;br /&gt;
    if validare(n, a):&lt;br /&gt;
        # Dacă matricea este validă, rezolvăm problema și afișăm rezultatul&lt;br /&gt;
        rezultat = rezolva_matrice(n, a)&lt;br /&gt;
        print(&amp;quot;Datele sunt introduse corect.&amp;quot;)&lt;br /&gt;
        print(&amp;quot;Valorile cerute sunt:&amp;quot;, &amp;quot; &amp;quot;.join(map(str, rezultat)))&lt;br /&gt;
    else:&lt;br /&gt;
        # Dacă matricea nu este valida, afișăm un mesaj corespunzator&lt;br /&gt;
        print(&amp;quot;Datele nu corespund restricțiilor impuse.&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Alexandra Leș</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=0998_-_Matrice_6&amp;diff=4515</id>
		<title>0998 - Matrice 6</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=0998_-_Matrice_6&amp;diff=4515"/>
		<updated>2023-04-26T12:12:26Z</updated>

		<summary type="html">&lt;p&gt;Alexandra Leș: Pagină nouă: == Cerinţa == Se consideră o matrice pătratică cu &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039; linii şi &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039; coloane şi elemente numere naturale. Să se modifice matricea în felul următor: toate elementele de pe liniile care conţin valoare maximă din matrice vor fi mărite cu valoarea minimă din matrice. == Date de intrare == Fișierul de intrare &amp;#039;&amp;#039;&amp;#039;matrice6.in&amp;#039;&amp;#039;&amp;#039; conține pe prima linie numărul &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039;, iar următoarele &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039; linii câte &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039; numere naturale, reprezentând elementele matrice...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cerinţa ==&lt;br /&gt;
Se consideră o matrice pătratică cu &#039;&#039;&#039;n&#039;&#039;&#039; linii şi &#039;&#039;&#039;n&#039;&#039;&#039; coloane şi elemente numere naturale. Să se modifice matricea în felul următor: toate elementele de pe liniile care conţin valoare maximă din matrice vor fi mărite cu valoarea minimă din matrice.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Fișierul de intrare &#039;&#039;&#039;matrice6.in&#039;&#039;&#039; conține pe prima linie numărul &#039;&#039;&#039;n&#039;&#039;&#039;, iar următoarele &#039;&#039;&#039;n&#039;&#039;&#039; linii câte &#039;&#039;&#039;n&#039;&#039;&#039; numere naturale, reprezentând elementele matricei.&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 pe un rând nou matricea modificată, câte o linie a matricei pe o linie a fişierului, elementele fiecărei linii fiind separate prin exact un spaţiu.În cazul contrar,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;
== Restricții și precizări ==&lt;br /&gt;
* 1 &amp;amp;les; n &amp;amp;les; 100&lt;br /&gt;
* elementele matricei vor fi mai mici decât 1 000 000 000&lt;br /&gt;
== Exemplu ==&lt;br /&gt;
; matrice6.in&lt;br /&gt;
: 4&lt;br /&gt;
: 2 5 3 2&lt;br /&gt;
: 2 2 4 4&lt;br /&gt;
: 3 2 2 2&lt;br /&gt;
: 5 3 5 2&lt;br /&gt;
; matrice6.out&lt;br /&gt;
: Datele sunt introduse corect.&lt;br /&gt;
: 4 7 5 4&lt;br /&gt;
: 2 2 4 4&lt;br /&gt;
: 3 2 2 2&lt;br /&gt;
: 7 5 7 4&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(n: int, matrice: list[list[int]]) -&amp;gt; bool:&lt;br /&gt;
    # Verificăm dacă numărul de linii și coloane ale matricei este cel puțin 1 și cel mult 100&lt;br /&gt;
    if n &amp;lt; 1 or n &amp;gt; 100:&lt;br /&gt;
        return False&lt;br /&gt;
&lt;br /&gt;
    # Verificăm dacă matricea are n linii și n coloane&lt;br /&gt;
    if len(matrice) != n:&lt;br /&gt;
        return False&lt;br /&gt;
    for linie in matrice:&lt;br /&gt;
        if len(linie) != n:&lt;br /&gt;
            return False&lt;br /&gt;
&lt;br /&gt;
    # Verificăm dacă toate elementele matricei sunt numere naturale mai mici decât 1 000 000 000&lt;br /&gt;
    for linie in matrice:&lt;br /&gt;
        for element in linie:&lt;br /&gt;
            if not isinstance(element, int) or element &amp;lt; 0 or element &amp;gt;= 1000000000:&lt;br /&gt;
                return False&lt;br /&gt;
&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def rezolvare(n: int, matrice: list[list[int]]) -&amp;gt; list[list[int]]:&lt;br /&gt;
    # Găsim valoarea maximă și valoarea minimă din matrice&lt;br /&gt;
    Max = matrice[0][0]&lt;br /&gt;
    Min = matrice[0][0]&lt;br /&gt;
    for linie in matrice:&lt;br /&gt;
        for element in linie:&lt;br /&gt;
            if element &amp;gt; Max:&lt;br /&gt;
                Max = element&lt;br /&gt;
            if element &amp;lt; Min:&lt;br /&gt;
                Min = element&lt;br /&gt;
&lt;br /&gt;
    # Identificăm liniile care conțin valoarea maximă&lt;br /&gt;
    liniile_maximului = []&lt;br /&gt;
    for i, linie in enumerate(matrice):&lt;br /&gt;
        if Max in linie:&lt;br /&gt;
            liniile_maximului.append(i)&lt;br /&gt;
&lt;br /&gt;
    # Adăugăm valoarea minimă la fiecare element de pe liniile identificate anterior&lt;br /&gt;
    for i in liniile_maximului:&lt;br /&gt;
        for j in range(n):&lt;br /&gt;
            matrice[i][j] += Min&lt;br /&gt;
&lt;br /&gt;
    return matrice&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    with open(&#039;matrice6.in&#039;, &#039;r&#039;) as fin:&lt;br /&gt;
        n = int(fin.readline())&lt;br /&gt;
        matrice = [list(map(int, fin.readline().split())) for _ in range(n)]&lt;br /&gt;
&lt;br /&gt;
    if validare(n, matrice):&lt;br /&gt;
        matrice_modificata = rezolvare(n, matrice)&lt;br /&gt;
        with open(&#039;matrice6.out&#039;, &#039;w&#039;) as fout:&lt;br /&gt;
            fout.write(&amp;quot;Datele sunt introduse corect.\n&amp;quot;)&lt;br /&gt;
            for linie in matrice_modificata:&lt;br /&gt;
                fout.write(&#039; &#039;.join(str(element) for element in linie) + &#039;\n&#039;)&lt;br /&gt;
    else:&lt;br /&gt;
        with open(&amp;quot;matrice6.out&amp;quot;, &amp;quot;w&amp;quot;) as f_out:&lt;br /&gt;
            fout.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>Alexandra Leș</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=1437_-_Fractii_4&amp;diff=4480</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=4480"/>
		<updated>2023-04-25T20:38:19Z</updated>

		<summary type="html">&lt;p&gt;Alexandra Leș: Ștergerea conținutului paginii&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Alexandra Leș</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=1590_-_Arma_1&amp;diff=4479</id>
		<title>1590 - Arma 1</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=1590_-_Arma_1&amp;diff=4479"/>
		<updated>2023-04-25T20:30:29Z</updated>

		<summary type="html">&lt;p&gt;Alexandra Leș: Ștergerea conținutului paginii&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Alexandra Leș</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=0081_-_Matrice&amp;diff=4444</id>
		<title>0081 - Matrice</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=0081_-_Matrice&amp;diff=4444"/>
		<updated>2023-04-25T16:01:49Z</updated>

		<summary type="html">&lt;p&gt;Alexandra Leș: Pagină nouă: == Cerinţa == Scrieţi un program care citeşte de la tastatură un număr natural &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039; ( &amp;#039;&amp;#039;&amp;#039;1 ≤ n ≤ 20&amp;#039;&amp;#039;&amp;#039; ) şi apoi elementele unui tablou bidimensional cu &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039; linii şi &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039; coloane, care memorează numere naturale. Programul afişează pe ecran numărul de elemente din tablou care sunt strict mai mari decât toate elementele cu care se învecinează direct (aflate pe aceeaşi linie dar pe o coloană alăturată sau pe aceeaşi coloană dar pe o linie alătu...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cerinţa ==&lt;br /&gt;
Scrieţi un program care citeşte de la tastatură un număr natural &#039;&#039;&#039;n&#039;&#039;&#039; ( &#039;&#039;&#039;1 ≤ n ≤ 20&#039;&#039;&#039; ) şi apoi elementele unui tablou bidimensional cu &#039;&#039;&#039;n&#039;&#039;&#039; linii şi &#039;&#039;&#039;n&#039;&#039;&#039; coloane, care memorează numere naturale.&lt;br /&gt;
Programul afişează pe ecran numărul de elemente din tablou care sunt strict mai mari decât toate elementele cu care se învecinează direct (aflate pe aceeaşi linie dar pe o coloană alăturată sau pe aceeaşi coloană dar pe o linie alăturată).&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*n&#039;&#039;&#039; numere naturale, separate prin spaţii.&lt;br /&gt;
== Date de ieşire ==&lt;br /&gt;
Dacă datele sunt introduse corect,pe ecran se va afișa :&#039;&#039;&#039;&amp;quot;Datele sunt introduse corect.&amp;quot;&#039;&#039;&#039;,apoi pe un rând nou numărul de elemente din tablou care respectă regula.Î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;
* 1 &amp;amp;les; n &amp;amp;les; 20&lt;br /&gt;
* elementele matricei vor fi mai mici decât 1.000.000&lt;br /&gt;
== Exemplu ==&lt;br /&gt;
; Intrare&lt;br /&gt;
: 4&lt;br /&gt;
: 1 5 1 1&lt;br /&gt;
: 2 1 2 3&lt;br /&gt;
: 1 3 4 2&lt;br /&gt;
: 2 1 2 1&lt;br /&gt;
; Date de ieșire&lt;br /&gt;
: Datele sunt introduse corect.&lt;br /&gt;
: 5&lt;br /&gt;
== Explicație == &lt;br /&gt;
Elementele din matrice care respectă regula sunt: &#039;&#039;&#039;5 2 3 4 2&#039;&#039;&#039;&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
&lt;br /&gt;
def validare_date(n, matrice):&lt;br /&gt;
    # Verifică dimensiunea matricei&lt;br /&gt;
    if n &amp;lt; 1 or n &amp;gt; 20:&lt;br /&gt;
        return False&lt;br /&gt;
&lt;br /&gt;
    # Verifică dacă elementele matricei sunt numere naturale&lt;br /&gt;
    for linie in matrice:&lt;br /&gt;
        for element in linie:&lt;br /&gt;
            if not isinstance(element, int) or element &amp;lt; 0:&lt;br /&gt;
                return False&lt;br /&gt;
&lt;br /&gt;
    # Datele sunt valide&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def rezolva_problema(n, matrice):&lt;br /&gt;
    numar_elemente= 0&lt;br /&gt;
&lt;br /&gt;
    # Verifică fiecare element din matrice&lt;br /&gt;
    for i in range(n):&lt;br /&gt;
        for j in range(n):&lt;br /&gt;
            este_maxim = True&lt;br /&gt;
&lt;br /&gt;
            # Verifică dacă există un element vecin mai mare&lt;br /&gt;
            if i &amp;gt; 0 and matrice[i-1][j] &amp;gt; matrice[i][j]:&lt;br /&gt;
                este_maxim = False&lt;br /&gt;
            if i &amp;lt; n-1 and matrice[i+1][j] &amp;gt; matrice[i][j]:&lt;br /&gt;
                este_maxim = False&lt;br /&gt;
            if j &amp;gt; 0 and matrice[i][j-1] &amp;gt; matrice[i][j]:&lt;br /&gt;
                este_maxim = False&lt;br /&gt;
            if j &amp;lt; n-1 and matrice[i][j+1] &amp;gt; matrice[i][j]:&lt;br /&gt;
                este_maxim = False&lt;br /&gt;
&lt;br /&gt;
            # Dacă este maxim, crește numărul de elemente găsite&lt;br /&gt;
            if este_maxim:&lt;br /&gt;
                numar_elemente+= 1&lt;br /&gt;
&lt;br /&gt;
    # Returnează numărul de elemente găsite&lt;br /&gt;
    return numar_elemente&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    # Citirea datelor de intrare&lt;br /&gt;
    n = int(input())&lt;br /&gt;
    matrice = []&lt;br /&gt;
    for i in range(n):&lt;br /&gt;
        linie = [int(x) for x in input().split()]&lt;br /&gt;
        matrice.append(linie)&lt;br /&gt;
&lt;br /&gt;
    # Verificarea datelor de intrare&lt;br /&gt;
    if not validare_date(n, matrice):&lt;br /&gt;
        print(&amp;quot;Datele nu corespund restricțiilor impuse.&amp;quot;)&lt;br /&gt;
    else :&lt;br /&gt;
    # Rezolvarea problemei și afișarea rezultatului&lt;br /&gt;
        rezultat = rezolva_problema(n, matrice)&lt;br /&gt;
        print(&amp;quot;Datele sunt introduse corect.&amp;quot;)&lt;br /&gt;
        print(rezultat)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Alexandra Leș</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=2877_-_Sort_Matrix_Lin_Col&amp;diff=4443</id>
		<title>2877 - Sort Matrix Lin Col</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=2877_-_Sort_Matrix_Lin_Col&amp;diff=4443"/>
		<updated>2023-04-25T12:49:33Z</updated>

		<summary type="html">&lt;p&gt;Alexandra Leș: Pagină nouă: == Cerinţa == Se dă o matrice pătratică de dimensiune &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039;. Să se ordoneze crescător fiecare linie a matricei, apoi să se ordoneze crescător fiecare coloană a acesteia. == Date de intrare == Programul citește de la tastatură numărul &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039;, iar apoi elementele matricei. Fiecare linie se află pe câte un rând, elementele fiecărei linii fiind separate prin câte un spațiu. == Date de ieşire == Dacă datele sunt introduse corect,pe ecran se va afișa :&amp;#039;&amp;#039;&amp;#039;&amp;quot;Da...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cerinţa ==&lt;br /&gt;
Se dă o matrice pătratică de dimensiune &#039;&#039;&#039;n&#039;&#039;&#039;. Să se ordoneze crescător fiecare linie a matricei, apoi să se ordoneze crescător fiecare coloană a acesteia.&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 elementele matricei. Fiecare linie se află pe câte un rând, elementele fiecărei linii fiind separate prin câte un spațiu.&lt;br /&gt;
== Date de ieşire ==&lt;br /&gt;
Dacă datele sunt introduse corect,pe ecran se va afișa :&#039;&#039;&#039;&amp;quot;Datele sunt introduse corect.&amp;quot;&#039;&#039;&#039;,apoi pe un rând nou matricea modificată, câte o linie a matricei pe o linie a ecranului, elementele fiecărei linii fiind separate prin câte un spațiu.Î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;
* 1 &amp;amp;les; n &amp;amp;les; 100&lt;br /&gt;
* elementele matricei vor fi mai mici decât 1.000.000&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
: 3&lt;br /&gt;
: 4 1 3&lt;br /&gt;
: 9 6 8&lt;br /&gt;
: 5 2 7&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele sunt introduse corect.&lt;br /&gt;
: 1 3 4 &lt;br /&gt;
: 2 5 7 &lt;br /&gt;
: 6 8 9&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
: 4&lt;br /&gt;
: 12 7 1 8&lt;br /&gt;
: 20 9 11 2&lt;br /&gt;
: 15 4 5 13&lt;br /&gt;
: 3 18 10 6&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele sunt introduse corect.&lt;br /&gt;
: 1 5 8 12 &lt;br /&gt;
: 2 6 10 15 &lt;br /&gt;
: 3 7 11 18 &lt;br /&gt;
: 4 9 13 20 &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 de validare a datelor de intrare conform cerințelor problemei.&lt;br /&gt;
def validare_date_intrare(n, a):&lt;br /&gt;
    if not 1 &amp;lt;= n &amp;lt;= 100:&lt;br /&gt;
        return False&lt;br /&gt;
    for linie in a:&lt;br /&gt;
        for elem in linie:&lt;br /&gt;
            if elem &amp;gt; 999:&lt;br /&gt;
                return False&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
# Funcția principală care primește matricea și returnează matricea ordonată crescător pe fiecare linie și coloană.&lt;br /&gt;
def ordonare_matrice(n, a):&lt;br /&gt;
    for i in range(n):&lt;br /&gt;
        a[i].sort()  # ordonare crescătoare pe linii&lt;br /&gt;
    a_transpusa = [list(x) for x in zip(*a)]  # transpunerea matricei&lt;br /&gt;
    for i in range(n):&lt;br /&gt;
        a_transpusa[i].sort()  # ordonare crescătoare pe coloane&lt;br /&gt;
    a_ordonata = [list(x) for x in zip(*a_transpusa)]  # transpunerea inversă a matricei&lt;br /&gt;
    return a_ordonata&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    n = int(input())&lt;br /&gt;
    a = [list(map(int, input().split())) for _ in range(n)]&lt;br /&gt;
    if not validare_date_intrare(n, a):&lt;br /&gt;
        print(&amp;quot;Datele nu corespund restricțiilor impuse.&amp;quot;)&lt;br /&gt;
    else:&lt;br /&gt;
        print(&amp;quot;Datele sunt introduse corect.&amp;quot;)&lt;br /&gt;
        a_ordonata = ordonare_matrice(n, a)&lt;br /&gt;
        for linie in a_ordonata:&lt;br /&gt;
            print(*linie)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Alexandra Leș</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=0784_-_Lin_Col_Egale&amp;diff=4442</id>
		<title>0784 - Lin Col Egale</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=0784_-_Lin_Col_Egale&amp;diff=4442"/>
		<updated>2023-04-25T12:23:10Z</updated>

		<summary type="html">&lt;p&gt;Alexandra Leș: Pagină nouă: == Cerinţa == Se dă o matrice cu &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039; linii şi &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039; coloane şi elemente numere naturale. Să se determine câte elemente ale matricei se află pe linii și coloane de sumă egală. Elementul &amp;#039;&amp;#039;&amp;#039;a[i,j]&amp;#039;&amp;#039;&amp;#039; va fi numărat dacă suma elementelor de pe linia &amp;#039;&amp;#039;&amp;#039;i&amp;#039;&amp;#039;&amp;#039; este egală cu cea de pe coloana &amp;#039;&amp;#039;&amp;#039;j&amp;#039;&amp;#039;&amp;#039;. == Date de intrare == Programul citește de la tastatură numărul &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039;, iar apoi &amp;#039;&amp;#039;&amp;#039;n*n&amp;#039;&amp;#039;&amp;#039; numere naturale, separate prin spaţii, reprezentând elementele matric...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cerinţa ==&lt;br /&gt;
Se dă o matrice cu &#039;&#039;&#039;n&#039;&#039;&#039; linii şi &#039;&#039;&#039;n&#039;&#039;&#039; coloane şi elemente numere naturale. Să se determine câte elemente ale matricei se află pe linii și coloane de sumă egală. Elementul &#039;&#039;&#039;a[i,j]&#039;&#039;&#039; va fi numărat dacă suma elementelor de pe linia &#039;&#039;&#039;i&#039;&#039;&#039; este egală cu cea de pe coloana &#039;&#039;&#039;j&#039;&#039;&#039;.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Programul citește de la tastatură numărul &#039;&#039;&#039;n&#039;&#039;&#039;, iar apoi &#039;&#039;&#039;n*n&#039;&#039;&#039; numere naturale, separate prin spaţii, reprezentând elementele matricei, linie cu linie.&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 un rând nou numărul &#039;&#039;&#039;C&#039;&#039;&#039;, reprezentând valoarea calculată.Î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;
* 1 &amp;amp;les; n &amp;amp;les; 100&lt;br /&gt;
* elementele matricei vor fi mai mici decât 1.000.000&lt;br /&gt;
== Exemplu ==&lt;br /&gt;
; Date de intrare&lt;br /&gt;
: 5&lt;br /&gt;
: 3 1 8 5 4 &lt;br /&gt;
: 7 8 5 1 2 &lt;br /&gt;
: 2 2 6 7 3 &lt;br /&gt;
: 9 8 1 3 6 &lt;br /&gt;
: 7 5 3 1 7  &lt;br /&gt;
; Date de ieșire&lt;br /&gt;
: Datele sunt introduse corect.&lt;br /&gt;
: 2&lt;br /&gt;
== Explicație == &lt;br /&gt;
Cele două elemente se află pe linia &#039;&#039;&#039;2&#039;&#039;&#039;, coloana &#039;&#039;&#039;3&#039;&#039;&#039;, respectiv linia &#039;&#039;&#039;5&#039;&#039;&#039;, coloana &#039;&#039;&#039;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;
&lt;br /&gt;
from typing import List&lt;br /&gt;
def validare_date(n: int, matrice: List[List[int]]) -&amp;gt; bool:&lt;br /&gt;
    # Verifică dacă n are valoarea potrivită&lt;br /&gt;
    if n &amp;lt; 1 or n &amp;gt; 100:&lt;br /&gt;
        return False&lt;br /&gt;
&lt;br /&gt;
    # Verifică dacă matricea are dimensiunea potrivită&lt;br /&gt;
    if len(matrice) != n:&lt;br /&gt;
        return False&lt;br /&gt;
    for linie in matrice:&lt;br /&gt;
        if len(linie) != n:&lt;br /&gt;
            return False&lt;br /&gt;
&lt;br /&gt;
    # Verifică dacă toate elementele matricei sunt numere naturale mai mici decât 1000&lt;br /&gt;
    for linie in matrice:&lt;br /&gt;
        for elem in linie:&lt;br /&gt;
            if not (isinstance(elem, int) and 0 &amp;lt;= elem &amp;lt; 1000):&lt;br /&gt;
                return False&lt;br /&gt;
&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def determina_nr_elemente(n: int, matrice: List[List[int]]) -&amp;gt; int:&lt;br /&gt;
    # Inițializăm două liste goale, V si H, pentru a calcula sumele elementelor de pe fiecare linie și coloană&lt;br /&gt;
    V = [0] * (n + 1)&lt;br /&gt;
    H = [0] * (n + 1)&lt;br /&gt;
&lt;br /&gt;
    # Parcurgem matricea și adunăm elementele de pe fiecare linie și coloana în listele V si H&lt;br /&gt;
    for i in range(1, n + 1):&lt;br /&gt;
        for j in range(1, n + 1):&lt;br /&gt;
            V[i] += matrice[i - 1][j - 1]&lt;br /&gt;
            H[j] += matrice[i - 1][j - 1]&lt;br /&gt;
&lt;br /&gt;
    # Initializam numar_elemente_egale cu 0, pentru a numara elementele care se află pe o linie și o coloană al caror sume sunt egale&lt;br /&gt;
    numar_elemente_egale = 0&lt;br /&gt;
&lt;br /&gt;
    # Parcurgem din nou matricea ăi numărăm elementele care se află pe o linie și o coloană al caror sume sunt egale&lt;br /&gt;
    for i in range(1, n + 1):&lt;br /&gt;
        for j in range(1, n + 1):&lt;br /&gt;
            if V[i] == H[j]:&lt;br /&gt;
                numar_elemente_egale += 1&lt;br /&gt;
&lt;br /&gt;
    # Returnăm numarul de elemente care se află pe o linie și o coloană al căror sume sunt egale&lt;br /&gt;
    return numar_elemente_egale&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    # Citire date de intrare&lt;br /&gt;
    n = int(input())&lt;br /&gt;
    matrice = []&lt;br /&gt;
    for i in range(n):&lt;br /&gt;
        linie = [int(elem) for elem in input().split()]&lt;br /&gt;
        matrice.append(linie)&lt;br /&gt;
&lt;br /&gt;
    # Validare date de intrare&lt;br /&gt;
    if validare_date(n, matrice):&lt;br /&gt;
        # Calculare și afișare rezultat&lt;br /&gt;
        C = determina_nr_elemente(n, matrice)&lt;br /&gt;
        print(&amp;quot;\nDatele sunt introduse corect.\n&amp;quot;)&lt;br /&gt;
        print(C)&lt;br /&gt;
    else:&lt;br /&gt;
        print(&amp;quot;Datele nu corespund restrictiilor impuse.&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Alexandra Leș</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=0781_-_Zone_1&amp;diff=4421</id>
		<title>0781 - Zone 1</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=0781_-_Zone_1&amp;diff=4421"/>
		<updated>2023-04-25T12:04:38Z</updated>

		<summary type="html">&lt;p&gt;Alexandra Leș: Pagină nouă: == Cerinţa == Se dă o matrice cu &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039; linii şi &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039; coloane şi elemente numere naturale. Cele două diagonale delimitează în matrice &amp;#039;&amp;#039;&amp;#039;4&amp;#039;&amp;#039;&amp;#039; zone: &amp;#039;&amp;#039;&amp;#039;NORD&amp;#039;&amp;#039;&amp;#039; – elementele situate deasupra diagonalei principale şi deasupra celei secundare &amp;#039;&amp;#039;&amp;#039;EST&amp;#039;&amp;#039;&amp;#039; – elementele situate deasupra diagonalei principale şi sub cea secundară &amp;#039;&amp;#039;&amp;#039;SUD&amp;#039;&amp;#039;&amp;#039; – elementele situate sub diagonala principală şi sub cea secundară &amp;#039;&amp;#039;&amp;#039;VEST&amp;#039;&amp;#039;&amp;#039; – elementele situate sub diagonala principal...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cerinţa ==&lt;br /&gt;
Se dă o matrice cu &#039;&#039;&#039;n&#039;&#039;&#039; linii şi &#039;&#039;&#039;n&#039;&#039;&#039; coloane şi elemente numere naturale. Cele două diagonale delimitează în matrice &#039;&#039;&#039;4&#039;&#039;&#039; zone:&lt;br /&gt;
&#039;&#039;&#039;NORD&#039;&#039;&#039; – elementele situate deasupra diagonalei principale şi deasupra celei secundare&lt;br /&gt;
&#039;&#039;&#039;EST&#039;&#039;&#039; – elementele situate deasupra diagonalei principale şi sub cea secundară&lt;br /&gt;
&#039;&#039;&#039;SUD&#039;&#039;&#039; – elementele situate sub diagonala principală şi sub cea secundară&lt;br /&gt;
&#039;&#039;&#039;VEST&#039;&#039;&#039; – elementele situate sub diagonala principală şi deasupra celei secundare&lt;br /&gt;
Să se afişeze, în ordine crescătoare, sumele elementelor din cele patru zone.&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*n&#039;&#039;&#039; numere naturale, separate prin spaţii, reprezentând elementele matricei, linie cu linie.&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 un rând nou numerele &#039;&#039;&#039;S1 S2 S3 S4&#039;&#039;&#039;, separate printr-un spaţiu, în ordine crescătoare.Î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;
* 1 &amp;amp;les; n &amp;amp;les; 100&lt;br /&gt;
* elementele matricei vor fi mai mici decât 1.000.000&lt;br /&gt;
== Exemplu ==&lt;br /&gt;
; Date de intrare&lt;br /&gt;
: 5&lt;br /&gt;
: 3 1 8 5 4 &lt;br /&gt;
: 7 8 5 1 2 &lt;br /&gt;
: 2 2 6 7 3 &lt;br /&gt;
: 9 8 1 3 6 &lt;br /&gt;
: 7 5 3 1 7&lt;br /&gt;
; Date de ieșire&lt;br /&gt;
: Datele sunt introduse corect.&lt;br /&gt;
: 10 18 19 20&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;
#Functia verifică dacă datele introduse respectă restricțiile impuse.&lt;br /&gt;
def validare_date(n, matrice):&lt;br /&gt;
&lt;br /&gt;
    for i in range(n):&lt;br /&gt;
        for j in range(n):&lt;br /&gt;
            if matrice[i][j] &amp;gt;= 1000:&lt;br /&gt;
                return False&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
#Funcție care calculează cele patru sume cerute în problemă&lt;br /&gt;
def rezolvare(n, matrice):&lt;br /&gt;
    S1, S2, S3, S4 = 0, 0, 0, 0&lt;br /&gt;
&lt;br /&gt;
    for i in range(n):&lt;br /&gt;
        for j in range(n):&lt;br /&gt;
            if i &amp;lt; j and i + j &amp;lt; n:&lt;br /&gt;
                S1 += matrice[i][j]&lt;br /&gt;
            elif i &amp;lt; j and i + j &amp;gt; n - 1:&lt;br /&gt;
                if i + j == n - 1:&lt;br /&gt;
                    continue&lt;br /&gt;
                S2 += matrice[i][j]&lt;br /&gt;
            elif i &amp;gt; j and i + j &amp;gt; n - 1 and j != n - 1 - i:&lt;br /&gt;
                S3 += matrice[i][j]&lt;br /&gt;
            elif i &amp;gt; j and i + j &amp;lt; n and j != n - 1 - i:&lt;br /&gt;
                S4 += matrice[i][j]&lt;br /&gt;
&lt;br /&gt;
    return sorted([S1, S2, S3, S4])&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    # citirea datelor de intrare&lt;br /&gt;
    n = int(input())&lt;br /&gt;
    matrice = []&lt;br /&gt;
    for i in range(n):&lt;br /&gt;
        linie = input().split()&lt;br /&gt;
        linie = [int(x) for x in linie]&lt;br /&gt;
        matrice.append(linie)&lt;br /&gt;
&lt;br /&gt;
    # validarea datelor de intrare&lt;br /&gt;
    if validare_date(n, matrice):&lt;br /&gt;
        print(&amp;quot;\nDatele sunt introduse corect.\n&amp;quot;)&lt;br /&gt;
        # rezolvarea problemei&lt;br /&gt;
        rezultat = rezolvare(n, matrice)&lt;br /&gt;
&lt;br /&gt;
        # afisarea rezultatului&lt;br /&gt;
        for s in rezultat:&lt;br /&gt;
            print(s, end=&#039; &#039;)&lt;br /&gt;
    else:&lt;br /&gt;
        print(&#039;Datele nu corespund restrictiilor impuse.&#039;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Alexandra Leș</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=3678_-_Pal_Pow&amp;diff=4381</id>
		<title>3678 - Pal Pow</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=3678_-_Pal_Pow&amp;diff=4381"/>
		<updated>2023-04-25T11:07:18Z</updated>

		<summary type="html">&lt;p&gt;Alexandra Leș: /* Rezolvare */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cerinţa ==&lt;br /&gt;
Un număr natural se numește palPow dacă oglinditul său are strict mai mulți divizori pozitivi decât are numărul. De exemplu &#039;&#039;&#039;23&#039;&#039;&#039; este un număr palPow deoarece 23 are doi divizori pozitivi &#039;&#039;&#039;(1 23)&#039;&#039;&#039; iar oglinditul său, 32, are șase divizori pozitivi (&#039;&#039;&#039;1 2 4 8 16 32&#039;&#039;&#039;). Oglinditul unui număr este valoarea obținută considerând cifrele numărului de la dreapta la stânga(de exemplu, oglinditul lui &#039;&#039;&#039;675&#039;&#039;&#039; este &#039;&#039;&#039;576&#039;&#039;&#039; iar oglinditullui &#039;&#039;&#039;20310&#039;&#039;&#039; este &#039;&#039;&#039;1302&#039;&#039;&#039;). Pentru un șir de n numere naturale date să se determine câte numere palPow sunt în șir precum și care este cel mai mic și cel mai mare număr palPow din șir&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Fișierul de intrare conține pe prima linie numărul &#039;&#039;&#039;n&#039;&#039;&#039; și pe a doua linie &#039;&#039;&#039;n&#039;&#039;&#039; numere naturale separate prin spațiu&lt;br /&gt;
== Date de ieşire ==&lt;br /&gt;
Dacă datele sunt introduse corect, pe ecran se va afișa: &lt;br /&gt;
&#039;&#039;&#039;&amp;quot;Datele sunt introduse corect.&amp;quot;&#039;&#039;&#039;, apoi fișierul de ieșire va conține pe prima linie trei valori separate prin câte un spațiu, reprezentând în ordine, numărul de numere palPow, cel mai mic număr palPow, cel mai mare număr palPow din șirul dat. În cazul în care datele nu respectă restricțiile, pe ecran se va afișa: &#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;
* 1 &amp;amp;les; n &amp;amp;les; 1000.&lt;br /&gt;
* numerele din șir sunt naturale cel mult egale cu 1.000.000&lt;br /&gt;
* șirul conține cel puțin un număr palPow&lt;br /&gt;
&lt;br /&gt;
== Exemplu ==&lt;br /&gt;
; palpow.in&lt;br /&gt;
: 6 &lt;br /&gt;
: 13 23 231 408 48 36&lt;br /&gt;
; palpow.out&lt;br /&gt;
: Datele sunt introduse corect.&lt;br /&gt;
: 23 231 48&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;
#Funcția verifică dacă datele de intrare sunt valide&lt;br /&gt;
def validare_date_intrare(n, numere):&lt;br /&gt;
    #Numărul de elemente din șir trebuie să fie între 1 și 1000 inclusiv&lt;br /&gt;
    if not (1 &amp;lt;= n &amp;lt;= 1000):&lt;br /&gt;
        return False,&lt;br /&gt;
    for numar in numere:&lt;br /&gt;
    #Toate numerele din șir trebuie să fie naturale și să nu depășească 1.000.000&lt;br /&gt;
        if not (1 &amp;lt;= numar &amp;lt;= 100_000_000):&lt;br /&gt;
            return False,&lt;br /&gt;
    return True, &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#Returnează oglinditul unui număr dat.&lt;br /&gt;
def oglindit(numar):&lt;br /&gt;
    ogl = 0&lt;br /&gt;
    while numar &amp;gt; 0:&lt;br /&gt;
        ogl = ogl * 10 + numar % 10&lt;br /&gt;
        numar //= 10&lt;br /&gt;
    return ogl&lt;br /&gt;
&lt;br /&gt;
#Calculează numărul de divizori ai unui număr dat.&lt;br /&gt;
def nr_divizori(numar):&lt;br /&gt;
    nr_div = 0&lt;br /&gt;
    for d in range(1, int(numar ** 0.5) + 1):&lt;br /&gt;
        if numar % d == 0:&lt;br /&gt;
            nr_div += 2&lt;br /&gt;
    if int(numar ** 0.5) ** 2 == numar:&lt;br /&gt;
        nr_div -= 1&lt;br /&gt;
    return nr_div&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#Verifică dacă un număr dat este palPow.&lt;br /&gt;
def este_palPow(numar):&lt;br /&gt;
    ogl = oglindit(numar)&lt;br /&gt;
    return nr_divizori(numar) &amp;lt; nr_divizori(ogl)&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    with open(&amp;quot;palpow.in&amp;quot;) as f:&lt;br /&gt;
        n = int(f.readline())&lt;br /&gt;
        numere = list(map(int, f.readline().split()))&lt;br /&gt;
&lt;br /&gt;
    with open(&amp;quot;palpow.out&amp;quot;, &amp;quot;w&amp;quot;) as f:&lt;br /&gt;
        # Validarea datelor de intrare&lt;br /&gt;
        if validare_date_intrare(n, numere):&lt;br /&gt;
            print(&amp;quot;\nDatele sunt introduse corect.&amp;quot;)&lt;br /&gt;
            rezultat = [str(numar) for numar in numere if este_palPow(numar)]&lt;br /&gt;
            f.write(&amp;quot; &amp;quot;.join(rezultat))&lt;br /&gt;
        else:&lt;br /&gt;
            print(&amp;quot;\nDatele 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;/div&gt;</summary>
		<author><name>Alexandra Leș</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=3678_-_Pal_Pow&amp;diff=4378</id>
		<title>3678 - Pal Pow</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=3678_-_Pal_Pow&amp;diff=4378"/>
		<updated>2023-04-25T11:06:51Z</updated>

		<summary type="html">&lt;p&gt;Alexandra Leș: /* Rezolvare */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cerinţa ==&lt;br /&gt;
Un număr natural se numește palPow dacă oglinditul său are strict mai mulți divizori pozitivi decât are numărul. De exemplu &#039;&#039;&#039;23&#039;&#039;&#039; este un număr palPow deoarece 23 are doi divizori pozitivi &#039;&#039;&#039;(1 23)&#039;&#039;&#039; iar oglinditul său, 32, are șase divizori pozitivi (&#039;&#039;&#039;1 2 4 8 16 32&#039;&#039;&#039;). Oglinditul unui număr este valoarea obținută considerând cifrele numărului de la dreapta la stânga(de exemplu, oglinditul lui &#039;&#039;&#039;675&#039;&#039;&#039; este &#039;&#039;&#039;576&#039;&#039;&#039; iar oglinditullui &#039;&#039;&#039;20310&#039;&#039;&#039; este &#039;&#039;&#039;1302&#039;&#039;&#039;). Pentru un șir de n numere naturale date să se determine câte numere palPow sunt în șir precum și care este cel mai mic și cel mai mare număr palPow din șir&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Fișierul de intrare conține pe prima linie numărul &#039;&#039;&#039;n&#039;&#039;&#039; și pe a doua linie &#039;&#039;&#039;n&#039;&#039;&#039; numere naturale separate prin spațiu&lt;br /&gt;
== Date de ieşire ==&lt;br /&gt;
Dacă datele sunt introduse corect, pe ecran se va afișa: &lt;br /&gt;
&#039;&#039;&#039;&amp;quot;Datele sunt introduse corect.&amp;quot;&#039;&#039;&#039;, apoi fișierul de ieșire va conține pe prima linie trei valori separate prin câte un spațiu, reprezentând în ordine, numărul de numere palPow, cel mai mic număr palPow, cel mai mare număr palPow din șirul dat. În cazul în care datele nu respectă restricțiile, pe ecran se va afișa: &#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;
* 1 &amp;amp;les; n &amp;amp;les; 1000.&lt;br /&gt;
* numerele din șir sunt naturale cel mult egale cu 1.000.000&lt;br /&gt;
* șirul conține cel puțin un număr palPow&lt;br /&gt;
&lt;br /&gt;
== Exemplu ==&lt;br /&gt;
; palpow.in&lt;br /&gt;
: 6 &lt;br /&gt;
: 13 23 231 408 48 36&lt;br /&gt;
; palpow.out&lt;br /&gt;
: Datele sunt introduse corect.&lt;br /&gt;
: 23 231 48&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;
#Funcția verifică dacă datele de intrare sunt valide&lt;br /&gt;
def validare_date_intrare(n, numere):&lt;br /&gt;
    #Numărul de elemente din șir trebuie să fie între 1 și 1000 inclusiv&lt;br /&gt;
    if not (1 &amp;lt;= n &amp;lt;= 1000):&lt;br /&gt;
        return False,&lt;br /&gt;
    for numar in numere:&lt;br /&gt;
    #Toate numerele din șir trebuie să fie naturale și să nu depășească 1.000.000&lt;br /&gt;
        if not (1 &amp;lt;= numar &amp;lt;= 100_000_000):&lt;br /&gt;
            return False,&lt;br /&gt;
    return True, &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#Returnează oglinditul unui număr dat.&lt;br /&gt;
def oglindit(numar):&lt;br /&gt;
    ogl = 0&lt;br /&gt;
    while numar &amp;gt; 0:&lt;br /&gt;
        ogl = ogl * 10 + numar % 10&lt;br /&gt;
        numar //= 10&lt;br /&gt;
    return ogl&lt;br /&gt;
&lt;br /&gt;
#Calculează numărul de divizori ai unui număr dat.&lt;br /&gt;
def nr_divizori(numar):&lt;br /&gt;
    nr_div = 0&lt;br /&gt;
    for d in range(1, int(numar ** 0.5) + 1):&lt;br /&gt;
        if numar % d == 0:&lt;br /&gt;
            nr_div += 2&lt;br /&gt;
    if int(numar ** 0.5) ** 2 == numar:&lt;br /&gt;
        nr_div -= 1&lt;br /&gt;
    return nr_div&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#Verifică dacă un număr dat este palPow.&lt;br /&gt;
def este_palPow(numar):&lt;br /&gt;
    ogl = oglindit(numar)&lt;br /&gt;
    return nr_divizori(numar) &amp;lt; nr_divizori(ogl)&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    with open(&amp;quot;palpow.in&amp;quot;) as f:&lt;br /&gt;
        n = int(f.readline())&lt;br /&gt;
        numere = list(map(int, f.readline().split()))&lt;br /&gt;
&lt;br /&gt;
    with open(&amp;quot;palpow.out&amp;quot;, &amp;quot;w&amp;quot;) as f:&lt;br /&gt;
        # Validarea datelor de intrare&lt;br /&gt;
        if validare_date_intrare(n, numere):&lt;br /&gt;
            print(&amp;quot;\nDatele sunt introduse corect.&amp;quot;)&lt;br /&gt;
            rezultat = [str(numar) for numar in numere if este_palPow(numar)]&lt;br /&gt;
            f.write(&amp;quot; &amp;quot;.join(rezultat))&lt;br /&gt;
        else:&lt;br /&gt;
            print(&amp;quot;\nDatele 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;/div&gt;</summary>
		<author><name>Alexandra Leș</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=3678_-_Pal_Pow&amp;diff=4377</id>
		<title>3678 - Pal Pow</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=3678_-_Pal_Pow&amp;diff=4377"/>
		<updated>2023-04-25T11:06:16Z</updated>

		<summary type="html">&lt;p&gt;Alexandra Leș: /* Exemplu */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cerinţa ==&lt;br /&gt;
Un număr natural se numește palPow dacă oglinditul său are strict mai mulți divizori pozitivi decât are numărul. De exemplu &#039;&#039;&#039;23&#039;&#039;&#039; este un număr palPow deoarece 23 are doi divizori pozitivi &#039;&#039;&#039;(1 23)&#039;&#039;&#039; iar oglinditul său, 32, are șase divizori pozitivi (&#039;&#039;&#039;1 2 4 8 16 32&#039;&#039;&#039;). Oglinditul unui număr este valoarea obținută considerând cifrele numărului de la dreapta la stânga(de exemplu, oglinditul lui &#039;&#039;&#039;675&#039;&#039;&#039; este &#039;&#039;&#039;576&#039;&#039;&#039; iar oglinditullui &#039;&#039;&#039;20310&#039;&#039;&#039; este &#039;&#039;&#039;1302&#039;&#039;&#039;). Pentru un șir de n numere naturale date să se determine câte numere palPow sunt în șir precum și care este cel mai mic și cel mai mare număr palPow din șir&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Fișierul de intrare conține pe prima linie numărul &#039;&#039;&#039;n&#039;&#039;&#039; și pe a doua linie &#039;&#039;&#039;n&#039;&#039;&#039; numere naturale separate prin spațiu&lt;br /&gt;
== Date de ieşire ==&lt;br /&gt;
Dacă datele sunt introduse corect, pe ecran se va afișa: &lt;br /&gt;
&#039;&#039;&#039;&amp;quot;Datele sunt introduse corect.&amp;quot;&#039;&#039;&#039;, apoi fișierul de ieșire va conține pe prima linie trei valori separate prin câte un spațiu, reprezentând în ordine, numărul de numere palPow, cel mai mic număr palPow, cel mai mare număr palPow din șirul dat. În cazul în care datele nu respectă restricțiile, pe ecran se va afișa: &#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;
* 1 &amp;amp;les; n &amp;amp;les; 1000.&lt;br /&gt;
* numerele din șir sunt naturale cel mult egale cu 1.000.000&lt;br /&gt;
* șirul conține cel puțin un număr palPow&lt;br /&gt;
&lt;br /&gt;
== Exemplu ==&lt;br /&gt;
; palpow.in&lt;br /&gt;
: 6 &lt;br /&gt;
: 13 23 231 408 48 36&lt;br /&gt;
; palpow.out&lt;br /&gt;
: Datele sunt introduse corect.&lt;br /&gt;
: 23 231 48&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;
#Funcția verifică dacă datele de intrare sunt valide&lt;br /&gt;
def validare_date_intrare(n, numere):&lt;br /&gt;
    #Numărul de elemente din șir trebuie să fie între 1 și 1000 inclusiv&lt;br /&gt;
    if not (1 &amp;lt;= n &amp;lt;= 1000):&lt;br /&gt;
        return False,&lt;br /&gt;
    for numar in numere:&lt;br /&gt;
    #Toate numerele din șir trebuie să fie naturale și să nu depășească 1.000.000&lt;br /&gt;
        if not (1 &amp;lt;= numar &amp;lt;= 100_000_000):&lt;br /&gt;
            return False,&lt;br /&gt;
    return True, &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#Returnează oglinditul unui număr dat.&lt;br /&gt;
def oglindit(numar):&lt;br /&gt;
    ogl = 0&lt;br /&gt;
    while numar &amp;gt; 0:&lt;br /&gt;
        ogl = ogl * 10 + numar % 10&lt;br /&gt;
        numar //= 10&lt;br /&gt;
    return ogl&lt;br /&gt;
&lt;br /&gt;
#Calculează numărul de divizori ai unui număr dat.&lt;br /&gt;
def nr_divizori(numar):&lt;br /&gt;
    nr_div = 0&lt;br /&gt;
    for d in range(1, int(numar ** 0.5) + 1):&lt;br /&gt;
        if numar % d == 0:&lt;br /&gt;
            nr_div += 2&lt;br /&gt;
    if int(numar ** 0.5) ** 2 == numar:&lt;br /&gt;
        nr_div -= 1&lt;br /&gt;
    return nr_div&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#Verifică dacă un număr dat este palPow.&lt;br /&gt;
def este_palPow(numar):&lt;br /&gt;
    ogl = oglindit(numar)&lt;br /&gt;
    return nr_divizori(numar) &amp;lt; nr_divizori(ogl)&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    with open(&amp;quot;palpow.in&amp;quot;) as f:&lt;br /&gt;
        n = int(f.readline())&lt;br /&gt;
        numere = list(map(int, f.readline().split()))&lt;br /&gt;
&lt;br /&gt;
    with open(&amp;quot;palpow.out&amp;quot;, &amp;quot;w&amp;quot;) as f:&lt;br /&gt;
        # Validarea datelor de intrare&lt;br /&gt;
        if validare_date_intrare(n, numere):&lt;br /&gt;
            print(&amp;quot;\nDatele de intrare corespund restricțiilor impuse.&amp;quot;)&lt;br /&gt;
            rezultat = [str(numar) for numar in numere if este_palPow(numar)]&lt;br /&gt;
            f.write(&amp;quot; &amp;quot;.join(rezultat))&lt;br /&gt;
        else:&lt;br /&gt;
            print(&amp;quot;\nDatele 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;/div&gt;</summary>
		<author><name>Alexandra Leș</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=3678_-_Pal_Pow&amp;diff=4374</id>
		<title>3678 - Pal Pow</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=3678_-_Pal_Pow&amp;diff=4374"/>
		<updated>2023-04-25T11:05:26Z</updated>

		<summary type="html">&lt;p&gt;Alexandra Leș: /* Exemplu */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cerinţa ==&lt;br /&gt;
Un număr natural se numește palPow dacă oglinditul său are strict mai mulți divizori pozitivi decât are numărul. De exemplu &#039;&#039;&#039;23&#039;&#039;&#039; este un număr palPow deoarece 23 are doi divizori pozitivi &#039;&#039;&#039;(1 23)&#039;&#039;&#039; iar oglinditul său, 32, are șase divizori pozitivi (&#039;&#039;&#039;1 2 4 8 16 32&#039;&#039;&#039;). Oglinditul unui număr este valoarea obținută considerând cifrele numărului de la dreapta la stânga(de exemplu, oglinditul lui &#039;&#039;&#039;675&#039;&#039;&#039; este &#039;&#039;&#039;576&#039;&#039;&#039; iar oglinditullui &#039;&#039;&#039;20310&#039;&#039;&#039; este &#039;&#039;&#039;1302&#039;&#039;&#039;). Pentru un șir de n numere naturale date să se determine câte numere palPow sunt în șir precum și care este cel mai mic și cel mai mare număr palPow din șir&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Fișierul de intrare conține pe prima linie numărul &#039;&#039;&#039;n&#039;&#039;&#039; și pe a doua linie &#039;&#039;&#039;n&#039;&#039;&#039; numere naturale separate prin spațiu&lt;br /&gt;
== Date de ieşire ==&lt;br /&gt;
Dacă datele sunt introduse corect, pe ecran se va afișa: &lt;br /&gt;
&#039;&#039;&#039;&amp;quot;Datele sunt introduse corect.&amp;quot;&#039;&#039;&#039;, apoi fișierul de ieșire va conține pe prima linie trei valori separate prin câte un spațiu, reprezentând în ordine, numărul de numere palPow, cel mai mic număr palPow, cel mai mare număr palPow din șirul dat. În cazul în care datele nu respectă restricțiile, pe ecran se va afișa: &#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;
* 1 &amp;amp;les; n &amp;amp;les; 1000.&lt;br /&gt;
* numerele din șir sunt naturale cel mult egale cu 1.000.000&lt;br /&gt;
* șirul conține cel puțin un număr palPow&lt;br /&gt;
&lt;br /&gt;
== Exemplu ==&lt;br /&gt;
; palpow.in&lt;br /&gt;
: 6 &lt;br /&gt;
: 13 23 231 408 48 36&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele sunt introduse corect.&lt;br /&gt;
; palpow.out&lt;br /&gt;
: 23 231 48&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;
#Funcția verifică dacă datele de intrare sunt valide&lt;br /&gt;
def validare_date_intrare(n, numere):&lt;br /&gt;
    #Numărul de elemente din șir trebuie să fie între 1 și 1000 inclusiv&lt;br /&gt;
    if not (1 &amp;lt;= n &amp;lt;= 1000):&lt;br /&gt;
        return False,&lt;br /&gt;
    for numar in numere:&lt;br /&gt;
    #Toate numerele din șir trebuie să fie naturale și să nu depășească 1.000.000&lt;br /&gt;
        if not (1 &amp;lt;= numar &amp;lt;= 100_000_000):&lt;br /&gt;
            return False,&lt;br /&gt;
    return True, &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#Returnează oglinditul unui număr dat.&lt;br /&gt;
def oglindit(numar):&lt;br /&gt;
    ogl = 0&lt;br /&gt;
    while numar &amp;gt; 0:&lt;br /&gt;
        ogl = ogl * 10 + numar % 10&lt;br /&gt;
        numar //= 10&lt;br /&gt;
    return ogl&lt;br /&gt;
&lt;br /&gt;
#Calculează numărul de divizori ai unui număr dat.&lt;br /&gt;
def nr_divizori(numar):&lt;br /&gt;
    nr_div = 0&lt;br /&gt;
    for d in range(1, int(numar ** 0.5) + 1):&lt;br /&gt;
        if numar % d == 0:&lt;br /&gt;
            nr_div += 2&lt;br /&gt;
    if int(numar ** 0.5) ** 2 == numar:&lt;br /&gt;
        nr_div -= 1&lt;br /&gt;
    return nr_div&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#Verifică dacă un număr dat este palPow.&lt;br /&gt;
def este_palPow(numar):&lt;br /&gt;
    ogl = oglindit(numar)&lt;br /&gt;
    return nr_divizori(numar) &amp;lt; nr_divizori(ogl)&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    with open(&amp;quot;palpow.in&amp;quot;) as f:&lt;br /&gt;
        n = int(f.readline())&lt;br /&gt;
        numere = list(map(int, f.readline().split()))&lt;br /&gt;
&lt;br /&gt;
    with open(&amp;quot;palpow.out&amp;quot;, &amp;quot;w&amp;quot;) as f:&lt;br /&gt;
        # Validarea datelor de intrare&lt;br /&gt;
        if validare_date_intrare(n, numere):&lt;br /&gt;
            print(&amp;quot;\nDatele de intrare corespund restricțiilor impuse.&amp;quot;)&lt;br /&gt;
            rezultat = [str(numar) for numar in numere if este_palPow(numar)]&lt;br /&gt;
            f.write(&amp;quot; &amp;quot;.join(rezultat))&lt;br /&gt;
        else:&lt;br /&gt;
            print(&amp;quot;\nDatele 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;/div&gt;</summary>
		<author><name>Alexandra Leș</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=3064_-_Copii_1&amp;diff=4372</id>
		<title>3064 - Copii 1</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=3064_-_Copii_1&amp;diff=4372"/>
		<updated>2023-04-25T11:04:44Z</updated>

		<summary type="html">&lt;p&gt;Alexandra Leș: /* Exemplul 2 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Enunț ==&lt;br /&gt;
Iliuță și Pandele au învățat la școală operații aritmetice cu numere naturale. Astfel cei doi frați exersează operațiile folosindu-se de o tablă. Iliuță spune un număr natural &#039;&#039;&#039;X&#039;&#039;&#039;, iar Pandele scrie pe tablă rezultatul înmulțirii tuturor numerelor naturale de la &#039;&#039;&#039;1&#039;&#039;&#039; la &#039;&#039;&#039;X&#039;&#039;&#039;. Glumeț, Iliuță șterge cifrele egale cu &#039;&#039;&#039;0&#039;&#039;&#039; de la finalul numărului scris de Pandele.&lt;br /&gt;
Ca să îl ierte, Pandele spune și el un număr natural &#039;&#039;&#039;Y&#039;&#039;&#039; și îi cere lui Iliuță să determine un număr natural &#039;&#039;&#039;Z&#039;&#039;&#039; care este cel mai mare divizor al lui &#039;&#039;&#039;Y&#039;&#039;&#039; având un număr impar de divizori.&lt;br /&gt;
&lt;br /&gt;
== Cerinţa ==&lt;br /&gt;
Cunoscându-se numerele spuse de copii, scrieți un program care rezolvă următoarele cerințe:&lt;br /&gt;
1) afișează ultimele &#039;&#039;&#039;K&#039;&#039;&#039; cifre ale produsului calculat de Pandele, după ștergerea cifrelor egale cu &#039;&#039;&#039;0&#039;&#039;&#039; de la finalul acestuia;&lt;br /&gt;
2) afișează numărul &#039;&#039;&#039;Z&#039;&#039;&#039; cu semnificația de mai sus și numărul de divizori ai acestuia.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Fișierul de intrare &#039;&#039;&#039;copii.in&#039;&#039;&#039; conține pe prima linie numărul &#039;&#039;&#039;C&#039;&#039;&#039;, care reprezintă numărul cerinței și poate avea doar valorile &#039;&#039;&#039;1&#039;&#039;&#039; sau &#039;&#039;&#039;2&#039;&#039;&#039;. Pentru prima cerință fișierul conține pe a doua linie numărul &#039;&#039;&#039;X&#039;&#039;&#039;, iar pe cea de a treia linie numărul &#039;&#039;&#039;K&#039;&#039;&#039;. Pentru a doua cerință fișierul conține pe a doua linie numărul &#039;&#039;&#039;Y&#039;&#039;&#039;.&lt;br /&gt;
== Date de ieșire == &lt;br /&gt;
Dacă datele sunt introduse corect, pe ecran se va afișa: &lt;br /&gt;
&#039;&#039;&#039;&amp;quot;Datele sunt introduse corect.&amp;quot;&#039;&#039;&#039;, apoi Pentru cerința 1), pe prima linie a fișierului &#039;&#039;&#039;copii.out&#039;&#039;&#039; se vor afișa cele &#039;&#039;&#039;K&#039;&#039;&#039; cifre cerute, fără spații, în ordine de la stânga la dreapta.&lt;br /&gt;
Pentru cerința 2), pe prima linie se vor afișa, în această ordine, numărul &#039;&#039;&#039;Z&#039;&#039;&#039; determinat și numărul de divizori ai acestuia. Numerele vor fi separate printr-un spațiu. Î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;
* 1 &amp;amp;les; X &amp;amp;les; 1.000.000&lt;br /&gt;
* 1 &amp;amp;les; Y &amp;amp;les; 1.000.000.000.000&lt;br /&gt;
* 1 &amp;amp;les; K &amp;amp;les; 9&lt;br /&gt;
* Numărul rămas după ștergerea zerourilor de la finalul produsului are cel puțin K cifre&lt;br /&gt;
* Pentru rezolvarea primei cerințe se acordă 40 de puncte&lt;br /&gt;
* Pentru rezolvarea primei cerințe se acordă 40 de puncte&lt;br /&gt;
&lt;br /&gt;
== Exemple ==&lt;br /&gt;
===Exemplul 1===&lt;br /&gt;
; copii.in&lt;br /&gt;
: 1&lt;br /&gt;
: 12&lt;br /&gt;
: 3&lt;br /&gt;
; copii.out&lt;br /&gt;
: Datele sunt introduse corect.&lt;br /&gt;
: 016&lt;br /&gt;
== Explicație ==&lt;br /&gt;
Produsul &#039;&#039;&#039;1*2*3*4*5*6*7*8*9*10*11*12 = 479001600&#039;&#039;&#039;. După ștergerea zerourilor de la finalul produsului, ultimele &#039;&#039;&#039;3&#039;&#039;&#039; cifre sunt &#039;&#039;&#039;016&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Exemplul 2:&lt;br /&gt;
===Exemplul 2===&lt;br /&gt;
; copii.in&lt;br /&gt;
: 2&lt;br /&gt;
: 14641&lt;br /&gt;
; copii.out&lt;br /&gt;
: Datele sunt introduse corect.&lt;br /&gt;
: 14641 5&lt;br /&gt;
&lt;br /&gt;
== Explicație ==&lt;br /&gt;
Cel mai mare divizor al lui &#039;&#039;&#039;14641&#039;&#039;&#039; care are un număr impar de divizori este chiar &#039;&#039;&#039;14641&#039;&#039;&#039;.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
== Rezolvare == &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
def validare_date(c, x=None, y=None, k=None):&lt;br /&gt;
    if c not in [1, 2]:&lt;br /&gt;
        print(&amp;quot;Datele nu corespund restricțiilor impuse.&amp;quot;)&lt;br /&gt;
        return False&lt;br /&gt;
    &lt;br /&gt;
    if c == 1:&lt;br /&gt;
        if not (1 &amp;lt;= x &amp;lt;= 10**6 and 1 &amp;lt;= y &amp;lt;= 10**12 and 1 &amp;lt;= k &amp;lt;= 9):&lt;br /&gt;
            print(&amp;quot;Datele nu corespund restricțiilor impuse.&amp;quot;)&lt;br /&gt;
            return False&lt;br /&gt;
    elif c == 2:&lt;br /&gt;
        if not (1 &amp;lt;= y &amp;lt;= 10**12):&lt;br /&gt;
            print(&amp;quot;Datele nu corespund restricțiilor impuse.&amp;quot;)&lt;br /&gt;
            return False&lt;br /&gt;
    &lt;br /&gt;
    print(&amp;quot;Datele sunt introduse corect.&amp;quot;)&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def produs_ultimele_k_cifre(x, k):&lt;br /&gt;
    product = 1&lt;br /&gt;
    for i in range(1, x+1):&lt;br /&gt;
        product *= i&lt;br /&gt;
        while product % 10 == 0:&lt;br /&gt;
            product //= 10&lt;br /&gt;
        product %= 10**k&lt;br /&gt;
    return product&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def numar_divizori(n):&lt;br /&gt;
    count = 0&lt;br /&gt;
    for i in range(1, int(n**0.5) + 1):&lt;br /&gt;
        if n % i == 0:&lt;br /&gt;
            count += 1 if i % 2 == 1 else 0&lt;br /&gt;
            if i != n // i and (n // i) % 2 == 1:&lt;br /&gt;
                count += 1&lt;br /&gt;
    return count&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    with open(&#039;copii.in&#039;, &#039;r&#039;) as fin:&lt;br /&gt;
        c = int(fin.readline().strip())&lt;br /&gt;
        if c == 1:&lt;br /&gt;
            x = int(fin.readline().strip())&lt;br /&gt;
            k = int(fin.readline().strip())&lt;br /&gt;
            if not validare_date(c, x, k=k):&lt;br /&gt;
                exit()&lt;br /&gt;
            print(f&amp;quot;Produsul ultimelor {k} cifre ale lui {x}! este {produs_ultimele_k_cifre(x, k)}&amp;quot;)&lt;br /&gt;
        elif c == 2:&lt;br /&gt;
            y = int(fin.readline().strip())&lt;br /&gt;
            if not validare_date(c, y=y):&lt;br /&gt;
                exit()&lt;br /&gt;
            divizori_count = produs_ultimele_k_cifre(y)&lt;br /&gt;
            max_divizor = 1&lt;br /&gt;
            for i in range(3, int(y**0.5) + 1, 2):&lt;br /&gt;
                while y % i == 0:&lt;br /&gt;
                    max_divizor *= i&lt;br /&gt;
                    y //= i&lt;br /&gt;
            if y &amp;gt; 2:&lt;br /&gt;
                max_divizor *= y&lt;br /&gt;
            print(f&amp;quot;Cel mai mare divizor al lui {y} cu un numar impar de divizori este {max_divizor} cu {divizori_count} divizori impari&amp;quot;)&lt;br /&gt;
    with open(&#039;copii.out&#039;, &#039;w&#039;) as fout:&lt;br /&gt;
        if c == 1:&lt;br /&gt;
            fout.write(str(produs_ultimele_k_cifre(x, k)))&lt;br /&gt;
        elif c == 2:&lt;br /&gt;
            fout.write(f&amp;quot;{max_divizor} {divizori_count}&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Alexandra Leș</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=2881_-_Cartonase_1&amp;diff=4370</id>
		<title>2881 - Cartonase 1</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=2881_-_Cartonase_1&amp;diff=4370"/>
		<updated>2023-04-25T11:04:01Z</updated>

		<summary type="html">&lt;p&gt;Alexandra Leș: /* Exemplu */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cerinţa ==&lt;br /&gt;
Într-o zi, câțiva copii plictisiți de “Popa Prostul”, au inventat jocul “Popa Prostul 2”. Acest joc se joacă cu mai multe cartonașe identice. La început, fiecare jucător primește un număr de cartonașe. Primul jucător pune pe masă un număr de cartonașe egal cu cel mai mare divizor al numărului de cartonașe pe care îl avea în mână. Următorul pune un număr maxim de cartonașe, divizor al numărului de cartonașe pe care le are în mână, dar și divizor al numărului de cartonașe pus de jucătorul dinainte. Jocul continuă până când unul dintre copii pune jos un singur cartonaș. Jucătorul care va fi nevoit să pună un singur cartonaș va fi pierzătorul.&lt;br /&gt;
&lt;br /&gt;
Dându-se numărul n de copii și numărul de cartonașe pe care îl primește fiecare, să se determine numărul de ordine al copilului care va pierde jocul.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Pe prima linie a fișierului de intrare &#039;&#039;&#039;cartonase1.in&#039;&#039;&#039; se va găsi numărul &#039;&#039;&#039;n&#039;&#039;&#039; de copii. Pe a doua linie vor fi &#039;&#039;&#039;n&#039;&#039;&#039; numere: &#039;&#039;&#039;x1,x2…xn&#039;&#039;&#039; reprezentând numărul de cartonașe pe care îl primește fiecare jucător.&lt;br /&gt;
== Date de ieşire ==&lt;br /&gt;
Dacă datele sunt introduse corect, în fișier se va afișa: &lt;br /&gt;
&#039;&#039;&#039;&amp;quot;Datele sunt introduse corect.&amp;quot;&#039;&#039;&#039;, apoi pe prima linie a fișierului &#039;&#039;&#039;cartonase1.out&#039;&#039;&#039; se va scrie numărul de ordine al pierzătorului sau valoarea &#039;&#039;&#039;-1&#039;&#039;&#039; dacă nu există pierzător.Î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;
* 2 &amp;amp;les; n &amp;amp;les; 100.000&lt;br /&gt;
* 1 &amp;amp;les; xi &amp;amp;les; 100.000.000&lt;br /&gt;
* Primul jucător va avea numărul de ordine 1.&lt;br /&gt;
== Exemplu ==&lt;br /&gt;
; cartonase1.in&lt;br /&gt;
: 8 &lt;br /&gt;
: 30 15 6 18 303 45 44 25&lt;br /&gt;
; cartonase1.out&lt;br /&gt;
: Datele sunt introduse corect.&lt;br /&gt;
: 7&lt;br /&gt;
&lt;br /&gt;
== Explicație == &lt;br /&gt;
Primul jucător va pune &#039;&#039;&#039;30 de cartonaşe&#039;&#039;&#039;.&lt;br /&gt;
Al doilea jucător va pune &#039;&#039;&#039;15 cartonaşe&#039;&#039;&#039;.&lt;br /&gt;
Al treilea jucător va pune &#039;&#039;&#039;3&#039;&#039;&#039; cartonaşe.&lt;br /&gt;
Jucătorii &#039;&#039;&#039;4, 5 şi 6&#039;&#039;&#039; vor pune &#039;&#039;&#039;3&#039;&#039;&#039; cartonaşe fiecare.&lt;br /&gt;
Jucătorul cu numărul &#039;&#039;&#039;7&#039;&#039;&#039; va fi obligat să pună &#039;&#039;&#039;1&#039;&#039;&#039; cartonaş şi va pierde jocul.&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
def cmmdc(a, b):&lt;br /&gt;
    while b:&lt;br /&gt;
        r = a % b&lt;br /&gt;
        a = b&lt;br /&gt;
        b = r&lt;br /&gt;
    return a&lt;br /&gt;
&lt;br /&gt;
def validare_date(n, xi):&lt;br /&gt;
    if not (2 &amp;lt;= n &amp;lt;= 100_000):&lt;br /&gt;
        return False&lt;br /&gt;
    for num in xi:&lt;br /&gt;
        if not (1 &amp;lt;= num &amp;lt;= 100_000_000):&lt;br /&gt;
            return False&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    with open(&#039;cartonase1.in&#039;, &#039;r&#039;) as fin, open(&#039;cartonase1.out&#039;, &#039;w&#039;, encoding=&#039;utf-8&#039;) as fout:&lt;br /&gt;
        n = int(fin.readline())&lt;br /&gt;
        xi = list(map(int, fin.readline().split()))&lt;br /&gt;
        if not validare_date(n, xi):&lt;br /&gt;
            fout.write(&amp;quot;Datele nu corespund restricțiilor impuse.&amp;quot;)&lt;br /&gt;
        else:&lt;br /&gt;
            fout.write(&amp;quot;Datele sunt introduse corect\n&amp;quot;)&lt;br /&gt;
            x = xi[0]&lt;br /&gt;
            ok = True&lt;br /&gt;
            for i in range(2, n + 1):&lt;br /&gt;
                y = xi[i - 1]&lt;br /&gt;
                x = cmmdc(x, y)&lt;br /&gt;
                if x == 1:&lt;br /&gt;
                    fout.write(str(i))&lt;br /&gt;
                    ok = False&lt;br /&gt;
                    break&lt;br /&gt;
            if ok:&lt;br /&gt;
                fout.write(&amp;quot;-1&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;
Funcția cmmdc calculează cel mai mare divizor comun între două numere folosind algoritmul lui Euclid(algoritmul împarte deîmpărțitul la rest până când împărțitorul este 0, apoi returnează deîmpărțitul). &amp;lt;br&amp;gt;Funcția validate_date primește numărul de elemente n și o listă de numere xi și verifică dacă acestea respectă condițiile din enunț. Mai precis, n trebuie să fie între 2 și 100.000, iar fiecare element din xi trebuie să fie între 1 și 100.000.000. &amp;lt;br&amp;gt;În funcția principală, se deschide fișierul de intrare cartonase1.in în modul citire și fișierul de ieșire cartonase1.out în modul scriere, cu codificarea utf-8. &amp;lt;br&amp;gt; Se citește n și lista xi din fișierul de intrare. &amp;lt;br&amp;gt; Se validează datele citite din fișierul de intrare folosind funcția validate_date. Dacă acestea nu respectă condițiile din enunț, se afișează un mesaj de eroare în fișierul de ieșire și programul se termină. Altfel, se afișează un mesaj de confirmare în fișierul de ieșire. &amp;lt;br&amp;gt; Se inițializează variabila x cu primul element din xi. &amp;lt;br&amp;gt; Se parcurge lista xi de la al doilea element până la ultimul folosind o buclă for. Pentru fiecare element y, se calculează CMMDC-ul dintre x și y folosind funcția cmmdc și se actualizează valoarea lui x. Dacă x devine egal cu 1, se afișează poziția i în fișierul de ieșire și se setează variabila ok pe False. Se folosește variabila ok pentru a verifica dacă s-a găsit sau nu o pereche de numere cu CMMDC-ul egal cu 1. Dacă ok este True la finalul buclei, se afișează -1 în fișierul de ieșire.&lt;/div&gt;</summary>
		<author><name>Alexandra Leș</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=2446_-_Numere_24&amp;diff=4369</id>
		<title>2446 - Numere 24</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=2446_-_Numere_24&amp;diff=4369"/>
		<updated>2023-04-25T11:03:27Z</updated>

		<summary type="html">&lt;p&gt;Alexandra Leș: /* Exemplul 3 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Enunț ==&lt;br /&gt;
Se consideră răsturnatul unui număr natural valoarea obținută prin parcurgerea cifrelor acestuia de la dreapta la stânga. De exemplu, răsturnatul numărului &#039;&#039;&#039;245&#039;&#039;&#039; este &#039;&#039;&#039;542&#039;&#039;&#039;. Un număr este palindrom dacă este egal cu răsturnatul său. De exemplu &#039;&#039;&#039;121&#039;&#039;&#039; este palindrom, iar numărul &#039;&#039;&#039;21&#039;&#039;&#039; nu este palindrom.&lt;br /&gt;
Se consideră inițial șirul numerelor naturale &#039;&#039;&#039;0, 1, 2, 3, 4,&#039;&#039;&#039; …&lt;br /&gt;
Din acest șir se elimină numerele divizibile cu 10 și, după fiecare număr care NU este palindrom, se inserează răsturnatul său. Noul șir astfel obținut va fi &#039;&#039;&#039;1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 21, 13, 31&#039;&#039;&#039;, …&lt;br /&gt;
== Cerinţa ==&lt;br /&gt;
Scrieți un program care să citească:&lt;br /&gt;
1. un număr natural &#039;&#039;&#039;n&#039;&#039;&#039; și să afișeze al &#039;&#039;&#039;n&#039;&#039;&#039;-lea număr eliminat din șirul inițial;&lt;br /&gt;
2. un număr natural &#039;&#039;&#039;x&#039;&#039;&#039; și să afișeze următoarele trei numere: &#039;&#039;&#039;n1&#039;&#039;&#039; – numărul de apariții în noul șir ale numărului obținut din &#039;&#039;&#039;x&#039;&#039;&#039; prin eliminarea ultimei sale cifre; &#039;&#039;&#039;n2&#039;&#039;&#039; – numărul de apariții în noul șir ale numărului obținut din &#039;&#039;&#039;x&#039;&#039;&#039; prin eliminarea ultimelor sale două cifre; &#039;&#039;&#039;n3&#039;&#039;&#039; – numărul de apariții în noul șir ale numărului obținut din &#039;&#039;&#039;x&#039;&#039;&#039; prin eliminarea ultimelor sale trei cifre.&lt;br /&gt;
3. un număr natural &#039;&#039;&#039;k&#039;&#039;&#039; și să afișeze numărul valorilor de &#039;&#039;&#039;k&#039;&#039;&#039; cifre din noul șir.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Fișierul de intrare &#039;&#039;&#039;numere24.in&#039;&#039;&#039; conține pe prima linie un număr natural &#039;&#039;&#039;C&#039;&#039;&#039;, care poate fi &#039;&#039;&#039;1&#039;&#039;&#039;, &#039;&#039;&#039;2&#039;&#039;&#039; sau &#039;&#039;&#039;3&#039;&#039;&#039;.&lt;br /&gt;
Pe linia a doua se găsește numărul natural &#039;&#039;&#039;n&#039;&#039;&#039;, dacă &#039;&#039;&#039;C=1&#039;&#039;&#039;, sau numărul natural &#039;&#039;&#039;x&#039;&#039;&#039;, dacă &#039;&#039;&#039;C=2&#039;&#039;&#039; sau numărul natural &#039;&#039;&#039;k&#039;&#039;&#039;, dacă &#039;&#039;&#039;C=3&#039;&#039;&#039;, numerele având semnificația din enunț&lt;br /&gt;
== Date de ieșire == &lt;br /&gt;
Dacă datele sunt introduse corect, pe ecran se va afișa: &lt;br /&gt;
&#039;&#039;&#039;&amp;quot;Datele sunt introduse corect.&amp;quot;&#039;&#039;&#039;, apoi pe un rând nou dacă valoarea lui &#039;&#039;&#039;C&#039;&#039;&#039; este &#039;&#039;&#039;1&#039;&#039;&#039;, se va rezolva numai cerința &#039;&#039;&#039;1&#039;&#039;&#039;. În acest caz, în fişierul de ieşire &#039;&#039;&#039;numere24.out&#039;&#039;&#039; se va scrie al &#039;&#039;&#039;n&#039;&#039;&#039;-lea număr eliminat.&lt;br /&gt;
Dacă valoarea lui &#039;&#039;&#039;C&#039;&#039;&#039; este &#039;&#039;&#039;2&#039;&#039;&#039;, se va rezolva numai cerința &#039;&#039;&#039;2&#039;&#039;&#039;. În acest caz, în fişierul de ieşire numere24.out se vor scrie trei numere, &#039;&#039;&#039;n1, n2, n3&#039;&#039;&#039;, cu semnificația din enunț, în această ordine, separate prin câte spațiu.&lt;br /&gt;
Dacă valoarea lui &#039;&#039;&#039;C&#039;&#039;&#039; este &#039;&#039;&#039;3&#039;&#039;&#039;, se va rezolva numai cerința &#039;&#039;&#039;3&#039;&#039;&#039;. În acest caz, fişierul de ieşire numere24.out va conține numărul valorilor de &#039;&#039;&#039;k&#039;&#039;&#039; cifre din noul șir . Î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;
* 1 &amp;amp;les; n &amp;amp;les; 2.000.000.000&lt;br /&gt;
* 1000 &amp;amp;les; x &amp;amp;les; 2.000.000.000&lt;br /&gt;
* 1 &amp;amp;les; k &amp;amp;les; 50 (1 &amp;amp;les; k &amp;amp;les; 18, pentru teste în valoare de 20 de puncte)&lt;br /&gt;
* Pentru rezolvarea corectă a primei cerințe se acordă 10 puncte, pentru rezolvarea corectă a celei de a doua cerințe se acordă 25 de puncte, iar pentru rezolvarea corectă a celei de a treia cerințe se acordă 55 de puncte.&lt;br /&gt;
* În concurs s-au acordat 10 puncte din oficiu. Aici se acordă 10 puncte pentru exemplele din enunț.&lt;br /&gt;
== Exemple ==&lt;br /&gt;
===Exemplul 1===&lt;br /&gt;
; numere24.in&lt;br /&gt;
: 1&lt;br /&gt;
: 2&lt;br /&gt;
; numere24.out&lt;br /&gt;
: Datele sunt introduse corect.&lt;br /&gt;
: 10&lt;br /&gt;
== Explicație ==&lt;br /&gt;
&#039;&#039;&#039;n=2&#039;&#039;&#039; și al doilea număr eliminat este &#039;&#039;&#039;10&#039;&#039;&#039;. (&#039;&#039;&#039;C&#039;&#039;&#039; fiind &#039;&#039;&#039;1&#039;&#039;&#039; se rezolvă numai cerința 1)&lt;br /&gt;
===Exemplul 2===&lt;br /&gt;
; numere24.in&lt;br /&gt;
: 2&lt;br /&gt;
: 1205&lt;br /&gt;
; numere24.out&lt;br /&gt;
: Datele sunt introduse corect.&lt;br /&gt;
: 0 2 1&lt;br /&gt;
&lt;br /&gt;
== Explicație ==&lt;br /&gt;
&#039;&#039;&#039;x=1205&#039;&#039;&#039;, numărul &#039;&#039;&#039;120&#039;&#039;&#039; nu apare în șir, deci &#039;&#039;&#039;n1=0&#039;&#039;&#039;, &#039;&#039;&#039;12&#039;&#039;&#039; apare de două ori, deci &#039;&#039;&#039;n2=2&#039;&#039;&#039;, iar &#039;&#039;&#039;1&#039;&#039;&#039; apare o singură dată, deci &#039;&#039;&#039;n3=1&#039;&#039;&#039; (&#039;&#039;&#039;C&#039;&#039;&#039; fiind &#039;&#039;&#039;2&#039;&#039;&#039; se rezolvă numai cerința 2)&lt;br /&gt;
&lt;br /&gt;
===Exemplul 3===&lt;br /&gt;
; numere24.in&lt;br /&gt;
: 3&lt;br /&gt;
: 2&lt;br /&gt;
; numere24.out&lt;br /&gt;
: Datele sunt introduse corect.&lt;br /&gt;
: 153&lt;br /&gt;
&lt;br /&gt;
== Explicație ==&lt;br /&gt;
&#039;&#039;&#039;k=2&#039;&#039;&#039; și în noul șir sunt &#039;&#039;&#039;153&#039;&#039;&#039; de numere de câte &#039;&#039;&#039;2&#039;&#039;&#039; cifre. (&#039;&#039;&#039;C&#039;&#039;&#039; fiind &#039;&#039;&#039;3&#039;&#039;&#039; se rezolvă numai cerința &#039;&#039;&#039;3&#039;&#039;&#039;)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
== Rezolvare == &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
def validare_numar(numar, limit):&lt;br /&gt;
    if not numar.isdigit():&lt;br /&gt;
        return False&lt;br /&gt;
    if int(numar) &amp;lt; 0 or int(numar) &amp;gt; limit:&lt;br /&gt;
        return False&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def validare_numere(n, x, k, c):&lt;br /&gt;
    if c == 1:&lt;br /&gt;
        return validare_numar(n, 2000000000)&lt;br /&gt;
    elif c == 2:&lt;br /&gt;
        return all(validare_numar(numar, 2000000000) for numar in [x])&lt;br /&gt;
    elif c == 3:&lt;br /&gt;
        return validare_numar(k, 50)&lt;br /&gt;
    return False&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def constr_sir():&lt;br /&gt;
    sir = [str(i) for i in range(10)]&lt;br /&gt;
    for i in range(1, 10):&lt;br /&gt;
        sir.append(str(i * 10 + i))&lt;br /&gt;
    for i in range(1, 100):&lt;br /&gt;
        for j in range(10):&lt;br /&gt;
            s = str(i) + str(j) + str(i)[::-1]&lt;br /&gt;
            sir.append(s)&lt;br /&gt;
    return sir&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def cerinta_1(n):&lt;br /&gt;
    sir = constr_sir()&lt;br /&gt;
    numere_eliminate = []&lt;br /&gt;
    i = 0&lt;br /&gt;
    while len(numere_eliminate) &amp;lt; n:&lt;br /&gt;
        if sir[i] not in numere_eliminate and sir[i] != sir[i][::-1]:&lt;br /&gt;
            numere_eliminate.append(sir[i])&lt;br /&gt;
            sir[i] = sir[i][:-1]&lt;br /&gt;
        else:&lt;br /&gt;
            i += 1&lt;br /&gt;
    return numere_eliminate[-1]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def cerinta_2(x):&lt;br /&gt;
    sir = constr_sir()&lt;br /&gt;
    counts = [0, 0, 0]&lt;br /&gt;
    for i in range(len(sir)):&lt;br /&gt;
        if sir[i][-1] == x:&lt;br /&gt;
            counts[0] += 1&lt;br /&gt;
            if len(sir[i]) &amp;gt;= 2 and sir[i][-2] == x // 10:&lt;br /&gt;
                counts[1] += 1&lt;br /&gt;
                if len(sir[i]) &amp;gt;= 3 and sir[i][-3] == x // 100:&lt;br /&gt;
                    counts[2] += 1&lt;br /&gt;
    return counts&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def cerinta_3(k):&lt;br /&gt;
    sir = constr_sir()&lt;br /&gt;
    count = 0&lt;br /&gt;
    for num in sir:&lt;br /&gt;
        if len(num) == k:&lt;br /&gt;
            count += 1&lt;br /&gt;
        elif len(num) &amp;gt; k:&lt;br /&gt;
            break&lt;br /&gt;
    return count&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    with open(&#039;numere24.in&#039;, &#039;r&#039;) as f:&lt;br /&gt;
        c = int(f.readline().strip())&lt;br /&gt;
        n, x, k = map(int, f.readline().split())&lt;br /&gt;
&lt;br /&gt;
    if validare_numere(n, x, k, c):&lt;br /&gt;
        print(&amp;quot;Datele sunt introduse corect.&amp;quot;)&lt;br /&gt;
        if c == 1:&lt;br /&gt;
            result = cerinta_1(n)&lt;br /&gt;
            with open(&#039;numere24.out&#039;, &#039;w&#039;) as f:&lt;br /&gt;
                f.write(str(result) + &#039;\n&#039;)&lt;br /&gt;
        elif c == 2:&lt;br /&gt;
            counts = cerinta_2(x)&lt;br /&gt;
            with open(&#039;numere24.out&#039;, &#039;w&#039;) as f:&lt;br /&gt;
                f.write(&#039; &#039;.join(map(str, counts)) + &#039;\n&#039;)&lt;br /&gt;
        elif c == 3:&lt;br /&gt;
            count = cerinta_3(k)&lt;br /&gt;
            with open(&#039;numere24.out&#039;, &#039;w&#039;) as f:&lt;br /&gt;
                f.write(str(count) + &#039;\n&#039;)&lt;br /&gt;
    else:&lt;br /&gt;
        print(&amp;quot;Datele nu corespund restricțiilor impuse.&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Alexandra Leș</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=2446_-_Numere_24&amp;diff=4368</id>
		<title>2446 - Numere 24</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=2446_-_Numere_24&amp;diff=4368"/>
		<updated>2023-04-25T11:03:17Z</updated>

		<summary type="html">&lt;p&gt;Alexandra Leș: /* Exemplul 2 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Enunț ==&lt;br /&gt;
Se consideră răsturnatul unui număr natural valoarea obținută prin parcurgerea cifrelor acestuia de la dreapta la stânga. De exemplu, răsturnatul numărului &#039;&#039;&#039;245&#039;&#039;&#039; este &#039;&#039;&#039;542&#039;&#039;&#039;. Un număr este palindrom dacă este egal cu răsturnatul său. De exemplu &#039;&#039;&#039;121&#039;&#039;&#039; este palindrom, iar numărul &#039;&#039;&#039;21&#039;&#039;&#039; nu este palindrom.&lt;br /&gt;
Se consideră inițial șirul numerelor naturale &#039;&#039;&#039;0, 1, 2, 3, 4,&#039;&#039;&#039; …&lt;br /&gt;
Din acest șir se elimină numerele divizibile cu 10 și, după fiecare număr care NU este palindrom, se inserează răsturnatul său. Noul șir astfel obținut va fi &#039;&#039;&#039;1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 21, 13, 31&#039;&#039;&#039;, …&lt;br /&gt;
== Cerinţa ==&lt;br /&gt;
Scrieți un program care să citească:&lt;br /&gt;
1. un număr natural &#039;&#039;&#039;n&#039;&#039;&#039; și să afișeze al &#039;&#039;&#039;n&#039;&#039;&#039;-lea număr eliminat din șirul inițial;&lt;br /&gt;
2. un număr natural &#039;&#039;&#039;x&#039;&#039;&#039; și să afișeze următoarele trei numere: &#039;&#039;&#039;n1&#039;&#039;&#039; – numărul de apariții în noul șir ale numărului obținut din &#039;&#039;&#039;x&#039;&#039;&#039; prin eliminarea ultimei sale cifre; &#039;&#039;&#039;n2&#039;&#039;&#039; – numărul de apariții în noul șir ale numărului obținut din &#039;&#039;&#039;x&#039;&#039;&#039; prin eliminarea ultimelor sale două cifre; &#039;&#039;&#039;n3&#039;&#039;&#039; – numărul de apariții în noul șir ale numărului obținut din &#039;&#039;&#039;x&#039;&#039;&#039; prin eliminarea ultimelor sale trei cifre.&lt;br /&gt;
3. un număr natural &#039;&#039;&#039;k&#039;&#039;&#039; și să afișeze numărul valorilor de &#039;&#039;&#039;k&#039;&#039;&#039; cifre din noul șir.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Fișierul de intrare &#039;&#039;&#039;numere24.in&#039;&#039;&#039; conține pe prima linie un număr natural &#039;&#039;&#039;C&#039;&#039;&#039;, care poate fi &#039;&#039;&#039;1&#039;&#039;&#039;, &#039;&#039;&#039;2&#039;&#039;&#039; sau &#039;&#039;&#039;3&#039;&#039;&#039;.&lt;br /&gt;
Pe linia a doua se găsește numărul natural &#039;&#039;&#039;n&#039;&#039;&#039;, dacă &#039;&#039;&#039;C=1&#039;&#039;&#039;, sau numărul natural &#039;&#039;&#039;x&#039;&#039;&#039;, dacă &#039;&#039;&#039;C=2&#039;&#039;&#039; sau numărul natural &#039;&#039;&#039;k&#039;&#039;&#039;, dacă &#039;&#039;&#039;C=3&#039;&#039;&#039;, numerele având semnificația din enunț&lt;br /&gt;
== Date de ieșire == &lt;br /&gt;
Dacă datele sunt introduse corect, pe ecran se va afișa: &lt;br /&gt;
&#039;&#039;&#039;&amp;quot;Datele sunt introduse corect.&amp;quot;&#039;&#039;&#039;, apoi pe un rând nou dacă valoarea lui &#039;&#039;&#039;C&#039;&#039;&#039; este &#039;&#039;&#039;1&#039;&#039;&#039;, se va rezolva numai cerința &#039;&#039;&#039;1&#039;&#039;&#039;. În acest caz, în fişierul de ieşire &#039;&#039;&#039;numere24.out&#039;&#039;&#039; se va scrie al &#039;&#039;&#039;n&#039;&#039;&#039;-lea număr eliminat.&lt;br /&gt;
Dacă valoarea lui &#039;&#039;&#039;C&#039;&#039;&#039; este &#039;&#039;&#039;2&#039;&#039;&#039;, se va rezolva numai cerința &#039;&#039;&#039;2&#039;&#039;&#039;. În acest caz, în fişierul de ieşire numere24.out se vor scrie trei numere, &#039;&#039;&#039;n1, n2, n3&#039;&#039;&#039;, cu semnificația din enunț, în această ordine, separate prin câte spațiu.&lt;br /&gt;
Dacă valoarea lui &#039;&#039;&#039;C&#039;&#039;&#039; este &#039;&#039;&#039;3&#039;&#039;&#039;, se va rezolva numai cerința &#039;&#039;&#039;3&#039;&#039;&#039;. În acest caz, fişierul de ieşire numere24.out va conține numărul valorilor de &#039;&#039;&#039;k&#039;&#039;&#039; cifre din noul șir . Î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;
* 1 &amp;amp;les; n &amp;amp;les; 2.000.000.000&lt;br /&gt;
* 1000 &amp;amp;les; x &amp;amp;les; 2.000.000.000&lt;br /&gt;
* 1 &amp;amp;les; k &amp;amp;les; 50 (1 &amp;amp;les; k &amp;amp;les; 18, pentru teste în valoare de 20 de puncte)&lt;br /&gt;
* Pentru rezolvarea corectă a primei cerințe se acordă 10 puncte, pentru rezolvarea corectă a celei de a doua cerințe se acordă 25 de puncte, iar pentru rezolvarea corectă a celei de a treia cerințe se acordă 55 de puncte.&lt;br /&gt;
* În concurs s-au acordat 10 puncte din oficiu. Aici se acordă 10 puncte pentru exemplele din enunț.&lt;br /&gt;
== Exemple ==&lt;br /&gt;
===Exemplul 1===&lt;br /&gt;
; numere24.in&lt;br /&gt;
: 1&lt;br /&gt;
: 2&lt;br /&gt;
; numere24.out&lt;br /&gt;
: Datele sunt introduse corect.&lt;br /&gt;
: 10&lt;br /&gt;
== Explicație ==&lt;br /&gt;
&#039;&#039;&#039;n=2&#039;&#039;&#039; și al doilea număr eliminat este &#039;&#039;&#039;10&#039;&#039;&#039;. (&#039;&#039;&#039;C&#039;&#039;&#039; fiind &#039;&#039;&#039;1&#039;&#039;&#039; se rezolvă numai cerința 1)&lt;br /&gt;
===Exemplul 2===&lt;br /&gt;
; numere24.in&lt;br /&gt;
: 2&lt;br /&gt;
: 1205&lt;br /&gt;
; numere24.out&lt;br /&gt;
: Datele sunt introduse corect.&lt;br /&gt;
: 0 2 1&lt;br /&gt;
&lt;br /&gt;
== Explicație ==&lt;br /&gt;
&#039;&#039;&#039;x=1205&#039;&#039;&#039;, numărul &#039;&#039;&#039;120&#039;&#039;&#039; nu apare în șir, deci &#039;&#039;&#039;n1=0&#039;&#039;&#039;, &#039;&#039;&#039;12&#039;&#039;&#039; apare de două ori, deci &#039;&#039;&#039;n2=2&#039;&#039;&#039;, iar &#039;&#039;&#039;1&#039;&#039;&#039; apare o singură dată, deci &#039;&#039;&#039;n3=1&#039;&#039;&#039; (&#039;&#039;&#039;C&#039;&#039;&#039; fiind &#039;&#039;&#039;2&#039;&#039;&#039; se rezolvă numai cerința 2)&lt;br /&gt;
&lt;br /&gt;
===Exemplul 3===&lt;br /&gt;
; numere24.in&lt;br /&gt;
: 3&lt;br /&gt;
: 2&lt;br /&gt;
; numere24.out&lt;br /&gt;
: 153&lt;br /&gt;
&lt;br /&gt;
== Explicație ==&lt;br /&gt;
&#039;&#039;&#039;k=2&#039;&#039;&#039; și în noul șir sunt &#039;&#039;&#039;153&#039;&#039;&#039; de numere de câte &#039;&#039;&#039;2&#039;&#039;&#039; cifre. (&#039;&#039;&#039;C&#039;&#039;&#039; fiind &#039;&#039;&#039;3&#039;&#039;&#039; se rezolvă numai cerința &#039;&#039;&#039;3&#039;&#039;&#039;)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
== Rezolvare == &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
def validare_numar(numar, limit):&lt;br /&gt;
    if not numar.isdigit():&lt;br /&gt;
        return False&lt;br /&gt;
    if int(numar) &amp;lt; 0 or int(numar) &amp;gt; limit:&lt;br /&gt;
        return False&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def validare_numere(n, x, k, c):&lt;br /&gt;
    if c == 1:&lt;br /&gt;
        return validare_numar(n, 2000000000)&lt;br /&gt;
    elif c == 2:&lt;br /&gt;
        return all(validare_numar(numar, 2000000000) for numar in [x])&lt;br /&gt;
    elif c == 3:&lt;br /&gt;
        return validare_numar(k, 50)&lt;br /&gt;
    return False&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def constr_sir():&lt;br /&gt;
    sir = [str(i) for i in range(10)]&lt;br /&gt;
    for i in range(1, 10):&lt;br /&gt;
        sir.append(str(i * 10 + i))&lt;br /&gt;
    for i in range(1, 100):&lt;br /&gt;
        for j in range(10):&lt;br /&gt;
            s = str(i) + str(j) + str(i)[::-1]&lt;br /&gt;
            sir.append(s)&lt;br /&gt;
    return sir&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def cerinta_1(n):&lt;br /&gt;
    sir = constr_sir()&lt;br /&gt;
    numere_eliminate = []&lt;br /&gt;
    i = 0&lt;br /&gt;
    while len(numere_eliminate) &amp;lt; n:&lt;br /&gt;
        if sir[i] not in numere_eliminate and sir[i] != sir[i][::-1]:&lt;br /&gt;
            numere_eliminate.append(sir[i])&lt;br /&gt;
            sir[i] = sir[i][:-1]&lt;br /&gt;
        else:&lt;br /&gt;
            i += 1&lt;br /&gt;
    return numere_eliminate[-1]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def cerinta_2(x):&lt;br /&gt;
    sir = constr_sir()&lt;br /&gt;
    counts = [0, 0, 0]&lt;br /&gt;
    for i in range(len(sir)):&lt;br /&gt;
        if sir[i][-1] == x:&lt;br /&gt;
            counts[0] += 1&lt;br /&gt;
            if len(sir[i]) &amp;gt;= 2 and sir[i][-2] == x // 10:&lt;br /&gt;
                counts[1] += 1&lt;br /&gt;
                if len(sir[i]) &amp;gt;= 3 and sir[i][-3] == x // 100:&lt;br /&gt;
                    counts[2] += 1&lt;br /&gt;
    return counts&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def cerinta_3(k):&lt;br /&gt;
    sir = constr_sir()&lt;br /&gt;
    count = 0&lt;br /&gt;
    for num in sir:&lt;br /&gt;
        if len(num) == k:&lt;br /&gt;
            count += 1&lt;br /&gt;
        elif len(num) &amp;gt; k:&lt;br /&gt;
            break&lt;br /&gt;
    return count&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    with open(&#039;numere24.in&#039;, &#039;r&#039;) as f:&lt;br /&gt;
        c = int(f.readline().strip())&lt;br /&gt;
        n, x, k = map(int, f.readline().split())&lt;br /&gt;
&lt;br /&gt;
    if validare_numere(n, x, k, c):&lt;br /&gt;
        print(&amp;quot;Datele sunt introduse corect.&amp;quot;)&lt;br /&gt;
        if c == 1:&lt;br /&gt;
            result = cerinta_1(n)&lt;br /&gt;
            with open(&#039;numere24.out&#039;, &#039;w&#039;) as f:&lt;br /&gt;
                f.write(str(result) + &#039;\n&#039;)&lt;br /&gt;
        elif c == 2:&lt;br /&gt;
            counts = cerinta_2(x)&lt;br /&gt;
            with open(&#039;numere24.out&#039;, &#039;w&#039;) as f:&lt;br /&gt;
                f.write(&#039; &#039;.join(map(str, counts)) + &#039;\n&#039;)&lt;br /&gt;
        elif c == 3:&lt;br /&gt;
            count = cerinta_3(k)&lt;br /&gt;
            with open(&#039;numere24.out&#039;, &#039;w&#039;) as f:&lt;br /&gt;
                f.write(str(count) + &#039;\n&#039;)&lt;br /&gt;
    else:&lt;br /&gt;
        print(&amp;quot;Datele nu corespund restricțiilor impuse.&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Alexandra Leș</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=1595_-_Bomboane_1&amp;diff=4365</id>
		<title>1595 - Bomboane 1</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=1595_-_Bomboane_1&amp;diff=4365"/>
		<updated>2023-04-25T11:01:36Z</updated>

		<summary type="html">&lt;p&gt;Alexandra Leș: /* Exemplul 1 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cerinţa  ==&lt;br /&gt;
Lui Cristian, ca oricărui alt copil, îi plac bomboanele. A primit cadou de la prietenii lui cutii cu bomboane. Fiind multe cutii le-a numerotat: &#039;&#039;&#039;1&#039;&#039;&#039;, &#039;&#039;&#039;2&#039;&#039;&#039;, &#039;&#039;&#039;3&#039;&#039;&#039;, … Desfăcând câteva, a văzut că există o legătură între numărul de pe etichetă și numărul de bomboane din cutie. Astfel în fiecare cutie sunt atâtea bomboane câți divizori pari are numărul de pe cutie. De exemplu cutia cu numărul &#039;&#039;&#039;10&#039;&#039;&#039; conține &#039;&#039;&#039;2&#039;&#039;&#039; bomboane, cutia cu numărul &#039;&#039;&#039;8&#039;&#039;&#039; conține &#039;&#039;&#039;3&#039;&#039;&#039; bomboane ș.a.m.d.&lt;br /&gt;
&lt;br /&gt;
Cristian a ales la întâmplare două etichete x și y dorind să desfacă toate cutiile cu etichete cuprinse între x și y. Ajutați-l să determine prima cutie, etichetată cu a, și utima cutie, etichetată cu b, cu număr maxim de bomboane (x≤a≤b≤y), câte cutii n sunt cu acest număr de bomboane și care este acest număr d de bomboane.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Fișierul de intrare &#039;&#039;&#039;bomboane1.in&#039;&#039;&#039; conține pe prima linie numerele naturale nenule &#039;&#039;&#039;x&#039;&#039;&#039; și &#039;&#039;&#039;y&#039;&#039;&#039; separate prin câte 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 pe un rând nou fișierul de ieșire &#039;&#039;&#039;bomboane1.out&#039;&#039;&#039; va conține o singură linie pe care vor fi scrise cele patru valori determinate, în ordinea din cerință (&#039;&#039;&#039;a b n d&#039;&#039;&#039;), separate prin câte un spațiu.Î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;
&lt;br /&gt;
== Restricții și precizări ==&lt;br /&gt;
* 1 &amp;amp;les; x &amp;amp;les; a &amp;amp;les; b &amp;amp;les; y&amp;amp;les; 1.000.000.000&lt;br /&gt;
* y - x &amp;amp;les; 1000&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
; bomboane1.in&lt;br /&gt;
: 10 20&lt;br /&gt;
; bomboane1.out&lt;br /&gt;
: Datele sunt introduse corect.&lt;br /&gt;
: 12 20 3 4&lt;br /&gt;
&lt;br /&gt;
== Explicație == &lt;br /&gt;
Dacă parcurgem toate numerele de la &#039;&#039;&#039;10&#039;&#039;&#039; la &#039;&#039;&#039;20&#039;&#039;&#039; constatăm că numărul maxim de divizori pari este &#039;&#039;&#039;4&#039;&#039;&#039; obținut la numerele &#039;&#039;&#039;12&#039;&#039;&#039;, &#039;&#039;&#039;16&#039;&#039;&#039; şi &#039;&#039;&#039;20&#039;&#039;&#039; (3 numere).&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(x, a, b, y):&lt;br /&gt;
    if not (1 &amp;lt;= x &amp;lt;= a &amp;lt;= b &amp;lt;= y &amp;lt;= 1_000_000_000 and y - x &amp;lt;= 1000):&lt;br /&gt;
        return False&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
def nr_bomboane(n):&lt;br /&gt;
    cnt = 0&lt;br /&gt;
    for i in range(2, int(n**0.5) + 1):&lt;br /&gt;
        if n % i == 0:&lt;br /&gt;
            if i % 2 == 0:&lt;br /&gt;
                cnt += 1&lt;br /&gt;
            if (n/i) % 2 == 0 and i != n // i:&lt;br /&gt;
                cnt += 1&lt;br /&gt;
        if i*i == n and i % 2 == 0:&lt;br /&gt;
            cnt -= 1&lt;br /&gt;
    if n % 2 == 0:&lt;br /&gt;
        cnt += 1&lt;br /&gt;
    return cnt&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    with open(&amp;quot;bomboane1.in&amp;quot;, &amp;quot;r&amp;quot;) as f_in:&lt;br /&gt;
        x, y = map(int, f_in.readline().split())&lt;br /&gt;
&lt;br /&gt;
    a = x&lt;br /&gt;
    while a % 2 != 0:&lt;br /&gt;
        a += 1&lt;br /&gt;
    if a % 4 != 0:&lt;br /&gt;
        a += 2&lt;br /&gt;
    b = y&lt;br /&gt;
    while b % 2 != 0:&lt;br /&gt;
        b -= 1&lt;br /&gt;
    if b % 4 != 0:&lt;br /&gt;
        b -= 2&lt;br /&gt;
&lt;br /&gt;
    max_numar_divizori = 0&lt;br /&gt;
    for i in range(a, b+1, 4):&lt;br /&gt;
        numar_divizori = nr_bomboane(i)&lt;br /&gt;
        if numar_divizori &amp;gt; max_numar_divizori:&lt;br /&gt;
            max_numar_divizori = numar_divizori&lt;br /&gt;
&lt;br /&gt;
    cnt = 0&lt;br /&gt;
    for i in range(a, b+1, 4):&lt;br /&gt;
        numar_divizori = nr_bomboane(i)&lt;br /&gt;
        if numar_divizori == max_numar_divizori:&lt;br /&gt;
            cnt += 1&lt;br /&gt;
            if cnt == 1:&lt;br /&gt;
                min_div_box = i&lt;br /&gt;
            max_div_box = i&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    with open(&amp;quot;bomboane1.out&amp;quot;, &amp;quot;w&amp;quot;) as f_out:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
        if validare_date(x, a, b, y):&lt;br /&gt;
            f_out.write(&amp;quot;Datele sunt introduse corect.\n&amp;quot;)&lt;br /&gt;
        else:&lt;br /&gt;
            f_out.write(&amp;quot;Datele nu corespund restricțiilor impuse.&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
        f_out.write(f&amp;quot;{min_div_box} {max_div_box} {cnt} {max_numar_divizori}\n&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 validare_date(x, a, b, y) verifică dacă datele de intrare respectă restricțiile și returnează True dacă sunt, altfel False.&amp;lt;br&amp;gt;Funcția nr_bomboane(n) calculează numărul de divizori pari ai unui număr n.&amp;lt;br&amp;gt;În funcția  if __name__ == &#039;__main__&#039;: se deschide fișierul de intrare și se citesc valorile x și y. Se calculează apoi valorile a și b ca fiind cele mai apropiate numere pare de x și y, respectiv. Se parcurge apoi intervalul de la a la b, cu pași de 4, și se calculează numărul de divizori pari ai fiecărui număr, iar din aceștia se găsește maximul. În a doua parcurgere a intervalului, se numără câte cutii au numărul maxim de divizori pari și se găsesc primele și ultimele cutii care îndeplinesc această condiție. Rezultatul final este afișat în fișierul de ieșire în formatul cerut de problemă.&lt;/div&gt;</summary>
		<author><name>Alexandra Leș</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=1595_-_Bomboane_1&amp;diff=4364</id>
		<title>1595 - Bomboane 1</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=1595_-_Bomboane_1&amp;diff=4364"/>
		<updated>2023-04-25T11:01:19Z</updated>

		<summary type="html">&lt;p&gt;Alexandra Leș: /* Date de ieşire */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cerinţa  ==&lt;br /&gt;
Lui Cristian, ca oricărui alt copil, îi plac bomboanele. A primit cadou de la prietenii lui cutii cu bomboane. Fiind multe cutii le-a numerotat: &#039;&#039;&#039;1&#039;&#039;&#039;, &#039;&#039;&#039;2&#039;&#039;&#039;, &#039;&#039;&#039;3&#039;&#039;&#039;, … Desfăcând câteva, a văzut că există o legătură între numărul de pe etichetă și numărul de bomboane din cutie. Astfel în fiecare cutie sunt atâtea bomboane câți divizori pari are numărul de pe cutie. De exemplu cutia cu numărul &#039;&#039;&#039;10&#039;&#039;&#039; conține &#039;&#039;&#039;2&#039;&#039;&#039; bomboane, cutia cu numărul &#039;&#039;&#039;8&#039;&#039;&#039; conține &#039;&#039;&#039;3&#039;&#039;&#039; bomboane ș.a.m.d.&lt;br /&gt;
&lt;br /&gt;
Cristian a ales la întâmplare două etichete x și y dorind să desfacă toate cutiile cu etichete cuprinse între x și y. Ajutați-l să determine prima cutie, etichetată cu a, și utima cutie, etichetată cu b, cu număr maxim de bomboane (x≤a≤b≤y), câte cutii n sunt cu acest număr de bomboane și care este acest număr d de bomboane.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Fișierul de intrare &#039;&#039;&#039;bomboane1.in&#039;&#039;&#039; conține pe prima linie numerele naturale nenule &#039;&#039;&#039;x&#039;&#039;&#039; și &#039;&#039;&#039;y&#039;&#039;&#039; separate prin câte 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 pe un rând nou fișierul de ieșire &#039;&#039;&#039;bomboane1.out&#039;&#039;&#039; va conține o singură linie pe care vor fi scrise cele patru valori determinate, în ordinea din cerință (&#039;&#039;&#039;a b n d&#039;&#039;&#039;), separate prin câte un spațiu.Î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;
&lt;br /&gt;
== Restricții și precizări ==&lt;br /&gt;
* 1 &amp;amp;les; x &amp;amp;les; a &amp;amp;les; b &amp;amp;les; y&amp;amp;les; 1.000.000.000&lt;br /&gt;
* y - x &amp;amp;les; 1000&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
; bomboane1.in&lt;br /&gt;
: 10 20&lt;br /&gt;
; bomboane1.out&lt;br /&gt;
: Datele introduse corespund restricțiilor impuse.&lt;br /&gt;
: 12 20 3 4&lt;br /&gt;
== Explicație == &lt;br /&gt;
Dacă parcurgem toate numerele de la &#039;&#039;&#039;10&#039;&#039;&#039; la &#039;&#039;&#039;20&#039;&#039;&#039; constatăm că numărul maxim de divizori pari este &#039;&#039;&#039;4&#039;&#039;&#039; obținut la numerele &#039;&#039;&#039;12&#039;&#039;&#039;, &#039;&#039;&#039;16&#039;&#039;&#039; şi &#039;&#039;&#039;20&#039;&#039;&#039; (3 numere).&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(x, a, b, y):&lt;br /&gt;
    if not (1 &amp;lt;= x &amp;lt;= a &amp;lt;= b &amp;lt;= y &amp;lt;= 1_000_000_000 and y - x &amp;lt;= 1000):&lt;br /&gt;
        return False&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
def nr_bomboane(n):&lt;br /&gt;
    cnt = 0&lt;br /&gt;
    for i in range(2, int(n**0.5) + 1):&lt;br /&gt;
        if n % i == 0:&lt;br /&gt;
            if i % 2 == 0:&lt;br /&gt;
                cnt += 1&lt;br /&gt;
            if (n/i) % 2 == 0 and i != n // i:&lt;br /&gt;
                cnt += 1&lt;br /&gt;
        if i*i == n and i % 2 == 0:&lt;br /&gt;
            cnt -= 1&lt;br /&gt;
    if n % 2 == 0:&lt;br /&gt;
        cnt += 1&lt;br /&gt;
    return cnt&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    with open(&amp;quot;bomboane1.in&amp;quot;, &amp;quot;r&amp;quot;) as f_in:&lt;br /&gt;
        x, y = map(int, f_in.readline().split())&lt;br /&gt;
&lt;br /&gt;
    a = x&lt;br /&gt;
    while a % 2 != 0:&lt;br /&gt;
        a += 1&lt;br /&gt;
    if a % 4 != 0:&lt;br /&gt;
        a += 2&lt;br /&gt;
    b = y&lt;br /&gt;
    while b % 2 != 0:&lt;br /&gt;
        b -= 1&lt;br /&gt;
    if b % 4 != 0:&lt;br /&gt;
        b -= 2&lt;br /&gt;
&lt;br /&gt;
    max_numar_divizori = 0&lt;br /&gt;
    for i in range(a, b+1, 4):&lt;br /&gt;
        numar_divizori = nr_bomboane(i)&lt;br /&gt;
        if numar_divizori &amp;gt; max_numar_divizori:&lt;br /&gt;
            max_numar_divizori = numar_divizori&lt;br /&gt;
&lt;br /&gt;
    cnt = 0&lt;br /&gt;
    for i in range(a, b+1, 4):&lt;br /&gt;
        numar_divizori = nr_bomboane(i)&lt;br /&gt;
        if numar_divizori == max_numar_divizori:&lt;br /&gt;
            cnt += 1&lt;br /&gt;
            if cnt == 1:&lt;br /&gt;
                min_div_box = i&lt;br /&gt;
            max_div_box = i&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    with open(&amp;quot;bomboane1.out&amp;quot;, &amp;quot;w&amp;quot;) as f_out:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
        if validare_date(x, a, b, y):&lt;br /&gt;
            f_out.write(&amp;quot;Datele sunt introduse corect.\n&amp;quot;)&lt;br /&gt;
        else:&lt;br /&gt;
            f_out.write(&amp;quot;Datele nu corespund restricțiilor impuse.&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
        f_out.write(f&amp;quot;{min_div_box} {max_div_box} {cnt} {max_numar_divizori}\n&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 validare_date(x, a, b, y) verifică dacă datele de intrare respectă restricțiile și returnează True dacă sunt, altfel False.&amp;lt;br&amp;gt;Funcția nr_bomboane(n) calculează numărul de divizori pari ai unui număr n.&amp;lt;br&amp;gt;În funcția  if __name__ == &#039;__main__&#039;: se deschide fișierul de intrare și se citesc valorile x și y. Se calculează apoi valorile a și b ca fiind cele mai apropiate numere pare de x și y, respectiv. Se parcurge apoi intervalul de la a la b, cu pași de 4, și se calculează numărul de divizori pari ai fiecărui număr, iar din aceștia se găsește maximul. În a doua parcurgere a intervalului, se numără câte cutii au numărul maxim de divizori pari și se găsesc primele și ultimele cutii care îndeplinesc această condiție. Rezultatul final este afișat în fișierul de ieșire în formatul cerut de problemă.&lt;/div&gt;</summary>
		<author><name>Alexandra Leș</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=1481_-_Gradina_Piticului&amp;diff=4361</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=4361"/>
		<updated>2023-04-25T10:58:14Z</updated>

		<summary type="html">&lt;p&gt;Alexandra Leș: &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: &#039;&#039;&#039;&amp;quot;Datele sunt introduse corect.&amp;quot;&#039;&#039;&#039;, 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 :&#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;
* 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 sunt introduse corect.&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>Alexandra Leș</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=1438_-_Razboi&amp;diff=4360</id>
		<title>1438 - Razboi</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=1438_-_Razboi&amp;diff=4360"/>
		<updated>2023-04-25T10:56:16Z</updated>

		<summary type="html">&lt;p&gt;Alexandra Leș: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Enunţ ==&lt;br /&gt;
În Regatul Numerelor, a început războiul civil. Se dau &#039;&#039;&#039;n&#039;&#039;&#039; soldați, reprezentați prin &#039;&#039;&#039;n&#039;&#039;&#039; numere naturale, nu neapărat distincte. Cei &#039;&#039;&#039;n&#039;&#039;&#039; soldați sunt recrutați în două batalioane adverse, după o lege de recrutare. Această lege are un număr asociat, care este egal cu &#039;&#039;&#039;1&#039;&#039;&#039; sau &#039;&#039;&#039;2&#039;&#039;&#039;. Dacă legea este &#039;&#039;&#039;1&#039;&#039;&#039;, atunci soldații care au ultima cifră egală cu 0, 2, 4, 6 și 8 sunt recrutați de primul batalion, iar ceilalți de cel de-al doilea. Dacă legea e &#039;&#039;&#039;2&#039;&#039;&#039;, atunci soldații care au suma divizorilor număr par sunt recrutați de primul batalion, iar restul de cel de-al doilea.&lt;br /&gt;
== Cerinţa ==&lt;br /&gt;
Dându-se &#039;&#039;&#039;n&#039;&#039;&#039;, numărul de soldați, &#039;&#039;&#039;L&#039;&#039;&#039;, legea de recrutare, și identificatorii celor &#039;&#039;&#039;n&#039;&#039;&#039; soldați, să se afișeze numărul soldaților din primul, respectiv al doilea batalion.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Fișierul de intrare &#039;&#039;&#039;razboi.in&#039;&#039;&#039; conține pe prima linie numerele &#039;&#039;&#039;n&#039;&#039;&#039; şi &#039;&#039;&#039;L&#039;&#039;&#039;, cu semnificaţiile din enunţ, iar pe a doua linie se găsesc &#039;&#039;&#039;n&#039;&#039;&#039; numere reprezentând identificatorii celor &#039;&#039;&#039;n&#039;&#039;&#039; soldați.&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 fișierul de ieșire &#039;&#039;&#039;razboi.out&#039;&#039;&#039; va conține pe prima linie cele două numere cerute, separate printr-un spațiu. Î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 &amp;amp;les;  60 000&lt;br /&gt;
*Numerele din şir &amp;lt; 100 000 &lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
; razboi.in&lt;br /&gt;
: 3 2&lt;br /&gt;
: 6 17 2&lt;br /&gt;
; razboi.out&lt;br /&gt;
: Datele sunt introduse corect.&lt;br /&gt;
: 2 1&lt;br /&gt;
== Explicație == &lt;br /&gt;
Suma divizorilor lui &#039;&#039;&#039;6&#039;&#039;&#039; este &#039;&#039;&#039;12&#039;&#039;&#039;.&lt;br /&gt;
Suma divizorilor lui &#039;&#039;&#039;17&#039;&#039;&#039; este &#039;&#039;&#039;18&#039;&#039;&#039;.&lt;br /&gt;
Suma divizorilor lui &#039;&#039;&#039;2&#039;&#039;&#039; este &#039;&#039;&#039;3&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Așadar, primul batalion are doi soldați, iar al doilea batalion are unul singur.&lt;br /&gt;
== Exemplu2 ==&lt;br /&gt;
; razboi.in&lt;br /&gt;
: 10 1&lt;br /&gt;
: 15 150 12 36 45 78 85 95 93 141&lt;br /&gt;
; razboi.out&lt;br /&gt;
: Datele sunt introduse corect.&lt;br /&gt;
: 4 6&lt;br /&gt;
== Explicație == &lt;br /&gt;
Suma divizorilor lui &#039;&#039;&#039;6&#039;&#039;&#039; este &#039;&#039;&#039;12&#039;&#039;&#039;.&lt;br /&gt;
Suma divizorilor lui &#039;&#039;&#039;17&#039;&#039;&#039; este &#039;&#039;&#039;18&#039;&#039;&#039;.&lt;br /&gt;
Suma divizorilor lui &#039;&#039;&#039;2&#039;&#039;&#039; este &#039;&#039;&#039;3&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Așadar, primul batalion are doi soldați, iar al doilea batalion are unul singur.&lt;br /&gt;
== Exemplu3 ==&lt;br /&gt;
; razboi.in&lt;br /&gt;
: 10 2&lt;br /&gt;
: 15 150 12 36 45 78 85 95 93 14&lt;br /&gt;
; razboi.out&lt;br /&gt;
: Datele sunt introduse corect.&lt;br /&gt;
: 9 1&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
def sd(n):&lt;br /&gt;
    s = 0&lt;br /&gt;
    for i in range(1, int(n**0.5)+1):  # se iterează prin toate numerele de la 1 la rădăcina pătrată a lui n&lt;br /&gt;
        if n % i == 0:  # dacă i divide n&lt;br /&gt;
            s += i + n // i  # se adaugă i și n/i la sumă&lt;br /&gt;
        if i * i == n:  # dacă i este rădăcina pătrată a lui n&lt;br /&gt;
            s -= i  # se scade i din sumă, deoarece a fost adăugat de două ori (de la i și de la n/i)&lt;br /&gt;
    return s&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def validare_date(numar1, numar2):&lt;br /&gt;
    flag = False&lt;br /&gt;
    if numar1.isdigit() and numar2.isdigit():  # se verifică dacă cele două numere sunt formate din cifre&lt;br /&gt;
        if 0 &amp;lt; int(numar1) &amp;lt;= 60000 and 0 &amp;lt; int(numar2) &amp;lt;= 100000:  # se verifică dacă cele două numere sunt în intervalele cerute&lt;br /&gt;
            flag = True&lt;br /&gt;
    return flag&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    with open(&#039;razboi.in&#039;, &#039;r&#039;) as f:&lt;br /&gt;
        n, L = f.readline().split()  # se citesc primele două numere din fișierul &#039;razboi.in&#039;&lt;br /&gt;
        soldati = list(map(int, f.readline().split()))  # se citesc soldații din fișierul &#039;razboi.in&#039; și se transformă din string-uri în numere întregi&lt;br /&gt;
&lt;br /&gt;
    if validare_date(n, L):  # se validează cele două numere citite din fișier&lt;br /&gt;
        n = int(n)  # se transformă n din string în număr întreg&lt;br /&gt;
        L = int(L)  # se transformă L din string în număr întreg&lt;br /&gt;
&lt;br /&gt;
        cnt = 0&lt;br /&gt;
        for x in soldati:&lt;br /&gt;
            if sd(x) % 2 == 0:  # se verifică dacă suma divizorilor lui x este pară&lt;br /&gt;
                cnt += 1  # se incrementează cnt dacă suma divizorilor este pară&lt;br /&gt;
        with open(&#039;razboi.out&#039;, &#039;w&#039;) as f:&lt;br /&gt;
            f.write(&amp;quot;Datele sunt introduse corect.\n&amp;quot;)&lt;br /&gt;
            f.write(str(cnt) + &#039; &#039; + str(n - cnt) + &#039;\n&#039;)  # se scriu în fișierul &#039;razboi.out&#039; numărul de soldați cu suma divizorilor pară și numărul de soldați cu suma divizorilor impară&lt;br /&gt;
    else:&lt;br /&gt;
        f.write(&amp;quot;Datele nu corespund restricțiilor impuse.&amp;quot;) # scrierea mesajului de eroare în fișierul de ieșire&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Alexandra Leș</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=1422_-_Ograda&amp;diff=4356</id>
		<title>1422 - Ograda</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=1422_-_Ograda&amp;diff=4356"/>
		<updated>2023-04-25T10:54:33Z</updated>

		<summary type="html">&lt;p&gt;Alexandra Leș: /* 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 sunt introduse corect.&lt;br /&gt;
: 2 3&lt;br /&gt;
&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;
== Exemplul 2 ==&lt;br /&gt;
; ograda.in&lt;br /&gt;
: 2&lt;br /&gt;
: 5 16&lt;br /&gt;
; ograda.out&lt;br /&gt;
: Datele sunt introduse corect.&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>Alexandra Leș</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=1422_-_Ograda&amp;diff=4355</id>
		<title>1422 - Ograda</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=1422_-_Ograda&amp;diff=4355"/>
		<updated>2023-04-25T10:54:15Z</updated>

		<summary type="html">&lt;p&gt;Alexandra Leș: /* 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 sunt introduse corect.&lt;br /&gt;
: 2 3&lt;br /&gt;
&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 sunt introduse corect.&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>Alexandra Leș</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=1422_-_Ograda&amp;diff=4353</id>
		<title>1422 - Ograda</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=1422_-_Ograda&amp;diff=4353"/>
		<updated>2023-04-25T10:54:01Z</updated>

		<summary type="html">&lt;p&gt;Alexandra Leș: /* Exemplul 1 */&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 sunt introduse corect.&lt;br /&gt;
: 2 3&lt;br /&gt;
&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>Alexandra Leș</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=1590_-_Arma_1&amp;diff=4351</id>
		<title>1590 - Arma 1</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=1590_-_Arma_1&amp;diff=4351"/>
		<updated>2023-04-25T10:52:43Z</updated>

		<summary type="html">&lt;p&gt;Alexandra Leș: /* Exemplul 1 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==  Enunț ==&lt;br /&gt;
În anul 2214 a izbucnit primul război interstelar. Pământul a fost atacat de către &#039;&#039;&#039;n&#039;&#039;&#039; civilizaţii extraterestre, pe care le vom numerota pentru simplicitate de la &#039;&#039;&#039;1&#039;&#039;&#039; la &#039;&#039;&#039;n&#039;&#039;&#039;.&lt;br /&gt;
Pentru a se apăra, pământenii au inventat o armă specială ce poate fi încărcată cu proiectile de diferite greutăţi, fabricate dintr-un material special denumit narun. Dacă arma este programată la nivelul &#039;&#039;&#039;p&#039;&#039;&#039;, atunci un proiectil de greutate &#039;&#039;&#039;k&#039;&#039;&#039; va ajunge exact la distanţa &#039;&#039;&#039;k**p&#039;&#039;&#039; km (k la puterea p) faţă de Pământ şi dacă în acel punct se află cartierul general al unui atacator, acesta va fi distrus. De exemplu, dacă arma este programată la nivelul &#039;&#039;&#039;2&#039;&#039;&#039;, un proiectil de greutate &#039;&#039;&#039;10&#039;&#039;&#039; va distruge cartierul general al extratereştrilor situat la distanţa &#039;&#039;&#039;102 = 100&#039;&#039;&#039; km de Pământ.&lt;br /&gt;
&lt;br /&gt;
Arma poate fi încărcată cu proiectile de diferite greutăţi, dar cum narunul este un material foarte rar şi foarte scump, pământenii vor să folosească proiectile cât mai uşoare pentru a distruge cartierele generale inamice&lt;br /&gt;
== Cerinţa ==&lt;br /&gt;
Cunoscându-se &#039;&#039;&#039;n&#039;&#039;&#039;, numărul atacatorilor, precum şi cele n distanţe până la cartierele generale ale acestora, să se scrie un program care determină:&lt;br /&gt;
&lt;br /&gt;
cantitatea minimă de narun necesară pentru a distruge toate cartierele generale inamice;&lt;br /&gt;
nivelurile la care trebuie programată arma, pentru a distruge fiecare cartier general inamic cu o cantitate minimă de narun.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Fișierul de intrare &#039;&#039;&#039;arma1.in&#039;&#039;&#039; conține pe prima linie un număr natural &#039;&#039;&#039;c&#039;&#039;&#039; reprezentând cerinţa care trebuie să fie rezolvată (&#039;&#039;&#039;1&#039;&#039;&#039; sau &#039;&#039;&#039;2&#039;&#039;&#039;). Pe cea de a doua linie se află numărul natural &#039;&#039;&#039;n&#039;&#039;&#039;, reprezentând numărul atacatorilor. Pe următoarele n linii se află n numere naturale, câte un număr pe o linie; pe cea de a &#039;&#039;&#039;i&#039;&#039;&#039;-a linie dintre cele n (&#039;&#039;&#039;1≤i≤n&#039;&#039;&#039;) se află distanţa faţă de Pământ a cartierului general al celei de a &#039;&#039;&#039;i&#039;&#039;&#039;-a civilizaţii extraterestre.&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 dacă cerinţa &#039;&#039;&#039;c=1&#039;&#039;&#039;, atunci pe prima linie a fişierului &#039;&#039;&#039;arma1.out&#039;&#039;&#039; va fi scris un număr natural reprezentând cantitatea minimă de narun necesară distrugerii tuturor cartierelor generale inamice.&lt;br /&gt;
Dacă cerinţa este &#039;&#039;&#039;c=2&#039;&#039;&#039;, atunci fişierul de ieşire arma1.out va conţine &#039;&#039;&#039;n&#039;&#039;&#039; linii. Pe a &#039;&#039;&#039;i&#039;&#039;&#039;-a linie (&#039;&#039;&#039;1≤i≤n&#039;&#039;&#039;) se va scrie nivelul la care trebuie programată arma pentru a distruge cartierul general al celei de a &#039;&#039;&#039;i&#039;&#039;&#039;-a civilizaţii extraterestre.Î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;
&lt;br /&gt;
== Restricții și precizări ==&lt;br /&gt;
* 1 &amp;amp;les; n &amp;amp;les; 10.000&lt;br /&gt;
* Distanţele până la cartierele generale inamice sunt numere naturale nenule ≤ 2.000.000.000.&lt;br /&gt;
* Pentru 50% dintre teste cerinţa este 1.&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
; arma1.in&lt;br /&gt;
: 1&lt;br /&gt;
: 5&lt;br /&gt;
: 100 &lt;br /&gt;
: 97 &lt;br /&gt;
: 625 &lt;br /&gt;
: 40353607 &lt;br /&gt;
: 81&lt;br /&gt;
; arma1.out&lt;br /&gt;
: Datele sunt introduse corect.&lt;br /&gt;
: 122&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
; arma1.in&lt;br /&gt;
: 2&lt;br /&gt;
: 5&lt;br /&gt;
: 100 &lt;br /&gt;
: 97 &lt;br /&gt;
: 625 &lt;br /&gt;
: 40353607 &lt;br /&gt;
: 81&lt;br /&gt;
; arma1.out&lt;br /&gt;
: Datele sunt introduse corect.&lt;br /&gt;
: 2 &lt;br /&gt;
: 1 &lt;br /&gt;
: 4 &lt;br /&gt;
: 9 &lt;br /&gt;
: 4&lt;br /&gt;
&lt;br /&gt;
== Explicație == &lt;br /&gt;
Primul cartier general se poate distruge cu un proiectil de greutate &#039;&#039;&#039;10&#039;&#039;&#039;, programat la nivelul &#039;&#039;&#039;2&#039;&#039;&#039;, al doilea obiectiv cu un proiectil de greutate &#039;&#039;&#039;97&#039;&#039;&#039; programat la nivelul &#039;&#039;&#039;1&#039;&#039;&#039;, al treilea cu un proiectil de greutate &#039;&#039;&#039;5&#039;&#039;&#039; programat la nivelul &#039;&#039;&#039;4&#039;&#039;&#039;, al patrulea cu un proiectil de greutate &#039;&#039;&#039;7&#039;&#039;&#039; programat la nivelul &#039;&#039;&#039;9&#039;&#039;&#039;, iar ultimul cu un proiectil de greutate &#039;&#039;&#039;3&#039;&#039;&#039; programat la nivelul &#039;&#039;&#039;4&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Cantitatea minimă de narun necesară este &#039;&#039;&#039;10+97+5+7+3=122&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Nivelurile sunt în ordine: &#039;&#039;&#039;2 1 4 9 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(n):&lt;br /&gt;
    flag = False&lt;br /&gt;
    if n.isdigit():&lt;br /&gt;
        if 0 &amp;lt;= int(n) &amp;lt;= 2_000_000_000:&lt;br /&gt;
            flag = True&lt;br /&gt;
    return flag&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    with open(&#039;arma1.in&#039;, &#039;r&#039;) as f:&lt;br /&gt;
        cerinta = int(f.readline().strip())&lt;br /&gt;
        n = int(f.readline().strip())&lt;br /&gt;
        distante = []&lt;br /&gt;
        for i in range(n):&lt;br /&gt;
            numar = f.readline().strip()&lt;br /&gt;
            if validare_date(numar):&lt;br /&gt;
                distante.append(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;
                exit()&lt;br /&gt;
&lt;br /&gt;
    if validare_date(str(cerinta)) and len(distante) == n:&lt;br /&gt;
        if cerinta == 1:&lt;br /&gt;
            cantitate_narun = 0&lt;br /&gt;
            for distanta in distante:&lt;br /&gt;
                cantitate_narun += pow(distanta, 3)&lt;br /&gt;
            print(cantitate_narun)&lt;br /&gt;
        elif cerinta == 2:&lt;br /&gt;
            for distanta in distante:&lt;br /&gt;
                for p in range(3):&lt;br /&gt;
                    if pow(distanta, p) &amp;gt;= distanta:&lt;br /&gt;
                        print(p)&lt;br /&gt;
                        break&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;/div&gt;</summary>
		<author><name>Alexandra Leș</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=1590_-_Arma_1&amp;diff=4350</id>
		<title>1590 - Arma 1</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=1590_-_Arma_1&amp;diff=4350"/>
		<updated>2023-04-25T10:52:01Z</updated>

		<summary type="html">&lt;p&gt;Alexandra Leș: /* Exemplul 1 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==  Enunț ==&lt;br /&gt;
În anul 2214 a izbucnit primul război interstelar. Pământul a fost atacat de către &#039;&#039;&#039;n&#039;&#039;&#039; civilizaţii extraterestre, pe care le vom numerota pentru simplicitate de la &#039;&#039;&#039;1&#039;&#039;&#039; la &#039;&#039;&#039;n&#039;&#039;&#039;.&lt;br /&gt;
Pentru a se apăra, pământenii au inventat o armă specială ce poate fi încărcată cu proiectile de diferite greutăţi, fabricate dintr-un material special denumit narun. Dacă arma este programată la nivelul &#039;&#039;&#039;p&#039;&#039;&#039;, atunci un proiectil de greutate &#039;&#039;&#039;k&#039;&#039;&#039; va ajunge exact la distanţa &#039;&#039;&#039;k**p&#039;&#039;&#039; km (k la puterea p) faţă de Pământ şi dacă în acel punct se află cartierul general al unui atacator, acesta va fi distrus. De exemplu, dacă arma este programată la nivelul &#039;&#039;&#039;2&#039;&#039;&#039;, un proiectil de greutate &#039;&#039;&#039;10&#039;&#039;&#039; va distruge cartierul general al extratereştrilor situat la distanţa &#039;&#039;&#039;102 = 100&#039;&#039;&#039; km de Pământ.&lt;br /&gt;
&lt;br /&gt;
Arma poate fi încărcată cu proiectile de diferite greutăţi, dar cum narunul este un material foarte rar şi foarte scump, pământenii vor să folosească proiectile cât mai uşoare pentru a distruge cartierele generale inamice&lt;br /&gt;
== Cerinţa ==&lt;br /&gt;
Cunoscându-se &#039;&#039;&#039;n&#039;&#039;&#039;, numărul atacatorilor, precum şi cele n distanţe până la cartierele generale ale acestora, să se scrie un program care determină:&lt;br /&gt;
&lt;br /&gt;
cantitatea minimă de narun necesară pentru a distruge toate cartierele generale inamice;&lt;br /&gt;
nivelurile la care trebuie programată arma, pentru a distruge fiecare cartier general inamic cu o cantitate minimă de narun.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Fișierul de intrare &#039;&#039;&#039;arma1.in&#039;&#039;&#039; conține pe prima linie un număr natural &#039;&#039;&#039;c&#039;&#039;&#039; reprezentând cerinţa care trebuie să fie rezolvată (&#039;&#039;&#039;1&#039;&#039;&#039; sau &#039;&#039;&#039;2&#039;&#039;&#039;). Pe cea de a doua linie se află numărul natural &#039;&#039;&#039;n&#039;&#039;&#039;, reprezentând numărul atacatorilor. Pe următoarele n linii se află n numere naturale, câte un număr pe o linie; pe cea de a &#039;&#039;&#039;i&#039;&#039;&#039;-a linie dintre cele n (&#039;&#039;&#039;1≤i≤n&#039;&#039;&#039;) se află distanţa faţă de Pământ a cartierului general al celei de a &#039;&#039;&#039;i&#039;&#039;&#039;-a civilizaţii extraterestre.&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 dacă cerinţa &#039;&#039;&#039;c=1&#039;&#039;&#039;, atunci pe prima linie a fişierului &#039;&#039;&#039;arma1.out&#039;&#039;&#039; va fi scris un număr natural reprezentând cantitatea minimă de narun necesară distrugerii tuturor cartierelor generale inamice.&lt;br /&gt;
Dacă cerinţa este &#039;&#039;&#039;c=2&#039;&#039;&#039;, atunci fişierul de ieşire arma1.out va conţine &#039;&#039;&#039;n&#039;&#039;&#039; linii. Pe a &#039;&#039;&#039;i&#039;&#039;&#039;-a linie (&#039;&#039;&#039;1≤i≤n&#039;&#039;&#039;) se va scrie nivelul la care trebuie programată arma pentru a distruge cartierul general al celei de a &#039;&#039;&#039;i&#039;&#039;&#039;-a civilizaţii extraterestre.Î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;
&lt;br /&gt;
== Restricții și precizări ==&lt;br /&gt;
* 1 &amp;amp;les; n &amp;amp;les; 10.000&lt;br /&gt;
* Distanţele până la cartierele generale inamice sunt numere naturale nenule ≤ 2.000.000.000.&lt;br /&gt;
* Pentru 50% dintre teste cerinţa este 1.&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
; arma1.in&lt;br /&gt;
: 1&lt;br /&gt;
: 5&lt;br /&gt;
: 100 &lt;br /&gt;
: 97 &lt;br /&gt;
: 625 &lt;br /&gt;
: 40353607 &lt;br /&gt;
: 81&lt;br /&gt;
; arma1.out&lt;br /&gt;
: Datele sunt introduse corect.&lt;br /&gt;
: 122&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
; arma1.in&lt;br /&gt;
: 2&lt;br /&gt;
: 5&lt;br /&gt;
: 100 &lt;br /&gt;
: 97 &lt;br /&gt;
: 625 &lt;br /&gt;
: 40353607 &lt;br /&gt;
: 81&lt;br /&gt;
; arma1.out&lt;br /&gt;
: 2 &lt;br /&gt;
: 1 &lt;br /&gt;
: 4 &lt;br /&gt;
: 9 &lt;br /&gt;
: 4&lt;br /&gt;
&lt;br /&gt;
== Explicație == &lt;br /&gt;
Primul cartier general se poate distruge cu un proiectil de greutate &#039;&#039;&#039;10&#039;&#039;&#039;, programat la nivelul &#039;&#039;&#039;2&#039;&#039;&#039;, al doilea obiectiv cu un proiectil de greutate &#039;&#039;&#039;97&#039;&#039;&#039; programat la nivelul &#039;&#039;&#039;1&#039;&#039;&#039;, al treilea cu un proiectil de greutate &#039;&#039;&#039;5&#039;&#039;&#039; programat la nivelul &#039;&#039;&#039;4&#039;&#039;&#039;, al patrulea cu un proiectil de greutate &#039;&#039;&#039;7&#039;&#039;&#039; programat la nivelul &#039;&#039;&#039;9&#039;&#039;&#039;, iar ultimul cu un proiectil de greutate &#039;&#039;&#039;3&#039;&#039;&#039; programat la nivelul &#039;&#039;&#039;4&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Cantitatea minimă de narun necesară este &#039;&#039;&#039;10+97+5+7+3=122&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Nivelurile sunt în ordine: &#039;&#039;&#039;2 1 4 9 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(n):&lt;br /&gt;
    flag = False&lt;br /&gt;
    if n.isdigit():&lt;br /&gt;
        if 0 &amp;lt;= int(n) &amp;lt;= 2_000_000_000:&lt;br /&gt;
            flag = True&lt;br /&gt;
    return flag&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    with open(&#039;arma1.in&#039;, &#039;r&#039;) as f:&lt;br /&gt;
        cerinta = int(f.readline().strip())&lt;br /&gt;
        n = int(f.readline().strip())&lt;br /&gt;
        distante = []&lt;br /&gt;
        for i in range(n):&lt;br /&gt;
            numar = f.readline().strip()&lt;br /&gt;
            if validare_date(numar):&lt;br /&gt;
                distante.append(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;
                exit()&lt;br /&gt;
&lt;br /&gt;
    if validare_date(str(cerinta)) and len(distante) == n:&lt;br /&gt;
        if cerinta == 1:&lt;br /&gt;
            cantitate_narun = 0&lt;br /&gt;
            for distanta in distante:&lt;br /&gt;
                cantitate_narun += pow(distanta, 3)&lt;br /&gt;
            print(cantitate_narun)&lt;br /&gt;
        elif cerinta == 2:&lt;br /&gt;
            for distanta in distante:&lt;br /&gt;
                for p in range(3):&lt;br /&gt;
                    if pow(distanta, p) &amp;gt;= distanta:&lt;br /&gt;
                        print(p)&lt;br /&gt;
                        break&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;/div&gt;</summary>
		<author><name>Alexandra Leș</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=1590_-_Arma_1&amp;diff=4348</id>
		<title>1590 - Arma 1</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=1590_-_Arma_1&amp;diff=4348"/>
		<updated>2023-04-25T10:51:45Z</updated>

		<summary type="html">&lt;p&gt;Alexandra Leș: /* Date de ieşire */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==  Enunț ==&lt;br /&gt;
În anul 2214 a izbucnit primul război interstelar. Pământul a fost atacat de către &#039;&#039;&#039;n&#039;&#039;&#039; civilizaţii extraterestre, pe care le vom numerota pentru simplicitate de la &#039;&#039;&#039;1&#039;&#039;&#039; la &#039;&#039;&#039;n&#039;&#039;&#039;.&lt;br /&gt;
Pentru a se apăra, pământenii au inventat o armă specială ce poate fi încărcată cu proiectile de diferite greutăţi, fabricate dintr-un material special denumit narun. Dacă arma este programată la nivelul &#039;&#039;&#039;p&#039;&#039;&#039;, atunci un proiectil de greutate &#039;&#039;&#039;k&#039;&#039;&#039; va ajunge exact la distanţa &#039;&#039;&#039;k**p&#039;&#039;&#039; km (k la puterea p) faţă de Pământ şi dacă în acel punct se află cartierul general al unui atacator, acesta va fi distrus. De exemplu, dacă arma este programată la nivelul &#039;&#039;&#039;2&#039;&#039;&#039;, un proiectil de greutate &#039;&#039;&#039;10&#039;&#039;&#039; va distruge cartierul general al extratereştrilor situat la distanţa &#039;&#039;&#039;102 = 100&#039;&#039;&#039; km de Pământ.&lt;br /&gt;
&lt;br /&gt;
Arma poate fi încărcată cu proiectile de diferite greutăţi, dar cum narunul este un material foarte rar şi foarte scump, pământenii vor să folosească proiectile cât mai uşoare pentru a distruge cartierele generale inamice&lt;br /&gt;
== Cerinţa ==&lt;br /&gt;
Cunoscându-se &#039;&#039;&#039;n&#039;&#039;&#039;, numărul atacatorilor, precum şi cele n distanţe până la cartierele generale ale acestora, să se scrie un program care determină:&lt;br /&gt;
&lt;br /&gt;
cantitatea minimă de narun necesară pentru a distruge toate cartierele generale inamice;&lt;br /&gt;
nivelurile la care trebuie programată arma, pentru a distruge fiecare cartier general inamic cu o cantitate minimă de narun.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Fișierul de intrare &#039;&#039;&#039;arma1.in&#039;&#039;&#039; conține pe prima linie un număr natural &#039;&#039;&#039;c&#039;&#039;&#039; reprezentând cerinţa care trebuie să fie rezolvată (&#039;&#039;&#039;1&#039;&#039;&#039; sau &#039;&#039;&#039;2&#039;&#039;&#039;). Pe cea de a doua linie se află numărul natural &#039;&#039;&#039;n&#039;&#039;&#039;, reprezentând numărul atacatorilor. Pe următoarele n linii se află n numere naturale, câte un număr pe o linie; pe cea de a &#039;&#039;&#039;i&#039;&#039;&#039;-a linie dintre cele n (&#039;&#039;&#039;1≤i≤n&#039;&#039;&#039;) se află distanţa faţă de Pământ a cartierului general al celei de a &#039;&#039;&#039;i&#039;&#039;&#039;-a civilizaţii extraterestre.&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 dacă cerinţa &#039;&#039;&#039;c=1&#039;&#039;&#039;, atunci pe prima linie a fişierului &#039;&#039;&#039;arma1.out&#039;&#039;&#039; va fi scris un număr natural reprezentând cantitatea minimă de narun necesară distrugerii tuturor cartierelor generale inamice.&lt;br /&gt;
Dacă cerinţa este &#039;&#039;&#039;c=2&#039;&#039;&#039;, atunci fişierul de ieşire arma1.out va conţine &#039;&#039;&#039;n&#039;&#039;&#039; linii. Pe a &#039;&#039;&#039;i&#039;&#039;&#039;-a linie (&#039;&#039;&#039;1≤i≤n&#039;&#039;&#039;) se va scrie nivelul la care trebuie programată arma pentru a distruge cartierul general al celei de a &#039;&#039;&#039;i&#039;&#039;&#039;-a civilizaţii extraterestre.Î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;
&lt;br /&gt;
== Restricții și precizări ==&lt;br /&gt;
* 1 &amp;amp;les; n &amp;amp;les; 10.000&lt;br /&gt;
* Distanţele până la cartierele generale inamice sunt numere naturale nenule ≤ 2.000.000.000.&lt;br /&gt;
* Pentru 50% dintre teste cerinţa este 1.&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
; arma1.in&lt;br /&gt;
: 1&lt;br /&gt;
: 5&lt;br /&gt;
: 100 &lt;br /&gt;
: 97 &lt;br /&gt;
: 625 &lt;br /&gt;
: 40353607 &lt;br /&gt;
: 81&lt;br /&gt;
; arma1.out&lt;br /&gt;
: Datele introduse corespund restricțiilor impuse.&lt;br /&gt;
: 122&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
; arma1.in&lt;br /&gt;
: 2&lt;br /&gt;
: 5&lt;br /&gt;
: 100 &lt;br /&gt;
: 97 &lt;br /&gt;
: 625 &lt;br /&gt;
: 40353607 &lt;br /&gt;
: 81&lt;br /&gt;
; arma1.out&lt;br /&gt;
: 2 &lt;br /&gt;
: 1 &lt;br /&gt;
: 4 &lt;br /&gt;
: 9 &lt;br /&gt;
: 4&lt;br /&gt;
== Explicație == &lt;br /&gt;
Primul cartier general se poate distruge cu un proiectil de greutate &#039;&#039;&#039;10&#039;&#039;&#039;, programat la nivelul &#039;&#039;&#039;2&#039;&#039;&#039;, al doilea obiectiv cu un proiectil de greutate &#039;&#039;&#039;97&#039;&#039;&#039; programat la nivelul &#039;&#039;&#039;1&#039;&#039;&#039;, al treilea cu un proiectil de greutate &#039;&#039;&#039;5&#039;&#039;&#039; programat la nivelul &#039;&#039;&#039;4&#039;&#039;&#039;, al patrulea cu un proiectil de greutate &#039;&#039;&#039;7&#039;&#039;&#039; programat la nivelul &#039;&#039;&#039;9&#039;&#039;&#039;, iar ultimul cu un proiectil de greutate &#039;&#039;&#039;3&#039;&#039;&#039; programat la nivelul &#039;&#039;&#039;4&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Cantitatea minimă de narun necesară este &#039;&#039;&#039;10+97+5+7+3=122&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Nivelurile sunt în ordine: &#039;&#039;&#039;2 1 4 9 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(n):&lt;br /&gt;
    flag = False&lt;br /&gt;
    if n.isdigit():&lt;br /&gt;
        if 0 &amp;lt;= int(n) &amp;lt;= 2_000_000_000:&lt;br /&gt;
            flag = True&lt;br /&gt;
    return flag&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    with open(&#039;arma1.in&#039;, &#039;r&#039;) as f:&lt;br /&gt;
        cerinta = int(f.readline().strip())&lt;br /&gt;
        n = int(f.readline().strip())&lt;br /&gt;
        distante = []&lt;br /&gt;
        for i in range(n):&lt;br /&gt;
            numar = f.readline().strip()&lt;br /&gt;
            if validare_date(numar):&lt;br /&gt;
                distante.append(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;
                exit()&lt;br /&gt;
&lt;br /&gt;
    if validare_date(str(cerinta)) and len(distante) == n:&lt;br /&gt;
        if cerinta == 1:&lt;br /&gt;
            cantitate_narun = 0&lt;br /&gt;
            for distanta in distante:&lt;br /&gt;
                cantitate_narun += pow(distanta, 3)&lt;br /&gt;
            print(cantitate_narun)&lt;br /&gt;
        elif cerinta == 2:&lt;br /&gt;
            for distanta in distante:&lt;br /&gt;
                for p in range(3):&lt;br /&gt;
                    if pow(distanta, p) &amp;gt;= distanta:&lt;br /&gt;
                        print(p)&lt;br /&gt;
                        break&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;/div&gt;</summary>
		<author><name>Alexandra Leș</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=1377_-_Max_D&amp;diff=4341</id>
		<title>1377 - Max D</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=1377_-_Max_D&amp;diff=4341"/>
		<updated>2023-04-25T10:46:40Z</updated>

		<summary type="html">&lt;p&gt;Alexandra Leș: /* Exemplu */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Enunț ==&lt;br /&gt;
Fiind elev în clasa &#039;&#039;&#039;a IX-a&#039;&#039;&#039;, George, îşi propune să studieze capitolul divizibilitate cât mai bine. Ajungând la numărul de divizori asociat unui număr natural, constată că sunt numere într-un interval dat, cu acelaşi număr de divizori.&lt;br /&gt;
De exemplu, în intervalul &#039;&#039;&#039;[1, 10]&#039;&#039;&#039;, &#039;&#039;&#039;6&#039;&#039;&#039;, &#039;&#039;&#039;8&#039;&#039;&#039; şi &#039;&#039;&#039;10&#039;&#039;&#039; au acelaşi număr de divizori, egal cu &#039;&#039;&#039;4&#039;&#039;&#039;. De asemenea, &#039;&#039;&#039;4&#039;&#039;&#039; şi &#039;&#039;&#039;9&#039;&#039;&#039; au acelaşi număr de divizori, egal cu &#039;&#039;&#039;3&#039;&#039;&#039; etc.&lt;br /&gt;
&lt;br /&gt;
== Cerinţa ==&lt;br /&gt;
Scrieţi un program care pentru un interval dat determină care este cel mai mic număr din interval ce are număr maxim de divizori. Dacă sunt mai multe numere cu această proprietate se cere să se numere câte sunt.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Fişierul de intrare &#039;&#039;&#039;maxd.in&#039;&#039;&#039; conţine pe prima linie două numere &#039;&#039;&#039;a&#039;&#039;&#039; şi &#039;&#039;&#039;b&#039;&#039;&#039; separate prin spaţiu &#039;&#039;&#039;(a≤b)&#039;&#039;&#039; reprezentând extremităţile intervalului.&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 pe un rând nou Fişierul de ieşire &#039;&#039;&#039;maxd.out&#039;&#039;&#039; va conţine pe prima linie trei numere separate prin câte un spaţiu &#039;&#039;&#039;min nrdiv contor&#039;&#039;&#039; cu semnificaţia:&lt;br /&gt;
&#039;&#039;&#039;min&#039;&#039;&#039; – cea mai mică valoare din interval care are număr maxim de divizori&lt;br /&gt;
&#039;&#039;&#039;nrdiv&#039;&#039;&#039; – numărul de divizori ai lui min&lt;br /&gt;
&#039;&#039;&#039;contor&#039;&#039;&#039; – câte numere din intervalul citit mai au acelaşi număr de divizori egal cu nrdiv.&lt;br /&gt;
Î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;
&lt;br /&gt;
== Restricții și precizări ==&lt;br /&gt;
* 1 &amp;lt;= a, b &amp;lt;= 1.000.000.000&lt;br /&gt;
* 0 &amp;lt;= b - a &amp;lt;= 10.000&lt;br /&gt;
== Exemplu ==&lt;br /&gt;
; maxd.in&lt;br /&gt;
: 2 10&lt;br /&gt;
; maxd.out&lt;br /&gt;
: Datele sunt introduse corect.&lt;br /&gt;
: 6 4 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;
&lt;br /&gt;
def validare_date(a, b):&lt;br /&gt;
    if str(a).isdigit() and str(b).isdigit():&lt;br /&gt;
        if 0 &amp;lt; int(a) &amp;lt; int(b) &amp;lt;= 1_000_000_000:&lt;br /&gt;
            return True&lt;br /&gt;
    return False&lt;br /&gt;
#Funcție pentru găsirea numărului din intervalul [a, b] care are cel mai mare număr de divizori și determinarea numărului de numere din interval care au același număr de divizori.&lt;br /&gt;
def gaseste_numar_cu_max_divizori(a, b):&lt;br /&gt;
    nrmax = 0&lt;br /&gt;
    cnt = 0&lt;br /&gt;
    imax = 0&lt;br /&gt;
    for i in range(a, b+1):&lt;br /&gt;
        divizori = 0&lt;br /&gt;
        for j in range(1, i+1):&lt;br /&gt;
            if i % j == 0:&lt;br /&gt;
                divizori += 1&lt;br /&gt;
        if divizori &amp;gt; nrmax:&lt;br /&gt;
            nrmax = divizori&lt;br /&gt;
            imax = i&lt;br /&gt;
            cnt = 1&lt;br /&gt;
        elif divizori == nrmax:&lt;br /&gt;
            cnt += 1&lt;br /&gt;
    return (imax, nrmax, cnt)&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    with open(&amp;quot;maxd.in&amp;quot;, &amp;quot;r&amp;quot;) as fin:&lt;br /&gt;
        a, b = map(int, fin.readline().split())&lt;br /&gt;
&lt;br /&gt;
    if validare_date(a, b):&lt;br /&gt;
        rezultat = gaseste_numar_cu_max_divizori(a, b)&lt;br /&gt;
        with open(&amp;quot;maxd.out&amp;quot;, &amp;quot;w&amp;quot;) as fout:&lt;br /&gt;
            print(&amp;quot;Datele de intrare corespund restricțiilor impuse.&amp;quot;)&lt;br /&gt;
            fout.write(f&amp;quot;{rezultat[0]} {rezultat[1]} {rezultat[2]}&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>Alexandra Leș</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=1377_-_Max_D&amp;diff=4339</id>
		<title>1377 - Max D</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=1377_-_Max_D&amp;diff=4339"/>
		<updated>2023-04-25T10:46:28Z</updated>

		<summary type="html">&lt;p&gt;Alexandra Leș: /* Date de ieşire */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Enunț ==&lt;br /&gt;
Fiind elev în clasa &#039;&#039;&#039;a IX-a&#039;&#039;&#039;, George, îşi propune să studieze capitolul divizibilitate cât mai bine. Ajungând la numărul de divizori asociat unui număr natural, constată că sunt numere într-un interval dat, cu acelaşi număr de divizori.&lt;br /&gt;
De exemplu, în intervalul &#039;&#039;&#039;[1, 10]&#039;&#039;&#039;, &#039;&#039;&#039;6&#039;&#039;&#039;, &#039;&#039;&#039;8&#039;&#039;&#039; şi &#039;&#039;&#039;10&#039;&#039;&#039; au acelaşi număr de divizori, egal cu &#039;&#039;&#039;4&#039;&#039;&#039;. De asemenea, &#039;&#039;&#039;4&#039;&#039;&#039; şi &#039;&#039;&#039;9&#039;&#039;&#039; au acelaşi număr de divizori, egal cu &#039;&#039;&#039;3&#039;&#039;&#039; etc.&lt;br /&gt;
&lt;br /&gt;
== Cerinţa ==&lt;br /&gt;
Scrieţi un program care pentru un interval dat determină care este cel mai mic număr din interval ce are număr maxim de divizori. Dacă sunt mai multe numere cu această proprietate se cere să se numere câte sunt.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Fişierul de intrare &#039;&#039;&#039;maxd.in&#039;&#039;&#039; conţine pe prima linie două numere &#039;&#039;&#039;a&#039;&#039;&#039; şi &#039;&#039;&#039;b&#039;&#039;&#039; separate prin spaţiu &#039;&#039;&#039;(a≤b)&#039;&#039;&#039; reprezentând extremităţile intervalului.&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 pe un rând nou Fişierul de ieşire &#039;&#039;&#039;maxd.out&#039;&#039;&#039; va conţine pe prima linie trei numere separate prin câte un spaţiu &#039;&#039;&#039;min nrdiv contor&#039;&#039;&#039; cu semnificaţia:&lt;br /&gt;
&#039;&#039;&#039;min&#039;&#039;&#039; – cea mai mică valoare din interval care are număr maxim de divizori&lt;br /&gt;
&#039;&#039;&#039;nrdiv&#039;&#039;&#039; – numărul de divizori ai lui min&lt;br /&gt;
&#039;&#039;&#039;contor&#039;&#039;&#039; – câte numere din intervalul citit mai au acelaşi număr de divizori egal cu nrdiv.&lt;br /&gt;
Î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;
&lt;br /&gt;
== Restricții și precizări ==&lt;br /&gt;
* 1 &amp;lt;= a, b &amp;lt;= 1.000.000.000&lt;br /&gt;
* 0 &amp;lt;= b - a &amp;lt;= 10.000&lt;br /&gt;
== Exemplu ==&lt;br /&gt;
; maxd.in&lt;br /&gt;
: 2 10&lt;br /&gt;
; maxd.out&lt;br /&gt;
: Datele introduse corespund restricțiilor impuse.&lt;br /&gt;
: 6 4 3&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(a, b):&lt;br /&gt;
    if str(a).isdigit() and str(b).isdigit():&lt;br /&gt;
        if 0 &amp;lt; int(a) &amp;lt; int(b) &amp;lt;= 1_000_000_000:&lt;br /&gt;
            return True&lt;br /&gt;
    return False&lt;br /&gt;
#Funcție pentru găsirea numărului din intervalul [a, b] care are cel mai mare număr de divizori și determinarea numărului de numere din interval care au același număr de divizori.&lt;br /&gt;
def gaseste_numar_cu_max_divizori(a, b):&lt;br /&gt;
    nrmax = 0&lt;br /&gt;
    cnt = 0&lt;br /&gt;
    imax = 0&lt;br /&gt;
    for i in range(a, b+1):&lt;br /&gt;
        divizori = 0&lt;br /&gt;
        for j in range(1, i+1):&lt;br /&gt;
            if i % j == 0:&lt;br /&gt;
                divizori += 1&lt;br /&gt;
        if divizori &amp;gt; nrmax:&lt;br /&gt;
            nrmax = divizori&lt;br /&gt;
            imax = i&lt;br /&gt;
            cnt = 1&lt;br /&gt;
        elif divizori == nrmax:&lt;br /&gt;
            cnt += 1&lt;br /&gt;
    return (imax, nrmax, cnt)&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    with open(&amp;quot;maxd.in&amp;quot;, &amp;quot;r&amp;quot;) as fin:&lt;br /&gt;
        a, b = map(int, fin.readline().split())&lt;br /&gt;
&lt;br /&gt;
    if validare_date(a, b):&lt;br /&gt;
        rezultat = gaseste_numar_cu_max_divizori(a, b)&lt;br /&gt;
        with open(&amp;quot;maxd.out&amp;quot;, &amp;quot;w&amp;quot;) as fout:&lt;br /&gt;
            print(&amp;quot;Datele de intrare corespund restricțiilor impuse.&amp;quot;)&lt;br /&gt;
            fout.write(f&amp;quot;{rezultat[0]} {rezultat[1]} {rezultat[2]}&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>Alexandra Leș</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=3118_-_Tort_O&amp;diff=4336</id>
		<title>3118 - Tort O</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=3118_-_Tort_O&amp;diff=4336"/>
		<updated>2023-04-25T10:42:16Z</updated>

		<summary type="html">&lt;p&gt;Alexandra Leș: /* Exemplu */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cerinţa ==&lt;br /&gt;
Un tort dreptunghiular de dimensiuni &#039;&#039;&#039;MxN&#039;&#039;&#039; trebuie împărţit în porţii pătrate de aceeaşi mărime. Găsiţi numărul minim de porţii care se pot obţine şi dimensiunea &#039;&#039;&#039;L&#039;&#039;&#039; a acestora. Atât dimensiunile dreptunghiului cât şi ale pătratelor în care se împarte sunt numere întregi.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Fişierul de intrare &#039;&#039;&#039;tort.in&#039;&#039;&#039; va conţine pe prima linie numerele &#039;&#039;&#039;M&#039;&#039;&#039; şi &#039;&#039;&#039;N&#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 pe un rând nou fişierul de ieşire &#039;&#039;&#039;tort.out&#039;&#039;&#039; va conţine pe o singură linie, două numere naturale separate printr-un spaţiu, primul fiind numărul minim de porţii, iar celălalt dimensiunea &#039;&#039;&#039;L&#039;&#039;&#039;.Î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;
&lt;br /&gt;
== Restricții și precizări ==&lt;br /&gt;
* 1 &amp;amp;les; M &amp;amp;les; N &amp;amp;les; 10000&lt;br /&gt;
== Exemplu ==&lt;br /&gt;
; tort.in&lt;br /&gt;
: 20 24&lt;br /&gt;
; tort.out&lt;br /&gt;
: Datele sunt introduse corect.&lt;br /&gt;
: 30 4&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;
    flag = False&lt;br /&gt;
    if isinstance(n, int):&lt;br /&gt;
        if 0 &amp;lt;= n &amp;lt;= 10_000:&lt;br /&gt;
            flag = True&lt;br /&gt;
    return flag&lt;br /&gt;
&lt;br /&gt;
def cmmdc(M, N):&lt;br /&gt;
    # Funcție care calculează CMMD folosind algoritmul Euclid&lt;br /&gt;
    while N:&lt;br /&gt;
        M, N = N, M % N&lt;br /&gt;
    return M&lt;br /&gt;
&lt;br /&gt;
def numar_minim_patrate(M, N):&lt;br /&gt;
    # Funcție care calculează numărul minim de pătrate și dimensiunea lor&lt;br /&gt;
    divizor_comun = cmmdc(M, N)&lt;br /&gt;
    nr_patrate = (M * N) // (divizor_comun ** 2)&lt;br /&gt;
    dimensiune_patrat = divizor_comun&lt;br /&gt;
    return nr_patrate, dimensiune_patrat&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    with open(&amp;quot;tort.in&amp;quot;) as f:&lt;br /&gt;
        M, N = map(int, f.readline().split())&lt;br /&gt;
&lt;br /&gt;
    if validare_date(M) and validare_date(N):&lt;br /&gt;
        nr_patrate, dimensiune_patrat = numar_minim_patrate(M, N)&lt;br /&gt;
&lt;br /&gt;
        with open(&amp;quot;tort.out&amp;quot;, &amp;quot;w&amp;quot;) as f:&lt;br /&gt;
            f.write(f&amp;quot;{nr_patrate} {dimensiune_patrat}\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;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Alexandra Leș</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=3118_-_Tort_O&amp;diff=4335</id>
		<title>3118 - Tort O</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=3118_-_Tort_O&amp;diff=4335"/>
		<updated>2023-04-25T10:42:03Z</updated>

		<summary type="html">&lt;p&gt;Alexandra Leș: /* Date de ieşire */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cerinţa ==&lt;br /&gt;
Un tort dreptunghiular de dimensiuni &#039;&#039;&#039;MxN&#039;&#039;&#039; trebuie împărţit în porţii pătrate de aceeaşi mărime. Găsiţi numărul minim de porţii care se pot obţine şi dimensiunea &#039;&#039;&#039;L&#039;&#039;&#039; a acestora. Atât dimensiunile dreptunghiului cât şi ale pătratelor în care se împarte sunt numere întregi.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Fişierul de intrare &#039;&#039;&#039;tort.in&#039;&#039;&#039; va conţine pe prima linie numerele &#039;&#039;&#039;M&#039;&#039;&#039; şi &#039;&#039;&#039;N&#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 pe un rând nou fişierul de ieşire &#039;&#039;&#039;tort.out&#039;&#039;&#039; va conţine pe o singură linie, două numere naturale separate printr-un spaţiu, primul fiind numărul minim de porţii, iar celălalt dimensiunea &#039;&#039;&#039;L&#039;&#039;&#039;.Î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;
&lt;br /&gt;
== Restricții și precizări ==&lt;br /&gt;
* 1 &amp;amp;les; M &amp;amp;les; N &amp;amp;les; 10000&lt;br /&gt;
== Exemplu ==&lt;br /&gt;
; tort.in&lt;br /&gt;
: 20 24&lt;br /&gt;
; tort.out&lt;br /&gt;
: Datele introduse corespund restricțiilor impuse.&lt;br /&gt;
: 30 4&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
def validare_date(n):&lt;br /&gt;
    flag = False&lt;br /&gt;
    if isinstance(n, int):&lt;br /&gt;
        if 0 &amp;lt;= n &amp;lt;= 10_000:&lt;br /&gt;
            flag = True&lt;br /&gt;
    return flag&lt;br /&gt;
&lt;br /&gt;
def cmmdc(M, N):&lt;br /&gt;
    # Funcție care calculează CMMD folosind algoritmul Euclid&lt;br /&gt;
    while N:&lt;br /&gt;
        M, N = N, M % N&lt;br /&gt;
    return M&lt;br /&gt;
&lt;br /&gt;
def numar_minim_patrate(M, N):&lt;br /&gt;
    # Funcție care calculează numărul minim de pătrate și dimensiunea lor&lt;br /&gt;
    divizor_comun = cmmdc(M, N)&lt;br /&gt;
    nr_patrate = (M * N) // (divizor_comun ** 2)&lt;br /&gt;
    dimensiune_patrat = divizor_comun&lt;br /&gt;
    return nr_patrate, dimensiune_patrat&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    with open(&amp;quot;tort.in&amp;quot;) as f:&lt;br /&gt;
        M, N = map(int, f.readline().split())&lt;br /&gt;
&lt;br /&gt;
    if validare_date(M) and validare_date(N):&lt;br /&gt;
        nr_patrate, dimensiune_patrat = numar_minim_patrate(M, N)&lt;br /&gt;
&lt;br /&gt;
        with open(&amp;quot;tort.out&amp;quot;, &amp;quot;w&amp;quot;) as f:&lt;br /&gt;
            f.write(f&amp;quot;{nr_patrate} {dimensiune_patrat}\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;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Alexandra Leș</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=3459_-_Count_Prime&amp;diff=4334</id>
		<title>3459 - Count Prime</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=3459_-_Count_Prime&amp;diff=4334"/>
		<updated>2023-04-25T10:40:10Z</updated>

		<summary type="html">&lt;p&gt;Alexandra Leș: /* Exemplu */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cerinţa ==&lt;br /&gt;
Să se calculeze cate numere prime sunt în intervalul &#039;&#039;&#039;[stanga, dreapta]&#039;&#039;&#039;.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Fișierul de intrare &#039;&#039;&#039;countprime.in&#039;&#039;&#039; conține pe prima linie două numere &#039;&#039;&#039;stanga&#039;&#039;&#039; și &#039;&#039;&#039;dreapta&#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:&#039;&#039;&#039;&amp;quot;Datele sunt introduse corect.&amp;quot;&#039;&#039;&#039;, apoi pe un rând nou fișierul de ieșire &#039;&#039;&#039;countprime.out&#039;&#039;&#039; va conține pe prima linie numărul &#039;&#039;&#039;cnt&#039;&#039;&#039;, reprezentând numărul de numere prime din intervalul dat. Î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;
== Restricții și precizări ==&lt;br /&gt;
* 1 &amp;amp;les; stanga &amp;amp;les; dreapta &amp;amp;les; 2 ** 32&lt;br /&gt;
* dreapta - stanga &amp;amp;les; 1.000.000&lt;br /&gt;
== Exemplu ==&lt;br /&gt;
; countprime.in&lt;br /&gt;
: 2 10&lt;br /&gt;
; countprime.out&lt;br /&gt;
: Datele sunt introduse corect.&lt;br /&gt;
&lt;br /&gt;
== Explicație == &lt;br /&gt;
Sunt &#039;&#039;&#039;4&#039;&#039;&#039; numere prime în intervalul &#039;&#039;&#039;[2, 10]&#039;&#039;&#039;.&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
&lt;br /&gt;
def validare_date(stanga, dreapta):&lt;br /&gt;
    flag = False&lt;br /&gt;
    if stanga.isdigit() and dreapta.isdigit(): #verificam daca ambele string-uri pot fi convertite in numere intregi&lt;br /&gt;
        if 0 &amp;lt; int(stanga) &amp;lt; int(dreapta) &amp;lt;= 2 ** 32 and int(dreapta) - int(stanga) &amp;lt;= 1_000_000: #verificam daca cele doua numere se afla in intervalul si au o diferenta mai mica sau egala cu 1.000.000&lt;br /&gt;
            flag = True&lt;br /&gt;
    return flag&lt;br /&gt;
&lt;br /&gt;
def prim(n):&lt;br /&gt;
    #Funcția verifică dacă un număr este prim&lt;br /&gt;
    if n &amp;lt; 2:&lt;br /&gt;
        return False&lt;br /&gt;
    for i in range(2, int(n ** 0.5) + 1):&lt;br /&gt;
        if n % i == 0:&lt;br /&gt;
            return False&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
def câte_prime(stanga, dreapta):&lt;br /&gt;
    #Funcția calculează numărul de numere prime din intervalul [stanga, dreapta]&lt;br /&gt;
    nr = 0&lt;br /&gt;
    for n in range(stanga, dreapta + 1):&lt;br /&gt;
        if prim(n):&lt;br /&gt;
            nr += 1&lt;br /&gt;
    return nr&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    with open(&#039;countprime.in&#039;, &#039;r&#039;) as fin, open(&#039;countprime.out&#039;, &#039;w&#039;) as fout:&lt;br /&gt;
        stanga, dreapta = fin.readline().split() #citim cele doua numere din fișierul de intrare&lt;br /&gt;
&lt;br /&gt;
        if validare_date(stanga, dreapta): #verificăm dacă cele două numere respectă condițiile impuse&lt;br /&gt;
            cnt = câte_prime(int(stanga), int(dreapta)) #calculăm numărul de numere prime din intervalul [stanga, dreapta]&lt;br /&gt;
&lt;br /&gt;
            fout.write(&amp;quot;Datele sunt introduse corect.\n&amp;quot;) #scriem mesajul in fișierul de ieșire&lt;br /&gt;
            fout.write(str(cnt)) #scriem in fisierul de ieșire numărul de numere prime&lt;br /&gt;
&lt;br /&gt;
        else:&lt;br /&gt;
            fout.write(&amp;quot;Datele introduse nu  corespund restrictiilor impuse.&amp;quot;)#în cazul în care nu sunt respectate condițiile impuse afișăm mesajul corespunzător&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Alexandra Leș</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=0268_-_Div_K&amp;diff=4333</id>
		<title>0268 - Div K</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=0268_-_Div_K&amp;diff=4333"/>
		<updated>2023-04-25T10:39:04Z</updated>

		<summary type="html">&lt;p&gt;Alexandra Leș: /* Exemplu */&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 şi un număr natural &#039;&#039;&#039;k&#039;&#039;&#039;. Afişaţi acele numere date care au cel puţin &#039;&#039;&#039;k&#039;&#039;&#039; divizori.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Fişierul de intrare &#039;&#039;&#039;divk.in&#039;&#039;&#039; conţine pe prima linie numerele &#039;&#039;&#039;n&#039;&#039;&#039; şi &#039;&#039;&#039;k&#039;&#039;&#039;, iar pe a doua linie &#039;&#039;&#039;n&#039;&#039;&#039; numere naturale separate prin spaţii.&lt;br /&gt;
== Date de ieşire ==&lt;br /&gt;
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 un rând nou fişierul de ieşire &#039;&#039;&#039;divk.out&#039;&#039;&#039; va conţine pe prima linie numerele care au cel puţin &#039;&#039;&#039;k&#039;&#039;&#039; divizori, separate printr-un spaţiu, în ordinea în care au fost citite. Î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;
== Restricții și precizări ==&lt;br /&gt;
* 1 &amp;amp;les; n &amp;amp;les; 100&lt;br /&gt;
* numerele de pe a doua linie a fişierului de intrare, precum şi k vor avea cel mult 9 cifre&lt;br /&gt;
== Exemplu ==&lt;br /&gt;
; divk.in&lt;br /&gt;
: 6 5&lt;br /&gt;
: 100 9 400 56 7 10&lt;br /&gt;
; divk.out&lt;br /&gt;
: Datele sunt introduse corect.&lt;br /&gt;
: 100 400 56&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;
# Funcție care verifică dacă sunt respectate restricțiile impuse&lt;br /&gt;
def validare_date_numar(numar):&lt;br /&gt;
    flag = False&lt;br /&gt;
    if numar.isdigit(): # Verificăm dacă toate caracterele sunt cifre&lt;br /&gt;
        if 0 &amp;lt;= int(numar) &amp;lt;= 1_000_000_000: # Verificăm dacă numărul este în intervalul permis&lt;br /&gt;
            flag = True&lt;br /&gt;
    return flag&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Funcție care verifică dacă sunt respectate restricțiile impuse&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: # Verificăm dacă numărul este în intervalul permis&lt;br /&gt;
        flag = True&lt;br /&gt;
    return flag&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Funcție care găsește toate numerele dintr-o listă cu cel puțin k divizori&lt;br /&gt;
def numere_cu_k_divizori(n, k, numere):&lt;br /&gt;
    rezultat = []&lt;br /&gt;
&lt;br /&gt;
    for nr in numere:&lt;br /&gt;
        divizori = 0&lt;br /&gt;
        rad_nr = int(math.sqrt(nr)) # Calculează radicalul numărului&lt;br /&gt;
&lt;br /&gt;
        # Numărăm divizorii până la radicalul numărului&lt;br /&gt;
        for i in range(1, rad_nr + 1):&lt;br /&gt;
            if nr % i == 0:&lt;br /&gt;
                divizori += 2 # Adăugăm doi divizori la numărul total (i și nr // i)&lt;br /&gt;
                if i == nr // i:&lt;br /&gt;
                    divizori -= 1 # Dacă divizorii sunt egali, eliminăm unul din total&lt;br /&gt;
&lt;br /&gt;
        if divizori &amp;gt;= k:&lt;br /&gt;
            rezultat.append(nr)&lt;br /&gt;
&lt;br /&gt;
    return rezultat&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    with open(&#039;divk.in&#039;, &#039;r&#039;) as f_in:&lt;br /&gt;
        n, k = map(int, f_in.readline().split()) # Citim n și k din fișierul de intrare&lt;br /&gt;
    if not validare_date_numere(n):&lt;br /&gt;
        with open(&#039;div.out&#039;, &#039;w&#039;) as f_out:&lt;br /&gt;
            f_out.write(&amp;quot;\nDatele nu corespund restricțiilor impuse.\n&amp;quot;)&lt;br /&gt;
            exit()&lt;br /&gt;
&lt;br /&gt;
    else:&lt;br /&gt;
        with open(&#039;divk.in&#039;, &#039;r&#039;) as f:&lt;br /&gt;
            n, k = map(int, f.readline().split()) # Citim din nou n și k din fișierul de intrare&lt;br /&gt;
            numere = list(map(int, f.readline().split())) # Citim lista de numere&lt;br /&gt;
&lt;br /&gt;
        rezultat = numere_cu_k_divizori(n, k, numere) # Calculăm rezultatul&lt;br /&gt;
&lt;br /&gt;
        with open(&#039;divk.out&#039;, &#039;w&#039;) as f:&lt;br /&gt;
            f.write(&amp;quot;Datele sunt introduse corect.\n&amp;quot;)&lt;br /&gt;
            f.write(&#039; &#039;.join(map(str, rezultat))) # Scriem rezultatul în fișierul de ieșire&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Alexandra Leș</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=0306_-_Zerouri&amp;diff=4330</id>
		<title>0306 - Zerouri</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=0306_-_Zerouri&amp;diff=4330"/>
		<updated>2023-04-25T10:38:10Z</updated>

		<summary type="html">&lt;p&gt;Alexandra Leș: /* Exemplu */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cerinţa ==&lt;br /&gt;
Se dau &#039;&#039;&#039;n&#039;&#039;&#039; numere naturale nenule. Calculaţi numărul de zerouri de la sfârşitul scrierii zecimale a produsului 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;
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 un rând nou numărul &#039;&#039;&#039;NRZ&#039;&#039;&#039;, reprezentând valoarea calculată.Î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;
* 0 &amp;amp;les; n &amp;amp;les; 100&lt;br /&gt;
* 0 &amp;amp;les; n &amp;amp;les; 1.000.000.000&lt;br /&gt;
== Exemplu ==&lt;br /&gt;
; Intrare&lt;br /&gt;
: 5&lt;br /&gt;
: 10 24 37 46 75&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele sunt introduse corect.&lt;br /&gt;
: 3&lt;br /&gt;
&lt;br /&gt;
== Explicație == &lt;br /&gt;
Produsul celor 5 numere este &#039;&#039;&#039;30636000&#039;&#039;&#039;, şi se termină cu &#039;&#039;&#039;3&#039;&#039;&#039; zerouri.&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
# Funcție pentru validarea numărului de intrare &lt;br /&gt;
def validare_date_numar(numar):&lt;br /&gt;
    flag = False&lt;br /&gt;
    if numar.isdigit():  # verifică dacă numărul este un întreg pozitiv&lt;br /&gt;
        if 0 &amp;lt; int(numar) &amp;lt;= 100:  # verifică dacă numărul se află în intervalul specificat&lt;br /&gt;
            flag = True  # dacă toate condițiile sunt îndeplinite, returnează &#039;True&#039;&lt;br /&gt;
    return flag&lt;br /&gt;
&lt;br /&gt;
# Funcție pentru validarea listei de numere de intrare&lt;br /&gt;
def validare_date_numere(n, numere):&lt;br /&gt;
    flag = False&lt;br /&gt;
    if len(numere) == n and all(num.isdigit() and int(num) &amp;gt; 0 for num in numere):&lt;br /&gt;
        # verifică dacă lista conține exact n numere întregi pozitive&lt;br /&gt;
        flag = True&lt;br /&gt;
    return flag&lt;br /&gt;
&lt;br /&gt;
# Funcție pentru calculul numărului de zerouri dintr-un număr dat&lt;br /&gt;
def nr_zerouri(numar):&lt;br /&gt;
    NRZ = 0&lt;br /&gt;
    while numar % 10 == 0:&lt;br /&gt;
        NRZ += 1&lt;br /&gt;
        numar //= 10&lt;br /&gt;
    return NRZ&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    n = input()  # primește numărul de intrare &#039;n&#039; de la utilizator&lt;br /&gt;
    if validare_date_numar(n):  # verifică dacă &#039;n&#039; este valid&lt;br /&gt;
        n = int(n)&lt;br /&gt;
        numere = input().split()  # primește lista de &#039;n&#039; numere de la utilizator&lt;br /&gt;
        if validare_date_numere(n, numere):  # verifică dacă lista de numere este validă&lt;br /&gt;
            print(&amp;quot;\nDatele sunt introduse corect.\n&amp;quot;)&lt;br /&gt;
            produs = 1&lt;br /&gt;
            for num in numere:&lt;br /&gt;
                produs *= int(num)  # calculează produsul numerelor din listă&lt;br /&gt;
            NRZ = nr_zerouri(produs)  # calculează numărul de zerouri din produs&lt;br /&gt;
            print(NRZ)  # afișează numărul de zerouri&lt;br /&gt;
        else:&lt;br /&gt;
            print(&amp;quot;Datele nu corespund restrictiilor impuse.&amp;quot;)&lt;br /&gt;
    else:&lt;br /&gt;
        print(&amp;quot;Datele nu corespund restrictiilor impuse.&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Alexandra Leș</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=0794_-_Serpuire&amp;diff=4315</id>
		<title>0794 - Serpuire</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=0794_-_Serpuire&amp;diff=4315"/>
		<updated>2023-04-25T10:08:00Z</updated>

		<summary type="html">&lt;p&gt;Alexandra Leș: /* Rezolvare */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cerinţa ==&lt;br /&gt;
Se dă o matrice cu &#039;&#039;&#039;n&#039;&#039;&#039; linii şi &#039;&#039;&#039;n&#039;&#039;&#039; coloane şi elemente numere naturale. Să se afișeze elementele prin parcurgerea șerpuită a matricei, începând din elementul de pe prima linie și prima coloană, ca în exemplu.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Programul citește de la tastatură numărul &#039;&#039;&#039;n&#039;&#039;&#039;, iar apoi &#039;&#039;&#039;n*n&#039;&#039;&#039; numere naturale, separate prin spaţii, reprezentând elementele matricei, linie cu linie.&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 un rând nou elementele din matrice în ordinea cerută, separate prin câte un spațiu.Î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;
* 1 &amp;amp;les; n &amp;amp;les; 25&lt;br /&gt;
* elementele matricei vor fi mai mici decât 1.000.000&lt;br /&gt;
== Exemplu ==&lt;br /&gt;
; Date de intrare&lt;br /&gt;
: 4&lt;br /&gt;
: 1  3  4 10&lt;br /&gt;
: 2  5  9 11&lt;br /&gt;
: 6  8 12 15&lt;br /&gt;
: 7 13 14 16&lt;br /&gt;
; Date de ieșire&lt;br /&gt;
: Datele sunt introduse corect.&lt;br /&gt;
: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16&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(n, a):&lt;br /&gt;
    # Verificăm dacă n se află în intervalul dat&lt;br /&gt;
    if n &amp;lt; 1 or n &amp;gt; 25:&lt;br /&gt;
        return False&lt;br /&gt;
&lt;br /&gt;
    # Verificăm dacă toate elementele matricei sunt mai mici decât 1.000.000&lt;br /&gt;
    for i in range(1, n + 1):&lt;br /&gt;
        for j in range(1, n + 1):&lt;br /&gt;
            if a[i][j] &amp;gt;= 1000000:&lt;br /&gt;
                return False&lt;br /&gt;
&lt;br /&gt;
    # Dacă n și elementele matricei sunt valide, returnăm True&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def șerpuire(n, a):&lt;br /&gt;
    rezultat = []&lt;br /&gt;
&lt;br /&gt;
    # Parcurgem matricea în modul cerut&lt;br /&gt;
    for i in range(1, n + 1):&lt;br /&gt;
        if i % 2 == 0:  # in jos&lt;br /&gt;
            for j in range(i, 0, -1):&lt;br /&gt;
                rezultat.append(str(a[j][i - j + 1]))&lt;br /&gt;
        else:  # în sus&lt;br /&gt;
            for j in range(i, 0, -1):&lt;br /&gt;
                rezultat.append(str(a[i - j + 1][j]))&lt;br /&gt;
&lt;br /&gt;
    for j in range(2, n + 1):&lt;br /&gt;
        if j % 2 != n % 2:  # in jos&lt;br /&gt;
            for i in range(n, j - 1, -1):&lt;br /&gt;
                rezultat.append(str(a[n - i + j - 1][i]))&lt;br /&gt;
        else:  # în sus&lt;br /&gt;
            for i in range(n, j - 1, -1):&lt;br /&gt;
                rezultat.append(str(a[i][n - i + j - 1]))&lt;br /&gt;
&lt;br /&gt;
    # Returnăm rezultatul sub forma de șir de caractere cu elementele separate prin spații&lt;br /&gt;
    return &amp;quot; &amp;quot;.join(rezultat)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    # Citim datele de intrare&lt;br /&gt;
    n = int(input())&lt;br /&gt;
    a = [[0 for j in range(n + 1)] for i in range(n + 1)]&lt;br /&gt;
    for i in range(1, n + 1):&lt;br /&gt;
        rând = input().split()&lt;br /&gt;
        for j in range(1, n + 1):&lt;br /&gt;
            a[i][j] = int(rând[j - 1])&lt;br /&gt;
&lt;br /&gt;
    # Verificăm dacă datele sunt valide și afișăm un mesaj corespunzător&lt;br /&gt;
    if validare_date(n, a):&lt;br /&gt;
        print(&amp;quot;\nDatele sunt introduse corect.\n&amp;quot;)&lt;br /&gt;
        # Rezolvăm problema și afișăm rezultatul&lt;br /&gt;
        print(șerpuire(n, a))&lt;br /&gt;
    else:&lt;br /&gt;
        print(&amp;quot;Datele nu corespund restrictiilor impuse.&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Alexandra Leș</name></author>
	</entry>
</feed>