<?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=Csula+Beatrice</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=Csula+Beatrice"/>
	<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/wiki/Special:Contributions/Csula_Beatrice"/>
	<updated>2026-05-01T21:26:04Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.42.1</generator>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=Gazeta_Matematic%C4%83&amp;diff=9525</id>
		<title>Gazeta Matematică</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=Gazeta_Matematic%C4%83&amp;diff=9525"/>
		<updated>2024-01-16T15:35:29Z</updated>

		<summary type="html">&lt;p&gt;Csula Beatrice: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Această pagină conține o listă cu numerele revistei &#039;&#039;[https://gmb.ssmr.ro/ Gazeta Matematică]&#039;&#039; care conțin articole/probleme cu autori membri ai [https://ssmr.cunbm.utcluj.ro/ Filialei Maramureș] a [https://ssmr.ro/ Societății de Științe Matematice din România].&lt;br /&gt;
{| class=&amp;quot;wikitable mw-collapsible&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!Anul&lt;br /&gt;
!Numărul &lt;br /&gt;
!Numărul problemei&lt;br /&gt;
!Clasa&lt;br /&gt;
!Domeniu&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=&amp;quot;13&amp;quot; |2022&lt;br /&gt;
|rowspan=&amp;quot;3&amp;quot;|1 &lt;br /&gt;
| [[28247]]&lt;br /&gt;
|11&lt;br /&gt;
|Matrice&lt;br /&gt;
|-&lt;br /&gt;
| [[28250]]&lt;br /&gt;
|12&lt;br /&gt;
|integrala Riemann&lt;br /&gt;
|-&lt;br /&gt;
| [[28251]]&lt;br /&gt;
|12&lt;br /&gt;
|integrala Riemann&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
| [[S:L22.58]]&lt;br /&gt;
|10&lt;br /&gt;
| ecuație cu logaritmi&lt;br /&gt;
|-&lt;br /&gt;
|4 - [[Gazeta Matematică nr 4 2022|link]]&lt;br /&gt;
| [[28315]]&lt;br /&gt;
|10  &lt;br /&gt;
|numere complexe&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
| [[28338]]&lt;br /&gt;
|10&lt;br /&gt;
|numere complexe&lt;br /&gt;
afixe&lt;br /&gt;
|-&lt;br /&gt;
|6-7-8&lt;br /&gt;
| [[28354]]&lt;br /&gt;
|9&lt;br /&gt;
|vectori&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=&amp;quot;4&amp;quot; |10 - [[Gazeta Matematică nr 10 2022|link]]&lt;br /&gt;
| [[28437]]&lt;br /&gt;
|11&lt;br /&gt;
|șir recurent&lt;br /&gt;
|-&lt;br /&gt;
|[[E:16379]]&lt;br /&gt;
|5&lt;br /&gt;
|numere naturale&lt;br /&gt;
|-&lt;br /&gt;
|[[E:16380]]&lt;br /&gt;
|5&lt;br /&gt;
|puteri &lt;br /&gt;
|-&lt;br /&gt;
|[[E:16382]]&lt;br /&gt;
|5&lt;br /&gt;
|puteri &lt;br /&gt;
|-&lt;br /&gt;
|rowspan=&amp;quot;2&amp;quot;|11 &lt;br /&gt;
| [[E:16407]]&lt;br /&gt;
|5&lt;br /&gt;
|cub perfect&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| [[28450]]&lt;br /&gt;
|9&lt;br /&gt;
|progresii aritmetice&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;8&amp;quot; |2021&lt;br /&gt;
|rowspan = &amp;quot;3&amp;quot; |6-7-8 - [[Gazeta Matematică nr 6-7-8 din 2021|link]]&lt;br /&gt;
|[[E:15990]]&lt;br /&gt;
|5&lt;br /&gt;
|numere naturale&lt;br /&gt;
|-&lt;br /&gt;
| [[E:15991]]&lt;br /&gt;
|5&lt;br /&gt;
|numere naturale&lt;br /&gt;
|-&lt;br /&gt;
| [[E:15992]]&lt;br /&gt;
|5&lt;br /&gt;
|numere naturale&lt;br /&gt;
|-&lt;br /&gt;
|10&lt;br /&gt;
|[[28163]]&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|rowspan= &amp;quot;3&amp;quot; | 11&lt;br /&gt;
|[[28203]]&lt;br /&gt;
|12&lt;br /&gt;
|funcție primitivabilă&lt;br /&gt;
|-&lt;br /&gt;
|[[S:L21.287]]&lt;br /&gt;
|9&lt;br /&gt;
|puteri&lt;br /&gt;
|-&lt;br /&gt;
|[[S:E21.313]]&lt;br /&gt;
|8&lt;br /&gt;
|ecuație&lt;br /&gt;
|-&lt;br /&gt;
|rowspan= &amp;quot;1&amp;quot; | 12&lt;br /&gt;
|[[28208]]&lt;br /&gt;
|9&lt;br /&gt;
|vectori&lt;br /&gt;
|-&lt;br /&gt;
|rowspan =&amp;quot;5&amp;quot;|2020&lt;br /&gt;
|rowspan =&amp;quot;3&amp;quot;| 4 - [[Gazeta Matematică nr 4 2020|link]]&lt;br /&gt;
|[[15698|E:15698]]&lt;br /&gt;
|6&lt;br /&gt;
|pătrate perfecte&lt;br /&gt;
|-&lt;br /&gt;
|[[E:15694]]&lt;br /&gt;
|5&lt;br /&gt;
|teorema împărțirii cu rest&lt;br /&gt;
|-&lt;br /&gt;
|[[E:15695]]&lt;br /&gt;
|5&lt;br /&gt;
|numere naturale&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|[[E:15714]]&lt;br /&gt;
|6&lt;br /&gt;
|divizibilitate &lt;br /&gt;
probabilitate&lt;br /&gt;
|-&lt;br /&gt;
|11&lt;br /&gt;
|[[27930]]&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=&amp;quot;3&amp;quot; |2018&lt;br /&gt;
|rowspan=&amp;quot;3&amp;quot; |4 - [[Gazeta Matematică nr 4 2018|link]]&lt;br /&gt;
| [[S:E18.128]]&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|[[S:E18.131]]&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| [[S:E18.131]]&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2017&lt;br /&gt;
|6-7-8&lt;br /&gt;
|[[27401]]&lt;br /&gt;
|10&lt;br /&gt;
|inegalitate&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=&amp;quot;10&amp;quot; |2015&lt;br /&gt;
|rowspan=&amp;quot;2&amp;quot;|1&lt;br /&gt;
|[[27024]]&lt;br /&gt;
|12&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|[[27020]]&lt;br /&gt;
|10&lt;br /&gt;
|coeficienți binomiali&lt;br /&gt;
|-&lt;br /&gt;
|2 - [[Gazeta Matematică nr 2 2015|link]]&lt;br /&gt;
|[[27036]]&lt;br /&gt;
|11&lt;br /&gt;
|ecuații funcționale&lt;br /&gt;
|-&lt;br /&gt;
|3 - [[Gazeta Matematică nr 2 2015|link]]&lt;br /&gt;
|[[27024]]&lt;br /&gt;
|12&lt;br /&gt;
|ecuații funcționale&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=&amp;quot;6&amp;quot;|9&lt;br /&gt;
|[[E:14892]]&lt;br /&gt;
|8&lt;br /&gt;
|patrulater inscriptibil&lt;br /&gt;
|-&lt;br /&gt;
|[[S:E15.208]]&lt;br /&gt;
|5&lt;br /&gt;
|sumă de numere consecutive &lt;br /&gt;
|-&lt;br /&gt;
|[[S:E15.239]]&lt;br /&gt;
|8&lt;br /&gt;
|Teorema lui Pitagora&lt;br /&gt;
|-&lt;br /&gt;
|[[S:L15.236]]&lt;br /&gt;
|12&lt;br /&gt;
|funcție primitivabilă&lt;br /&gt;
|-&lt;br /&gt;
|[[S:L15.231]]&lt;br /&gt;
|12&lt;br /&gt;
|limita unui șir&lt;br /&gt;
|-&lt;br /&gt;
|[[S:L15.228]]&lt;br /&gt;
|11&lt;br /&gt;
|limita unui șir&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
|2014&lt;br /&gt;
|1&lt;br /&gt;
|[[14682]]&lt;br /&gt;
|6&lt;br /&gt;
|Geometrie&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=&amp;quot;2&amp;quot;| 2013&lt;br /&gt;
|rowspan=&amp;quot;2&amp;quot;|1&lt;br /&gt;
|[[26713]]&lt;br /&gt;
|11&lt;br /&gt;
|șiruri, limită&lt;br /&gt;
|-&lt;br /&gt;
|E:[[14440]]&lt;br /&gt;
|5&lt;br /&gt;
|pătrat perfect&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=&amp;quot;4&amp;quot;| 2012&lt;br /&gt;
|rowspan=&amp;quot;2&amp;quot;|4&lt;br /&gt;
|[[E:14336]]&lt;br /&gt;
|&lt;br /&gt;
|ecuație funcțională&lt;br /&gt;
|-&lt;br /&gt;
|[[E:14331]]&lt;br /&gt;
| 7 &amp;amp; 8&lt;br /&gt;
|numere prime&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=&amp;quot;2&amp;quot;|9 - [[Gazeta Matematică nr 9 2012|link]]&lt;br /&gt;
|E:[[14380]]&lt;br /&gt;
|5&lt;br /&gt;
|numere naturale&lt;br /&gt;
|-&lt;br /&gt;
|[[14383|E:14383]]&lt;br /&gt;
|6&lt;br /&gt;
|cmmdc &amp;amp; cmmmc&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=&amp;quot;2&amp;quot;| 2011&lt;br /&gt;
|rowspan=&amp;quot;2&amp;quot;|7-8-9 - [[Gazeta Matematică nr 789 2011|link]]&lt;br /&gt;
|[[E:14223]]&lt;br /&gt;
|7&lt;br /&gt;
|rezolvarea triunghiului&lt;br /&gt;
|-&lt;br /&gt;
|[[E:14228]]&lt;br /&gt;
|7&lt;br /&gt;
|radicali&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Csula Beatrice</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=Gazeta_Matematic%C4%83&amp;diff=9524</id>
		<title>Gazeta Matematică</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=Gazeta_Matematic%C4%83&amp;diff=9524"/>
		<updated>2024-01-16T15:32:24Z</updated>

		<summary type="html">&lt;p&gt;Csula Beatrice: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Această pagină conține o listă cu numerele revistei &#039;&#039;[https://gmb.ssmr.ro/ Gazeta Matematică]&#039;&#039; care conțin articole/probleme cu autori membri ai [https://ssmr.cunbm.utcluj.ro/ Filialei Maramureș] a [https://ssmr.ro/ Societății de Științe Matematice din România].&lt;br /&gt;
{| class=&amp;quot;wikitable mw-collapsible&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!Anul&lt;br /&gt;
!Numărul &lt;br /&gt;
!Numărul problemei&lt;br /&gt;
!Clasa&lt;br /&gt;
!Domeniu&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=&amp;quot;13&amp;quot; |2022&lt;br /&gt;
|rowspan=&amp;quot;3&amp;quot;|1 &lt;br /&gt;
| [[28247]]&lt;br /&gt;
|11&lt;br /&gt;
|Matrice&lt;br /&gt;
|-&lt;br /&gt;
| [[28250]]&lt;br /&gt;
|12&lt;br /&gt;
|integrala Riemann&lt;br /&gt;
|-&lt;br /&gt;
| [[28251]]&lt;br /&gt;
|12&lt;br /&gt;
|integrala Riemann&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
| [[S:L22.58]]&lt;br /&gt;
|10&lt;br /&gt;
| ecuație cu logaritmi&lt;br /&gt;
|-&lt;br /&gt;
|4 - [[Gazeta Matematică nr 4 2022|link]]&lt;br /&gt;
| [[28315]]&lt;br /&gt;
|10  &lt;br /&gt;
|numere complexe&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
| [[28338]]&lt;br /&gt;
|10&lt;br /&gt;
|numere complexe&lt;br /&gt;
afixe&lt;br /&gt;
|-&lt;br /&gt;
|6-7-8&lt;br /&gt;
| [[28354]]&lt;br /&gt;
|9&lt;br /&gt;
|vectori&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=&amp;quot;4&amp;quot; |10 - [[Gazeta Matematică nr 10 2022|link]]&lt;br /&gt;
| [[28437]]&lt;br /&gt;
|11&lt;br /&gt;
|șir recurent&lt;br /&gt;
|-&lt;br /&gt;
|[[E:16379]]&lt;br /&gt;
|5&lt;br /&gt;
|numere naturale&lt;br /&gt;
|-&lt;br /&gt;
|[[E:16380]]&lt;br /&gt;
|5&lt;br /&gt;
|puteri &lt;br /&gt;
|-&lt;br /&gt;
|[[E:16382]]&lt;br /&gt;
|5&lt;br /&gt;
|puteri &lt;br /&gt;
|-&lt;br /&gt;
|rowspan=&amp;quot;2&amp;quot;|11 &lt;br /&gt;
| [[E:16407]]&lt;br /&gt;
|5&lt;br /&gt;
|cub perfect&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| [[28450]]&lt;br /&gt;
|9&lt;br /&gt;
|progresii aritmetice&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;8&amp;quot; |2021&lt;br /&gt;
|rowspan = &amp;quot;3&amp;quot; |6-7-8 - [[Gazeta Matematică nr 6-7-8 din 2021|link]]&lt;br /&gt;
|[[E:15990]]&lt;br /&gt;
|5&lt;br /&gt;
|numere naturale&lt;br /&gt;
|-&lt;br /&gt;
| [[E:15991]]&lt;br /&gt;
|5&lt;br /&gt;
|numere naturale&lt;br /&gt;
|-&lt;br /&gt;
| [[E:15992]]&lt;br /&gt;
|5&lt;br /&gt;
|numere naturale&lt;br /&gt;
|-&lt;br /&gt;
|10&lt;br /&gt;
|28163&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|rowspan= &amp;quot;3&amp;quot; | 11&lt;br /&gt;
|[[28203]]&lt;br /&gt;
|12&lt;br /&gt;
|funcție primitivabilă&lt;br /&gt;
|-&lt;br /&gt;
|[[S:L21.287]]&lt;br /&gt;
|9&lt;br /&gt;
|puteri&lt;br /&gt;
|-&lt;br /&gt;
|[[S:E21.313]]&lt;br /&gt;
|8&lt;br /&gt;
|ecuație&lt;br /&gt;
|-&lt;br /&gt;
|rowspan= &amp;quot;1&amp;quot; | 12&lt;br /&gt;
|[[28208]]&lt;br /&gt;
|9&lt;br /&gt;
|vectori&lt;br /&gt;
|-&lt;br /&gt;
|rowspan =&amp;quot;5&amp;quot;|2020&lt;br /&gt;
|rowspan =&amp;quot;3&amp;quot;| 4 - [[Gazeta Matematică nr 4 2020|link]]&lt;br /&gt;
|[[15698|E:15698]]&lt;br /&gt;
|6&lt;br /&gt;
|pătrate perfecte&lt;br /&gt;
|-&lt;br /&gt;
|[[E:15694]]&lt;br /&gt;
|5&lt;br /&gt;
|teorema împărțirii cu rest&lt;br /&gt;
|-&lt;br /&gt;
|[[E:15695]]&lt;br /&gt;
|5&lt;br /&gt;
|numere naturale&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|[[E:15714]]&lt;br /&gt;
|6&lt;br /&gt;
|divizibilitate &lt;br /&gt;
probabilitate&lt;br /&gt;
|-&lt;br /&gt;
|11&lt;br /&gt;
|[[27930]]&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=&amp;quot;3&amp;quot; |2018&lt;br /&gt;
|rowspan=&amp;quot;3&amp;quot; |4 - [[Gazeta Matematică nr 4 2018|link]]&lt;br /&gt;
| [[S:E18.128]]&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|[[S:E18.131]]&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| [[S:E18.131]]&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2017&lt;br /&gt;
|6-7-8&lt;br /&gt;
|[[27401]]&lt;br /&gt;
|10&lt;br /&gt;
|inegalitate&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=&amp;quot;10&amp;quot; |2015&lt;br /&gt;
|rowspan=&amp;quot;2&amp;quot;|1&lt;br /&gt;
|[[27024]]&lt;br /&gt;
|12&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|[[27020]]&lt;br /&gt;
|10&lt;br /&gt;
|coeficienți binomiali&lt;br /&gt;
|-&lt;br /&gt;
|2 - [[Gazeta Matematică nr 2 2015|link]]&lt;br /&gt;
|[[27036]]&lt;br /&gt;
|11&lt;br /&gt;
|ecuații funcționale&lt;br /&gt;
|-&lt;br /&gt;
|3 - [[Gazeta Matematică nr 2 2015|link]]&lt;br /&gt;
|[[27024]]&lt;br /&gt;
|12&lt;br /&gt;
|ecuații funcționale&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=&amp;quot;6&amp;quot;|9&lt;br /&gt;
|[[E:14892]]&lt;br /&gt;
|8&lt;br /&gt;
|patrulater inscriptibil&lt;br /&gt;
|-&lt;br /&gt;
|[[S:E15.208]]&lt;br /&gt;
|5&lt;br /&gt;
|sumă de numere consecutive &lt;br /&gt;
|-&lt;br /&gt;
|[[S:E15.239]]&lt;br /&gt;
|8&lt;br /&gt;
|Teorema lui Pitagora&lt;br /&gt;
|-&lt;br /&gt;
|[[S:L15.236]]&lt;br /&gt;
|12&lt;br /&gt;
|funcție primitivabilă&lt;br /&gt;
|-&lt;br /&gt;
|[[S:L15.231]]&lt;br /&gt;
|12&lt;br /&gt;
|limita unui șir&lt;br /&gt;
|-&lt;br /&gt;
|[[S:L15.228]]&lt;br /&gt;
|11&lt;br /&gt;
|limita unui șir&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
|2014&lt;br /&gt;
|1&lt;br /&gt;
|[[14682]]&lt;br /&gt;
|6&lt;br /&gt;
|Geometrie&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=&amp;quot;2&amp;quot;| 2013&lt;br /&gt;
|rowspan=&amp;quot;2&amp;quot;|1&lt;br /&gt;
|[[26713]]&lt;br /&gt;
|11&lt;br /&gt;
|șiruri, limită&lt;br /&gt;
|-&lt;br /&gt;
|E:[[14440]]&lt;br /&gt;
|5&lt;br /&gt;
|pătrat perfect&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=&amp;quot;4&amp;quot;| 2012&lt;br /&gt;
|rowspan=&amp;quot;2&amp;quot;|4&lt;br /&gt;
|[[E:14336]]&lt;br /&gt;
|&lt;br /&gt;
|ecuație funcțională&lt;br /&gt;
|-&lt;br /&gt;
|[[E:14331]]&lt;br /&gt;
| 7 &amp;amp; 8&lt;br /&gt;
|numere prime&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=&amp;quot;2&amp;quot;|9 - [[Gazeta Matematică nr 9 2012|link]]&lt;br /&gt;
|E:[[14380]]&lt;br /&gt;
|5&lt;br /&gt;
|numere naturale&lt;br /&gt;
|-&lt;br /&gt;
|[[14383|E:14383]]&lt;br /&gt;
|6&lt;br /&gt;
|cmmdc &amp;amp; cmmmc&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=&amp;quot;2&amp;quot;| 2011&lt;br /&gt;
|rowspan=&amp;quot;2&amp;quot;|7-8-9 - [[Gazeta Matematică nr 789 2011|link]]&lt;br /&gt;
|[[E:14223]]&lt;br /&gt;
|7&lt;br /&gt;
|rezolvarea triunghiului&lt;br /&gt;
|-&lt;br /&gt;
|[[E:14228]]&lt;br /&gt;
|7&lt;br /&gt;
|radicali&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Csula Beatrice</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=28163&amp;diff=9523</id>
		<title>28163</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=28163&amp;diff=9523"/>
		<updated>2024-01-16T15:30:03Z</updated>

		<summary type="html">&lt;p&gt;Csula Beatrice: Pagină nouă: &amp;#039;&amp;#039;&amp;#039;28163 (Dana Heuberger)&amp;#039;&amp;#039;&amp;#039; &amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt; &amp;#039;&amp;#039;Aflați șirul de numere naturale nenule &amp;lt;math&amp;gt;(a_n)_{n\geq1}&amp;lt;/math&amp;gt; pentru care &amp;lt;math&amp;gt;\frac{1}{{(1+a_1) \cdot a_{a_1}}} + \frac{1}{{(1+a_2) \cdot a_{a_2}}} + \ldots + \frac{1}{{(1+a_n) \cdot a_{a_n}}} = \frac{n}{{n+1}}&amp;lt;/math&amp;gt;, pentru orice &amp;lt;math&amp;gt;n \geq 1&amp;lt;/math&amp;gt;.&amp;#039;&amp;#039; &amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt; &amp;#039;&amp;#039;&amp;#039;Soluție:&amp;#039;&amp;#039;&amp;#039;   Dacă &amp;lt;math&amp;gt;n = 1&amp;lt;/math&amp;gt;, egalitatea din enunț devine &amp;lt;math&amp;gt;(1+a_1) \cdot a_{a_1} = 2&amp;lt;/math&amp;gt;, de unde obținem &amp;lt;math&amp;gt;a_1 = 1&amp;lt;/math&amp;gt;. &amp;lt;/b...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;28163 (Dana Heuberger)&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;Aflați șirul de numere naturale nenule &amp;lt;math&amp;gt;(a_n)_{n\geq1}&amp;lt;/math&amp;gt; pentru care&lt;br /&gt;
&amp;lt;math&amp;gt;\frac{1}{{(1+a_1) \cdot a_{a_1}}} + \frac{1}{{(1+a_2) \cdot a_{a_2}}} + \ldots + \frac{1}{{(1+a_n) \cdot a_{a_n}}} = \frac{n}{{n+1}}&amp;lt;/math&amp;gt;, pentru orice &amp;lt;math&amp;gt;n \geq 1&amp;lt;/math&amp;gt;.&#039;&#039;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Soluție:&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
Dacă &amp;lt;math&amp;gt;n = 1&amp;lt;/math&amp;gt;, egalitatea din enunț devine &amp;lt;math&amp;gt;(1+a_1) \cdot a_{a_1} = 2&amp;lt;/math&amp;gt;, de unde obținem &amp;lt;math&amp;gt;a_1 = 1&amp;lt;/math&amp;gt;.&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
Dacă &amp;lt;math&amp;gt;n \geq 2&amp;lt;/math&amp;gt;, scriind egalitatea din enunț pentru &amp;lt;math&amp;gt;n-1&amp;lt;/math&amp;gt; și scăzând-o din relația inițială, obținem &lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;\frac{1}{{(1+a_n) \cdot a_{a_n}}} = \frac{n}{{n+1}} - \frac{n-1}{n} = \frac{1}{{n(n+1)}}&amp;lt;/math&amp;gt;, deci &amp;lt;/br&amp;gt;&amp;lt;/br&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;(1+a_n) \cdot a_{a_n} = n(n+1)&amp;lt;/math&amp;gt; pentru orice &amp;lt;math&amp;gt;n \in \mathbb{N}&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;n \geq 2&amp;lt;/math&amp;gt;.    (1)&lt;br /&gt;
&lt;br /&gt;
Demonstrăm, folosind inducția &#039;&#039;tare&#039;&#039;, că &amp;lt;math&amp;gt;a_n = n&amp;lt;/math&amp;gt;, pentru orice număr natural nenul &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;. Etapa de verificare este evidentă.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Fie &amp;lt;math&amp;gt;k \in \mathbb{N}&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;k \geq 2&amp;lt;/math&amp;gt;. Presupunem că &amp;lt;math&amp;gt;a_t = t&amp;lt;/math&amp;gt;, pentru orice număr natural &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt; cu &amp;lt;math&amp;gt;t \in \{1,2,...,k-1\}&amp;lt;/math&amp;gt; și arătăm că &amp;lt;math&amp;gt;a_k = k&amp;lt;/math&amp;gt;.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;I.&#039;&#039;&#039; Dacă &amp;lt;math&amp;gt;a_k = s &amp;lt; k&amp;lt;/math&amp;gt;, din ipoteza de inducție rezultă &amp;lt;math&amp;gt;a_{a_k} = a_s = s &amp;lt; k&amp;lt;/math&amp;gt;. Din relația (1) obținem &amp;lt;math&amp;gt;k(k+1) = (1+a_k) \cdot a_{a_k} = s(s+1) &amp;lt; k(k+1)&amp;lt;/math&amp;gt;, fals.&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;II.&#039;&#039;&#039; Dacă &amp;lt;math&amp;gt;a_k = s &amp;gt; k&amp;lt;/math&amp;gt;, din (1) deducem:&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
a_s = a_{a_k} = \frac{k(k+1)}{1+a_k} = \frac{k(k+1)}{s+1},&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
deci &amp;lt;math&amp;gt;a_s = k \cdot \frac{k+1}{s+1} &amp;lt; k&amp;lt;/math&amp;gt;. (2)&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
Din ipoteza de inducție rezultă că &amp;lt;math&amp;gt;a_{a_s} = a_s = \frac{k(k+1)}{s+1}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
Din relația (1) obținem că &amp;lt;math&amp;gt;a_{a_s} = \frac{s(s+1)}{a_s+1}&amp;lt;/math&amp;gt;, deci &amp;lt;math&amp;gt;\frac{k(k+1)}{s+1} = \frac{s(s+1)}{1+a_s}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
Așadar, &amp;lt;math&amp;gt;1+a_s = \frac{s(s+1)}{k(k+1)} \cdot (s+1) &amp;gt; s+1&amp;lt;/math&amp;gt;, adică &amp;lt;math&amp;gt;a_s &amp;gt; s &amp;gt; k&amp;lt;/math&amp;gt;, contradicție cu inegalitatea (2).&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Din &#039;&#039;&#039;I&#039;&#039;&#039; și &#039;&#039;&#039;II&#039;&#039;&#039; deducem că &amp;lt;math&amp;gt;a_k = k&amp;lt;/math&amp;gt;. Conform principiului inducției, rezultă că &amp;lt;math&amp;gt;a_n = n&amp;lt;/math&amp;gt;, pentru orice număr natural &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;. Pentru acest șir, egalitatea din enunț devine o identitate, așadar soluția problemei este șirul cu termenul general &amp;lt;math&amp;gt;a_n = n&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&amp;lt;/br&amp;gt;&amp;lt;/br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Csula Beatrice</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=14440&amp;diff=9284</id>
		<title>14440</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=14440&amp;diff=9284"/>
		<updated>2024-01-08T23:03:03Z</updated>

		<summary type="html">&lt;p&gt;Csula Beatrice: Pagină nouă: &amp;#039;&amp;#039;&amp;#039;14440 (Vasile Ienuțaș și Radu Pop)&amp;#039;&amp;#039;&amp;#039; &amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt; &amp;#039;&amp;#039;Se consideră numărul natural &amp;lt;math&amp;gt; A=a_1^2+a_2^2+a_3^2+.....+a_{2012}^2 &amp;lt;/math&amp;gt; unde &amp;lt;math&amp;gt;a_1,a_2,a_3,.....,a_{2012}&amp;lt;/math&amp;gt; sunt numere prime, mai mari sau egale cu 5. Arătați că &amp;lt;math&amp;gt;B=2 \cdot A + 2013 &amp;lt;/math&amp;gt; nu este pătrat perfect.&amp;#039;&amp;#039; &amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt; &amp;#039;&amp;#039;&amp;#039;Soluție:&amp;#039;&amp;#039;&amp;#039;  Dacă &amp;lt;math&amp;gt;a_i&amp;lt;/math&amp;gt;, cu &amp;lt;math&amp;gt;i \in \{1,2,3,\ldots,2012\}&amp;lt;/math&amp;gt;, este număr prim mai mare decât 5, atunci &amp;lt;math&amp;gt;a_i^2 \equiv M8 + 1&amp;lt;/math...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;14440 (Vasile Ienuțaș și Radu Pop)&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;Se consideră numărul natural &amp;lt;math&amp;gt; A=a_1^2+a_2^2+a_3^2+.....+a_{2012}^2 &amp;lt;/math&amp;gt; unde &amp;lt;math&amp;gt;a_1,a_2,a_3,.....,a_{2012}&amp;lt;/math&amp;gt; sunt numere prime, mai mari sau egale cu 5.&lt;br /&gt;
Arătați că &amp;lt;math&amp;gt;B=2 \cdot A + 2013 &amp;lt;/math&amp;gt; nu este pătrat perfect.&#039;&#039;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Soluție:&#039;&#039;&#039; &lt;br /&gt;
Dacă &amp;lt;math&amp;gt;a_i&amp;lt;/math&amp;gt;, cu &amp;lt;math&amp;gt;i \in \{1,2,3,\ldots,2012\}&amp;lt;/math&amp;gt;, este număr prim mai mare decât 5, atunci &amp;lt;math&amp;gt;a_i^2 \equiv M8 + 1&amp;lt;/math&amp;gt;, pentru orice &amp;lt;math&amp;gt;i \in \{1,2,3,\ldots,2012\}&amp;lt;/math&amp;gt;. Prin urmare, &amp;lt;math&amp;gt;B = 2 \cdot (M8 + 2012) + 2013 = M8 + 6037 = M8 + 5&amp;lt;/math&amp;gt;, care nu este pătrat perfect.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Csula Beatrice</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=26713&amp;diff=9197</id>
		<title>26713</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=26713&amp;diff=9197"/>
		<updated>2024-01-08T03:07:37Z</updated>

		<summary type="html">&lt;p&gt;Csula Beatrice: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;26713 (Radu Pop și Vasile Ienuțaș)&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&amp;lt;br /&amp;gt;Se consideră șirul de numere reale &amp;lt;math&amp;gt;(x_n)_{n \geq 0}&amp;lt;/math&amp;gt; și &amp;lt;math&amp;gt;(y_n)_{n \geq 0}&amp;lt;/math&amp;gt; cu &amp;lt;math&amp;gt;x_n \geq 1&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;y_n \geq 1&amp;lt;/math&amp;gt;, pentru orice &amp;lt;math&amp;gt;n \in \mathbb{N}&amp;lt;/math&amp;gt;, și &amp;lt;math&amp;gt;\lim_{{n \to \infty}} (x_n^2 + y_n^2) = 2&amp;lt;/math&amp;gt;. Să se calculeze &amp;lt;math&amp;gt;\lim_{{n \to \infty}} x_n&amp;lt;/math&amp;gt; și &amp;lt;math&amp;gt;\lim_{{n \to \infty}} y_n&amp;lt;/math&amp;gt;.&#039;&#039;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Soluție:&#039;&#039;&#039; &lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Avem &amp;lt;math&amp;gt; 2 \leq x_n - y_n \leq \sqrt{2(x_n^2 + y_n^2)} &amp;lt;/math&amp;gt; și cum &amp;lt;math&amp;gt; \lim_{{n \to \infty}} \sqrt{2(x_n^2 + y_n^2)} = 2 &amp;lt;/math&amp;gt;, rezultă că &amp;lt;math&amp;gt; \lim_{{n \to \infty}} (x_n + y_n) = 2 &amp;lt;/math&amp;gt;. Cum &amp;lt;math&amp;gt; 1 \leq x_n \leq x_n + y_n - 1 &amp;lt;/math&amp;gt; și &amp;lt;math&amp;gt; \lim_{{n \to \infty}} (x_n + y_n - 1) = 1 &amp;lt;/math&amp;gt;, obținem &amp;lt;math&amp;gt; \lim_{{n \to \infty}} x_n = 1 &amp;lt;/math&amp;gt;. Analog, &amp;lt;math&amp;gt; \lim_{{n \to \infty}} y_n = 1 &amp;lt;/math&amp;gt;.&lt;/div&gt;</summary>
		<author><name>Csula Beatrice</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=26713&amp;diff=9196</id>
		<title>26713</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=26713&amp;diff=9196"/>
		<updated>2024-01-08T03:05:57Z</updated>

		<summary type="html">&lt;p&gt;Csula Beatrice: Pagină nouă: &amp;#039;&amp;#039;&amp;#039;28354 (Radu Pop și Vasile Ienuțaș)&amp;#039;&amp;#039;&amp;#039; &amp;lt;br /&amp;gt; &amp;#039;&amp;#039;&amp;lt;br /&amp;gt;Se consideră șirul de numere reale &amp;lt;math&amp;gt;(x_n)_{n \geq 0}&amp;lt;/math&amp;gt; și &amp;lt;math&amp;gt;(y_n)_{n \geq 0}&amp;lt;/math&amp;gt; cu &amp;lt;math&amp;gt;x_n \geq 1&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;y_n \geq 1&amp;lt;/math&amp;gt;, pentru orice &amp;lt;math&amp;gt;n \in \mathbb{N}&amp;lt;/math&amp;gt;, și &amp;lt;math&amp;gt;\lim_{{n \to \infty}} (x_n^2 + y_n^2) = 2&amp;lt;/math&amp;gt;. Să se calculeze &amp;lt;math&amp;gt;\lim_{{n \to \infty}} x_n&amp;lt;/math&amp;gt; și &amp;lt;math&amp;gt;\lim_{{n \to \infty}} y_n&amp;lt;/math&amp;gt;.&amp;#039;&amp;#039; &amp;lt;br /&amp;gt; &amp;#039;&amp;#039;&amp;#039;Soluție:&amp;#039;&amp;#039;&amp;#039;  &amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt; Avem &amp;lt;math&amp;gt; 2 \leq x_n...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;28354 (Radu Pop și Vasile Ienuțaș)&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&amp;lt;br /&amp;gt;Se consideră șirul de numere reale &amp;lt;math&amp;gt;(x_n)_{n \geq 0}&amp;lt;/math&amp;gt; și &amp;lt;math&amp;gt;(y_n)_{n \geq 0}&amp;lt;/math&amp;gt; cu &amp;lt;math&amp;gt;x_n \geq 1&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;y_n \geq 1&amp;lt;/math&amp;gt;, pentru orice &amp;lt;math&amp;gt;n \in \mathbb{N}&amp;lt;/math&amp;gt;, și &amp;lt;math&amp;gt;\lim_{{n \to \infty}} (x_n^2 + y_n^2) = 2&amp;lt;/math&amp;gt;. Să se calculeze &amp;lt;math&amp;gt;\lim_{{n \to \infty}} x_n&amp;lt;/math&amp;gt; și &amp;lt;math&amp;gt;\lim_{{n \to \infty}} y_n&amp;lt;/math&amp;gt;.&#039;&#039;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Soluție:&#039;&#039;&#039; &lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Avem &amp;lt;math&amp;gt; 2 \leq x_n - y_n \leq \sqrt{2(x_n^2 + y_n^2)} &amp;lt;/math&amp;gt; și cum &amp;lt;math&amp;gt; \lim_{{n \to \infty}} \sqrt{2(x_n^2 + y_n^2)} = 2 &amp;lt;/math&amp;gt;, rezultă că &amp;lt;math&amp;gt; \lim_{{n \to \infty}} (x_n + y_n) = 2 &amp;lt;/math&amp;gt;. Cum &amp;lt;math&amp;gt; 1 \leq x_n \leq x_n + y_n - 1 &amp;lt;/math&amp;gt; și &amp;lt;math&amp;gt; \lim_{{n \to \infty}} (x_n + y_n - 1) = 1 &amp;lt;/math&amp;gt;, obținem &amp;lt;math&amp;gt; \lim_{{n \to \infty}} x_n = 1 &amp;lt;/math&amp;gt;. Analog, &amp;lt;math&amp;gt; \lim_{{n \to \infty}} y_n = 1 &amp;lt;/math&amp;gt;.&lt;/div&gt;</summary>
		<author><name>Csula Beatrice</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=1892_-_S_Norocos&amp;diff=6396</id>
		<title>1892 - S Norocos</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=1892_-_S_Norocos&amp;diff=6396"/>
		<updated>2023-05-14T19:37:31Z</updated>

		<summary type="html">&lt;p&gt;Csula Beatrice: /* Exemplul 1 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Sursa: [https://www.pbinfo.ro/probleme/1892/snorocos]&lt;br /&gt;
== Cerinţa ==&lt;br /&gt;
Se dă un număr natural &#039;&#039;&#039;n&#039;&#039;&#039;. Dacă numărul este norocos afișați cele &#039;&#039;&#039;n&#039;&#039;&#039; numere consecutive care adunate dau pătratul acestuia.&lt;br /&gt;
&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Programul citește de la tastatură numărul &#039;&#039;&#039;n&#039;&#039;&#039;.&lt;br /&gt;
== Date de ieșire == &lt;br /&gt;
Daca &#039;&#039;&#039;n&#039;&#039;&#039; este norocos, programul va afișa pe ecran cele &#039;&#039;&#039;n&#039;&#039;&#039; numere consecutive care adunate dau &#039;&#039;&#039;n * n&#039;&#039;&#039;, separate prin spații și mesajul &amp;quot;Datele introduse corespund cerintelor.&amp;quot; În caz contrar, programul va afișa mesajele &#039;&#039;&#039;NU ESTE NOROCOS&#039;&#039;&#039; și &amp;quot;Datele introduse nu corespund cerintelor.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Restricţii şi precizări ==&lt;br /&gt;
* 1 &amp;amp;les; &#039;&#039;&#039;n&#039;&#039;&#039; &amp;amp;les; 1000&lt;br /&gt;
&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
: 7&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele introduse corespund cerintelor.&lt;br /&gt;
: 4 5 6 7 8 9 10&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
: 8&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele introduse corespund cerintelor.&lt;br /&gt;
: NU ESTE NOROCOS&lt;br /&gt;
&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;
#1892&lt;br /&gt;
def validate_n(n):&lt;br /&gt;
    if isinstance(n, int) and 1 &amp;lt;= n &amp;lt;= 1000:&lt;br /&gt;
        return True&lt;br /&gt;
    else:&lt;br /&gt;
        return False&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    n = int(input(&amp;quot;n: &amp;quot;))&lt;br /&gt;
    if not validate_n(n):&lt;br /&gt;
        print(&amp;quot;Datele introduse nu corespund cerințelor.&amp;quot;)&lt;br /&gt;
        exit()&lt;br /&gt;
&lt;br /&gt;
    else:&lt;br /&gt;
        print(&amp;quot;Datele introduse corespund cerintelor.&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    if n % 2 == 1:&lt;br /&gt;
        k = (n+1)//2&lt;br /&gt;
        while n &amp;gt; 0:&lt;br /&gt;
            print(k, end=&#039; &#039;)&lt;br /&gt;
            k += 1&lt;br /&gt;
            n -= 1&lt;br /&gt;
    else:&lt;br /&gt;
        print(&amp;quot;NU ESTE NOROCOS&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Explicatie rezolvare ==&lt;br /&gt;
Acest program primește un număr întreg n de la utilizator și verifică dacă numărul se încadrează între &#039;&#039;&#039;1 și 1000&#039;&#039;&#039;.&lt;br /&gt;
Dacă &#039;&#039;&#039;n&#039;&#039;&#039; este un număr impar, programul va imprima primele &#039;&#039;&#039;n&#039;&#039;&#039; numere naturale impare consecutive începând cu &#039;&#039;&#039;(n+1)//2&#039;&#039;&#039;.&lt;br /&gt;
În caz contrar, programul va afișa &#039;&#039;&#039;NU ESTE NOROCOS&#039;&#039;&#039;.&lt;br /&gt;
Funcția &#039;&#039;&#039;validate_n&#039;&#039;&#039; este folosită pentru a verifica dacă &#039;&#039;&#039;n-ul&#039;&#039;&#039; introdus este un număr întreg între &#039;&#039;&#039;1&#039;&#039;&#039; și &#039;&#039;&#039;1000&#039;&#039;&#039;.&lt;/div&gt;</summary>
		<author><name>Csula Beatrice</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=1754_-_Mun%C8%9Bi&amp;diff=6389</id>
		<title>1754 - Munți</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=1754_-_Mun%C8%9Bi&amp;diff=6389"/>
		<updated>2023-05-14T19:27:43Z</updated>

		<summary type="html">&lt;p&gt;Csula Beatrice: /* Rezolvare */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Sursa: [https://www.pbinfo.ro/probleme/1754/munti]&lt;br /&gt;
== Cerinţa ==&lt;br /&gt;
Vrăjitorul vă cere să determinați numărul maxim de munți ce pot fi aduși la o înălțime egală.&lt;br /&gt;
&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Pe prima linie a fișierului &#039;&#039;&#039;munti.in&#039;&#039;&#039; se va afla numărul natural &#039;&#039;&#039;N&#039;&#039;&#039;, reprezentând numărul de munți existenți. Pe cea de-a doua linie se vor afla &#039;&#039;&#039;N&#039;&#039;&#039; valori naturale separate prin spațiu, reprezentând înălțimea inițială a fiecărui munte.&lt;br /&gt;
&lt;br /&gt;
== Date de ieșire == &lt;br /&gt;
Dacă datele sunt introduse corect, pe ecran se va afișa: &amp;quot;Datele introduse corespund cerintelor.&amp;quot;, apoi fișierul de ieșire  munti.out va conține, pe prima și singura linie a fișierului, numărul maxim de munți ce pot fi aduși la o înălțime egală. În cazul în care datele nu respectă restricțiile, se va doar afișa pe ecran: &amp;quot;Datele introduse nu corespund cerintelor.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Restricţii şi precizări ==&lt;br /&gt;
* 1 &amp;amp;les; &#039;&#039;&#039;N&#039;&#039;&#039; &amp;amp;les; 1.000.000&lt;br /&gt;
* 1 &amp;amp;les; &#039;&#039;&#039;înalțimea inițială&#039;&#039;&#039; &amp;amp;les; 1.000.000.000&lt;br /&gt;
&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
: &#039;&#039;munti.in&#039;&#039;&lt;br /&gt;
: 4&lt;br /&gt;
: 2 6 2 2&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele introduse corespund cerintelor.&lt;br /&gt;
: &#039;&#039;munti.out&#039;&#039;&lt;br /&gt;
: 4&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
: &#039;&#039;munti.in&#039;&#039;&lt;br /&gt;
: 8&lt;br /&gt;
: 2 6 2 2&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele introduse corespund cerintelor.&lt;br /&gt;
: &#039;&#039;munti.out&#039;&#039;&lt;br /&gt;
: 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;
#1754&lt;br /&gt;
def validate_input(n, x_list):&lt;br /&gt;
    print(&amp;quot;Datele introduse corespund cerintelor.&amp;quot;)&lt;br /&gt;
    if not 1 &amp;lt;= n &amp;lt;= 1000000:&lt;br /&gt;
        print(&amp;quot;Datele introduse nu corespund cerintelor.&amp;quot;)&lt;br /&gt;
        exit()&lt;br /&gt;
    if not all(1 &amp;lt;= x &amp;lt;= 1000000000 for x in x_list):&lt;br /&gt;
        print(&amp;quot;Datele introduse nu corespund cerintelor.&amp;quot;)&lt;br /&gt;
        exit()&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    with open(&amp;quot;munti.in&amp;quot;, &amp;quot;r&amp;quot;) as f_in, open(&amp;quot;munti.out&amp;quot;, &amp;quot;w&amp;quot;) as f_out:&lt;br /&gt;
        n = int(f_in.readline())&lt;br /&gt;
        x_list = list(map(int, f_in.readline().split()))&lt;br /&gt;
        validate_input(n, x_list)&lt;br /&gt;
        s = sum(x_list)&lt;br /&gt;
        if s % n == 0:&lt;br /&gt;
            f_out.write(str(n))&lt;br /&gt;
        else:&lt;br /&gt;
            f_out.write(str(n - 1))&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Explicatie rezolvare ==&lt;br /&gt;
Acest program este o soluție pentru o problemă de programare care citește date de intrare dintr-un fișier numit &amp;quot;munti.in&amp;quot;, verifică dacă aceste date îndeplinesc anumite cerințe și apoi calculează un rezultat bazat pe datele de intrare și îl scrie într-un fișier numit &amp;quot;munti.out&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Funcția &amp;quot;validate_input&amp;quot; verifică dacă numărul &amp;quot;n&amp;quot; și lista &amp;quot;x_list&amp;quot; de numere întregi citite din fișierul de intrare îndeplinesc cerințele problemei. Dacă datele nu îndeplinesc cerințele, programul afișează un mesaj de eroare și se încheie prin apelul funcției &amp;quot;exit()&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
După validarea datelor de intrare, programul calculează suma numerelor din lista &amp;quot;x_list&amp;quot; și determină dacă această sumă este divizibilă cu &amp;quot;n&amp;quot; sau nu. Dacă suma este divizibilă cu &amp;quot;n&amp;quot;, atunci programul scrie în fișierul de ieșire numărul &amp;quot;n&amp;quot;, altfel scrie &amp;quot;n - 1&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
În esență, acest program încearcă să găsească numărul de munți (sau vârfuri) care pot fi formați prin gruparea unui anumit număr de înălțimi ale munților citite din fișierul de intrare.&lt;/div&gt;</summary>
		<author><name>Csula Beatrice</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=3622_-_Perechi_Pare&amp;diff=6387</id>
		<title>3622 - Perechi Pare</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=3622_-_Perechi_Pare&amp;diff=6387"/>
		<updated>2023-05-14T19:15:16Z</updated>

		<summary type="html">&lt;p&gt;Csula Beatrice: /* Date de ieșire */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Sursa: [https://www.pbinfo.ro/probleme/3622/perechipare]&lt;br /&gt;
== Cerinţa ==&lt;br /&gt;
Se dă un interval &#039;&#039;&#039;[l,r]&#039;&#039;&#039;. Aflaţi câte perechi de numere pare se pot forma alegând două numere din interval.&lt;br /&gt;
&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Programul citește de la tastatură numerele &#039;&#039;&#039;l&#039;&#039;&#039; şi &#039;&#039;&#039;r&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Date de ieșire == &lt;br /&gt;
Dacă datele introduse sunt corecte și respectă formatul așteptat, programul va afișa în continuare, pe un rând nou, perechile de numere pare care se pot forma alegând două numere din interval și mesajul &amp;quot;Datele introduse corespund cerințelor&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
În cazul în care datele de intrare nu respectă restricțiile impuse programul va afișa pe ecran mesajul &amp;quot;Datele introduse nu corespund cerințelor&amp;quot; și nu va continua cu restul execuției programului.&lt;br /&gt;
&lt;br /&gt;
== Restricţii şi precizări ==&lt;br /&gt;
* 1 &amp;amp;les; &#039;&#039;&#039;l&#039;&#039;&#039; &amp;amp;les; &#039;&#039;&#039;r&#039;&#039;&#039; &amp;amp;les; 1.000.000&lt;br /&gt;
&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
: Introdu l: 5&lt;br /&gt;
: Introdu r: 10&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele introduse corespund cerintelor.&lt;br /&gt;
: 9&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
: Introdu l: 5&lt;br /&gt;
: Introdu r: 1000000000000000000000000000000&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele introduse nu corespund cerintelor.&lt;br /&gt;
&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;
#3622&lt;br /&gt;
def validate_input(l, r):&lt;br /&gt;
    if not (1 &amp;lt;= l &amp;lt;= r &amp;lt;= 1000000):&lt;br /&gt;
        print(&amp;quot;Datele introduse nu corespund cerintelor.&amp;quot;)&lt;br /&gt;
        exit()&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def numarare_numere_pare(l, r):&lt;br /&gt;
    validate_input(l, r)&lt;br /&gt;
    contor = 0&lt;br /&gt;
    for i in range(l, r+1):&lt;br /&gt;
        if i % 2 == 0:&lt;br /&gt;
            contor += 1&lt;br /&gt;
    return contor&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    l = int(input(&amp;quot;Introdu l: &amp;quot;))&lt;br /&gt;
    r = int(input(&amp;quot;Introdu r: &amp;quot;))&lt;br /&gt;
&lt;br /&gt;
    contor = numarare_numere_pare(l, r)&lt;br /&gt;
    print(f&amp;quot;Datele introduse corespund cerintelor.\n{contor * contor}&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Explicatie rezolvare ==&lt;br /&gt;
Acest program numara numerele pare dintre doua numere l si r date de utilizator si afiseaza patratul numarului de numere pare gasite. &lt;br /&gt;
&lt;br /&gt;
Mai intai, functia `validate_input` verifica daca cele doua numere introduse sunt intre 1 si 1000000 si afiseaza un mesaj de eroare si opreste programul daca acestea nu sunt indeplinite. Aceasta functie este apelata in functia `numarare_numere_pare` pentru a asigura ca datele introduse sunt valide.&lt;br /&gt;
&lt;br /&gt;
Functia `numarare_numere_pare` utilizeaza un contor pentru a numara numerele pare intre l si r, inclusiv. Daca un numar este divizibil cu 2, se incrementeaza contorul cu 1. La sfarsit, functia returneaza valoarea contorului.&lt;br /&gt;
&lt;br /&gt;
In programul principal, utilizatorul este intrebat sa introduca valorile l si r. Apoi, functia `numarare_numere_pare` este apelata si rezultatul este afisat, alaturi de un mesaj care confirma ca datele introduse sunt valide.&lt;/div&gt;</summary>
		<author><name>Csula Beatrice</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=3664_-_Cif_Par_Cif_Imp&amp;diff=6386</id>
		<title>3664 - Cif Par Cif Imp</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=3664_-_Cif_Par_Cif_Imp&amp;diff=6386"/>
		<updated>2023-05-14T19:07:45Z</updated>

		<summary type="html">&lt;p&gt;Csula Beatrice: /* Date de ieşire */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Sursă: [https://www.pbinfo.ro/probleme/3664/cifparcifimp]&lt;br /&gt;
&lt;br /&gt;
== Cerinţa ==&lt;br /&gt;
Se dau &#039;&#039;&#039;n&#039;&#039;&#039; numere naturale. Determinaţi câte cifre pare şi câte cifre impare se află în total în cele &#039;&#039;&#039;n&#039;&#039;&#039; numere.&lt;br /&gt;
&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Programul citește de la tastatură numărul &#039;&#039;&#039;n&#039;&#039;&#039;, iar apoi &#039;&#039;&#039;n&#039;&#039;&#039; numere naturale, separate prin spații.&lt;br /&gt;
&lt;br /&gt;
== Date de ieşire ==&lt;br /&gt;
Dacă datele sunt introduse corect, pe ecran se va afișa: &amp;quot;Datele introduse corespund cerintelor.&amp;quot;, apoi pe un rând nou va afișa numărul de cifre pare și impare separate printr-un spațiu. În caz contrar, se va afișa mesajul:&amp;quot; Datele introduse nu corespund cerintelor.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Restricții și precizări ==&lt;br /&gt;
* 1 &amp;amp;les; &#039;&#039;&#039;n&#039;&#039;&#039; &amp;amp;les; 10&lt;br /&gt;
* cele &#039;&#039;&#039;n&#039;&#039;&#039; numere citite vor fi mai mici decât &#039;&#039;&#039;1.000.000.000&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
: Introduceți numărul de numere: 3&lt;br /&gt;
: Introduceți numărul 1: 11&lt;br /&gt;
: Introduceți numărul 2: 30&lt;br /&gt;
: Introduceți numărul 3: 3&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele de intrare corespund cerintelor.&lt;br /&gt;
: 1 4&lt;br /&gt;
&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
: Introduceți numărul de numere: 0&lt;br /&gt;
; Iesire&lt;br /&gt;
: Datele de intrare nu corespund cerintelor.&lt;br /&gt;
&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
#3664&lt;br /&gt;
def validate_input(n):&lt;br /&gt;
    if not 1 &amp;lt;= n &amp;lt;= 10:&lt;br /&gt;
        print(&amp;quot;Datele introduse nu corespund cerintelor.&amp;quot;)&lt;br /&gt;
        return False&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def count_parity_digits(n):&lt;br /&gt;
    pare = 0&lt;br /&gt;
    impare = 0&lt;br /&gt;
    while n &amp;gt; 0:&lt;br /&gt;
        cifra = n % 10&lt;br /&gt;
        if cifra % 2 == 0:&lt;br /&gt;
            pare += 1&lt;br /&gt;
        else:&lt;br /&gt;
            impare += 1&lt;br /&gt;
        n //= 10&lt;br /&gt;
    return pare, impare&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    numere = int(input(&amp;quot;Introduceți numărul de numere: &amp;quot;))&lt;br /&gt;
    if not validate_input(numere):&lt;br /&gt;
        exit()&lt;br /&gt;
    pare_total = 0&lt;br /&gt;
    impare_total = 0&lt;br /&gt;
    for i in range(numere):&lt;br /&gt;
        n = int(input(f&amp;quot;Introduceți numărul {i + 1}: &amp;quot;))&lt;br /&gt;
        if n &amp;gt;= 1000000000:&lt;br /&gt;
            print(&amp;quot;Datele de intrare nu corespund cerintelor&amp;quot;)&lt;br /&gt;
            continue&lt;br /&gt;
        pare, impare = count_parity_digits(n)&lt;br /&gt;
        pare_total += pare&lt;br /&gt;
        impare_total += impare&lt;br /&gt;
&lt;br /&gt;
    print(f&amp;quot;Datele de intrare corespund cerintelor\n{pare_total} {impare_total}&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Explicatie rezolvare==&lt;br /&gt;
Acest program este o soluție la o problemă care prelucrează un număr dat de numere și calculează numărul total de cifre pare și impare în toate numerele introduse. &lt;br /&gt;
&lt;br /&gt;
Mai întâi, programul folosește funcția `validate_input(n)` pentru a verifica dacă numărul de numere introduse este între 1 și 10. Dacă nu, se afișează un mesaj de eroare și se returnează valoarea `False`. &lt;br /&gt;
&lt;br /&gt;
Apoi, funcția `count_parity_digits(n)` primește un număr `n` și numără cifrele pare și impare în acel număr, utilizând o buclă `while` și operatorul modulo `%`. Rezultatul este returnat sub formă de tuplu. &lt;br /&gt;
&lt;br /&gt;
În blocul principal, utilizatorul este întâi întrebat să introducă numărul de numere pe care le va introduce. Dacă numărul nu este validat cu ajutorul funcției `validate_input()`, programul se încheie. În caz contrar, programul trece printr-o buclă `for` și cere utilizatorului să introducă fiecare număr. Dacă numărul introdus este mai mare sau egal cu 1 miliard, se afișează un mesaj de eroare și se trece la următorul număr. Altfel, se apelează funcția `count_parity_digits()` pentru a număra cifrele pare și impare în numărul introdus și se adaugă la numerele totale de cifre pare și impare. &lt;br /&gt;
&lt;br /&gt;
La sfârșit, programul afișează un mesaj de confirmare și numărul total de cifre pare și impare numărate.&lt;/div&gt;</summary>
		<author><name>Csula Beatrice</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=2021_-_Sum%C4%83_Gauss2&amp;diff=6385</id>
		<title>2021 - Sumă Gauss2</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=2021_-_Sum%C4%83_Gauss2&amp;diff=6385"/>
		<updated>2023-05-14T18:58:38Z</updated>

		<summary type="html">&lt;p&gt;Csula Beatrice: /* Rezolvare */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Sursa: [https://www.pbinfo.ro/probleme/2021/sumagauss2]&lt;br /&gt;
== Cerinţa ==&lt;br /&gt;
Ana a calculat suma numerelor naturale mai mici sau egale cu &#039;&#039;&#039;n&#039;&#039;&#039;, iar Andreea suma numerelor naturale mai mici sau egale cu &#039;&#039;&#039;m&#039;&#039;&#039;. Doamna de mate a calculat apoi diferenţa celor două sume şi a obţinut rezultatul &#039;&#039;&#039;S&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Pentru o valoare &#039;&#039;&#039;S&#039;&#039;&#039; dată, aflaţi toate perechile &#039;&#039;&#039;(n,m)&#039;&#039;&#039;, cu &#039;&#039;&#039;n&amp;gt;m&#039;&#039;&#039;, scriindu-le în ordine descrescătoare după &#039;&#039;&#039;n&#039;&#039;&#039; astfel încât doamna de mate să obţină rezultatul &#039;&#039;&#039;S&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Fișierul de intrare &#039;&#039;&#039;sumagauss2.in&#039;&#039;&#039; conține pe prima linie numărul &#039;&#039;&#039;S&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Date de ieșire == &lt;br /&gt;
Dacă datele introduse sunt corecte și respectă formatul așteptat, programul va afișa în continuare, pe un rând nou, perechile &#039;&#039;&#039;(n,m)&#039;&#039;&#039;, cu &#039;&#039;&#039;n&#039;&#039;&#039; &amp;amp;gt; &#039;&#039;&#039;m&#039;&#039;&#039;, în ordine descrescătoare după &#039;&#039;&#039;n&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
În cazul în care datele din fișierul de intrare nu respectă restricțiile impuse programul va afișa pe ecran mesajul &amp;quot;Datele introduse nu corespund cerințelor.&amp;quot; și nu va continua cu restul execuției programului.&lt;br /&gt;
&lt;br /&gt;
== Restricţii şi precizări ==&lt;br /&gt;
* 1 &amp;amp;les; &#039;&#039;&#039;S&#039;&#039;&#039; &amp;amp;les; 2.000.000.000&lt;br /&gt;
&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
: &#039;&#039;sumagauss2.in&#039;&#039;&lt;br /&gt;
: 10&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele corespund cerintelor.&lt;br /&gt;
: &#039;&#039;sumagauss2.out&#039;&#039;&lt;br /&gt;
: 10 9&lt;br /&gt;
: 4 0&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
: &#039;&#039;sumagauss2.in&#039;&#039;&lt;br /&gt;
: 10000000000&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele introduse nu corespund cerințelor.&lt;br /&gt;
&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;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
#2021&lt;br /&gt;
def validate_input(s):&lt;br /&gt;
    if not 1 &amp;lt;= s &amp;lt;= 2000000000:&lt;br /&gt;
        print(&amp;quot;Datele introduse nu corespund cerințelor.&amp;quot;)&lt;br /&gt;
        exit()&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def read_input_file(input_file):&lt;br /&gt;
    with open(input_file, &#039;r&#039;) as f:&lt;br /&gt;
        s = int(f.readline().strip())&lt;br /&gt;
        validate_input(s)&lt;br /&gt;
        print(&amp;quot;Datele corespund cerințelor.&amp;quot;)&lt;br /&gt;
        return s&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def write_output_file(output_file, solutions):&lt;br /&gt;
    with open(output_file, &#039;w&#039;) as f:&lt;br /&gt;
        for p in solutions:&lt;br /&gt;
            f.write(f&amp;quot;{p[0]} {p[1]}\n&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def find_solutions(s):&lt;br /&gt;
    solutions = []&lt;br /&gt;
    for n in range(s, 0, -1):&lt;br /&gt;
        sn = n * (n + 1) // 2&lt;br /&gt;
        for m in range(n):&lt;br /&gt;
            sm = m * (m + 1) // 2&lt;br /&gt;
            d = sn - sm&lt;br /&gt;
            if d == s and n &amp;gt; m:&lt;br /&gt;
                solutions.append((n, m))&lt;br /&gt;
    solutions.sort(reverse=True)&lt;br /&gt;
    return solutions&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    # Citim numărul S din fișierul de intrare&lt;br /&gt;
    input_file = &#039;sumagauss2.in&#039;&lt;br /&gt;
    s = read_input_file(input_file)&lt;br /&gt;
&lt;br /&gt;
    # Găsim toate perechile (n, m) cu diferența dată S&lt;br /&gt;
    solutions = find_solutions(s)&lt;br /&gt;
&lt;br /&gt;
    # Scriem perechile în ordine descrescătoare după n în fișierul de ieșire&lt;br /&gt;
    output_file = &#039;sumagauss2.out&#039;&lt;br /&gt;
    write_output_file(output_file, solutions)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Explicatie rezolvare ==&lt;br /&gt;
Acest program are rolul de a găsi toate perechile de numere naturale (n, m) astfel încât diferența dintre suma primelor n numere naturale și suma primelor m numere naturale să fie egală cu un anumit număr S dat.&lt;br /&gt;
&lt;br /&gt;
Funcția &amp;quot;read_input_file&amp;quot; primește ca parametru numele fișierului de intrare și returnează numărul S citit din fișierul respectiv.&lt;br /&gt;
&lt;br /&gt;
Funcția &amp;quot;write_output_file&amp;quot; primește ca parametri numele fișierului de ieșire și o listă de perechi (n, m) și scrie aceste perechi în fișierul de ieșire, fiecare pe o linie separată. Funcția &amp;quot;find_solutions&amp;quot; primește ca parametru numărul S și returnează o listă cu toate perechile (n, m) care îndeplinesc condiția dată, sortate descrescător după n.&lt;br /&gt;
&lt;br /&gt;
În funcția &amp;quot;find_solutions&amp;quot;, se parcurg toate numerele naturale de la s până la 1 și se calculează suma primelor n numere naturale pentru fiecare n, apoi se parcurg toate numerele naturale de la 0 până la n-1 și se calculează suma primelor m numere naturale pentru fiecare m.&lt;br /&gt;
Se calculează diferența dintre aceste sume și se verifică dacă este egală cu numărul S dat.&lt;br /&gt;
Dacă este, perechea (n, m) este adăugată la lista de soluții. La final, lista de soluții este sortată descrescător după n și returnată.&lt;br /&gt;
&lt;br /&gt;
În blocul &amp;quot;if name == &#039;main&#039;&amp;quot;, se citește numărul S din fișierul de intrare, se găsesc toate perechile (n, m) cu diferența dată S folosind funcția &amp;quot;find_solutions&amp;quot;, iar apoi se scriu perechile în ordine descrescătoare după n în fișierul de ieșire folosind funcția &amp;quot;write_output_file&amp;quot;.&lt;br /&gt;
Numele fișierelor de intrare și de ieșire sunt specificate în variabilele &amp;quot;input_file&amp;quot; și, respectiv, &amp;quot;output_file&amp;quot;.&lt;/div&gt;</summary>
		<author><name>Csula Beatrice</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=2021_-_Sum%C4%83_Gauss2&amp;diff=6384</id>
		<title>2021 - Sumă Gauss2</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=2021_-_Sum%C4%83_Gauss2&amp;diff=6384"/>
		<updated>2023-05-14T18:57:54Z</updated>

		<summary type="html">&lt;p&gt;Csula Beatrice: /* Date de ieșire */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Sursa: [https://www.pbinfo.ro/probleme/2021/sumagauss2]&lt;br /&gt;
== Cerinţa ==&lt;br /&gt;
Ana a calculat suma numerelor naturale mai mici sau egale cu &#039;&#039;&#039;n&#039;&#039;&#039;, iar Andreea suma numerelor naturale mai mici sau egale cu &#039;&#039;&#039;m&#039;&#039;&#039;. Doamna de mate a calculat apoi diferenţa celor două sume şi a obţinut rezultatul &#039;&#039;&#039;S&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Pentru o valoare &#039;&#039;&#039;S&#039;&#039;&#039; dată, aflaţi toate perechile &#039;&#039;&#039;(n,m)&#039;&#039;&#039;, cu &#039;&#039;&#039;n&amp;gt;m&#039;&#039;&#039;, scriindu-le în ordine descrescătoare după &#039;&#039;&#039;n&#039;&#039;&#039; astfel încât doamna de mate să obţină rezultatul &#039;&#039;&#039;S&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Fișierul de intrare &#039;&#039;&#039;sumagauss2.in&#039;&#039;&#039; conține pe prima linie numărul &#039;&#039;&#039;S&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Date de ieșire == &lt;br /&gt;
Dacă datele introduse sunt corecte și respectă formatul așteptat, programul va afișa în continuare, pe un rând nou, perechile &#039;&#039;&#039;(n,m)&#039;&#039;&#039;, cu &#039;&#039;&#039;n&#039;&#039;&#039; &amp;amp;gt; &#039;&#039;&#039;m&#039;&#039;&#039;, în ordine descrescătoare după &#039;&#039;&#039;n&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
În cazul în care datele din fișierul de intrare nu respectă restricțiile impuse programul va afișa pe ecran mesajul &amp;quot;Datele introduse nu corespund cerințelor.&amp;quot; și nu va continua cu restul execuției programului.&lt;br /&gt;
&lt;br /&gt;
== Restricţii şi precizări ==&lt;br /&gt;
* 1 &amp;amp;les; &#039;&#039;&#039;S&#039;&#039;&#039; &amp;amp;les; 2.000.000.000&lt;br /&gt;
&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
: &#039;&#039;sumagauss2.in&#039;&#039;&lt;br /&gt;
: 10&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele corespund cerintelor.&lt;br /&gt;
: &#039;&#039;sumagauss2.out&#039;&#039;&lt;br /&gt;
: 10 9&lt;br /&gt;
: 4 0&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
: &#039;&#039;sumagauss2.in&#039;&#039;&lt;br /&gt;
: 10000000000&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele introduse nu corespund cerințelor.&lt;br /&gt;
&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;
#2021&lt;br /&gt;
def validate_input(s):&lt;br /&gt;
    if not 1 &amp;lt;= s &amp;lt;= 2000000000:&lt;br /&gt;
        print(&amp;quot;Datele nu corespund cerintelor.&amp;quot;)&lt;br /&gt;
        exit()&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def read_input_file(input_file):&lt;br /&gt;
    with open(input_file, &#039;r&#039;) as f:&lt;br /&gt;
        s = int(f.readline().strip())&lt;br /&gt;
        validate_input(s)&lt;br /&gt;
        print(&amp;quot;Datele corespund cerințelor.&amp;quot;)&lt;br /&gt;
        return s&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def write_output_file(output_file, solutions):&lt;br /&gt;
    with open(output_file, &#039;w&#039;) as f:&lt;br /&gt;
        for p in solutions:&lt;br /&gt;
            f.write(f&amp;quot;{p[0]} {p[1]}\n&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def find_solutions(s):&lt;br /&gt;
    solutions = []&lt;br /&gt;
    for n in range(s, 0, -1):&lt;br /&gt;
        sn = n * (n + 1) // 2&lt;br /&gt;
        for m in range(n):&lt;br /&gt;
            sm = m * (m + 1) // 2&lt;br /&gt;
            d = sn - sm&lt;br /&gt;
            if d == s and n &amp;gt; m:&lt;br /&gt;
                solutions.append((n, m))&lt;br /&gt;
    solutions.sort(reverse=True)&lt;br /&gt;
    return solutions&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    # Citim numărul S din fișierul de intrare&lt;br /&gt;
    input_file = &#039;sumagauss2.in&#039;&lt;br /&gt;
    s = read_input_file(input_file)&lt;br /&gt;
&lt;br /&gt;
    # Găsim toate perechile (n, m) cu diferența dată S&lt;br /&gt;
    solutions = find_solutions(s)&lt;br /&gt;
&lt;br /&gt;
    # Scriem perechile în ordine descrescătoare după n în fișierul de ieșire&lt;br /&gt;
    output_file = &#039;sumagauss2.out&#039;&lt;br /&gt;
    write_output_file(output_file, solutions)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Explicatie rezolvare ==&lt;br /&gt;
Acest program are rolul de a găsi toate perechile de numere naturale (n, m) astfel încât diferența dintre suma primelor n numere naturale și suma primelor m numere naturale să fie egală cu un anumit număr S dat.&lt;br /&gt;
&lt;br /&gt;
Funcția &amp;quot;read_input_file&amp;quot; primește ca parametru numele fișierului de intrare și returnează numărul S citit din fișierul respectiv.&lt;br /&gt;
&lt;br /&gt;
Funcția &amp;quot;write_output_file&amp;quot; primește ca parametri numele fișierului de ieșire și o listă de perechi (n, m) și scrie aceste perechi în fișierul de ieșire, fiecare pe o linie separată. Funcția &amp;quot;find_solutions&amp;quot; primește ca parametru numărul S și returnează o listă cu toate perechile (n, m) care îndeplinesc condiția dată, sortate descrescător după n.&lt;br /&gt;
&lt;br /&gt;
În funcția &amp;quot;find_solutions&amp;quot;, se parcurg toate numerele naturale de la s până la 1 și se calculează suma primelor n numere naturale pentru fiecare n, apoi se parcurg toate numerele naturale de la 0 până la n-1 și se calculează suma primelor m numere naturale pentru fiecare m.&lt;br /&gt;
Se calculează diferența dintre aceste sume și se verifică dacă este egală cu numărul S dat.&lt;br /&gt;
Dacă este, perechea (n, m) este adăugată la lista de soluții. La final, lista de soluții este sortată descrescător după n și returnată.&lt;br /&gt;
&lt;br /&gt;
În blocul &amp;quot;if name == &#039;main&#039;&amp;quot;, se citește numărul S din fișierul de intrare, se găsesc toate perechile (n, m) cu diferența dată S folosind funcția &amp;quot;find_solutions&amp;quot;, iar apoi se scriu perechile în ordine descrescătoare după n în fișierul de ieșire folosind funcția &amp;quot;write_output_file&amp;quot;.&lt;br /&gt;
Numele fișierelor de intrare și de ieșire sunt specificate în variabilele &amp;quot;input_file&amp;quot; și, respectiv, &amp;quot;output_file&amp;quot;.&lt;/div&gt;</summary>
		<author><name>Csula Beatrice</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=2021_-_Sum%C4%83_Gauss2&amp;diff=6382</id>
		<title>2021 - Sumă Gauss2</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=2021_-_Sum%C4%83_Gauss2&amp;diff=6382"/>
		<updated>2023-05-14T18:00:24Z</updated>

		<summary type="html">&lt;p&gt;Csula Beatrice: /* Exemplul 1 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Sursa: [https://www.pbinfo.ro/probleme/2021/sumagauss2]&lt;br /&gt;
== Cerinţa ==&lt;br /&gt;
Ana a calculat suma numerelor naturale mai mici sau egale cu &#039;&#039;&#039;n&#039;&#039;&#039;, iar Andreea suma numerelor naturale mai mici sau egale cu &#039;&#039;&#039;m&#039;&#039;&#039;. Doamna de mate a calculat apoi diferenţa celor două sume şi a obţinut rezultatul &#039;&#039;&#039;S&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Pentru o valoare &#039;&#039;&#039;S&#039;&#039;&#039; dată, aflaţi toate perechile &#039;&#039;&#039;(n,m)&#039;&#039;&#039;, cu &#039;&#039;&#039;n&amp;gt;m&#039;&#039;&#039;, scriindu-le în ordine descrescătoare după &#039;&#039;&#039;n&#039;&#039;&#039; astfel încât doamna de mate să obţină rezultatul &#039;&#039;&#039;S&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Fișierul de intrare &#039;&#039;&#039;sumagauss2.in&#039;&#039;&#039; conține pe prima linie numărul &#039;&#039;&#039;S&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Date de ieșire == &lt;br /&gt;
Dacă datele introduse sunt corecte și respectă formatul așteptat, programul va afișa în continuare, pe un rând nou, perechile &#039;&#039;&#039;(n,m)&#039;&#039;&#039;, cu &#039;&#039;&#039;n&#039;&#039;&#039; &amp;amp;gt; &#039;&#039;&#039;m&#039;&#039;&#039;, în ordine descrescătoare după &#039;&#039;&#039;n&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
În cazul în care datele din fișierul de intrare nu respectă restricțiile impuse programul va afișa pe ecran mesajul &amp;quot;Datele nu corespund restricțiilor impuse.&amp;quot; și nu va continua cu restul execuției programului.&lt;br /&gt;
&lt;br /&gt;
== Restricţii şi precizări ==&lt;br /&gt;
* 1 &amp;amp;les; &#039;&#039;&#039;S&#039;&#039;&#039; &amp;amp;les; 2.000.000.000&lt;br /&gt;
&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
: &#039;&#039;sumagauss2.in&#039;&#039;&lt;br /&gt;
: 10&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele corespund cerintelor.&lt;br /&gt;
: &#039;&#039;sumagauss2.out&#039;&#039;&lt;br /&gt;
: 10 9&lt;br /&gt;
: 4 0&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
: &#039;&#039;sumagauss2.in&#039;&#039;&lt;br /&gt;
: 10000000000&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele introduse nu corespund cerințelor.&lt;br /&gt;
&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;
#2021&lt;br /&gt;
def validate_input(s):&lt;br /&gt;
    if not 1 &amp;lt;= s &amp;lt;= 2000000000:&lt;br /&gt;
        print(&amp;quot;Datele nu corespund cerintelor.&amp;quot;)&lt;br /&gt;
        exit()&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def read_input_file(input_file):&lt;br /&gt;
    with open(input_file, &#039;r&#039;) as f:&lt;br /&gt;
        s = int(f.readline().strip())&lt;br /&gt;
        validate_input(s)&lt;br /&gt;
        print(&amp;quot;Datele corespund cerințelor.&amp;quot;)&lt;br /&gt;
        return s&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def write_output_file(output_file, solutions):&lt;br /&gt;
    with open(output_file, &#039;w&#039;) as f:&lt;br /&gt;
        for p in solutions:&lt;br /&gt;
            f.write(f&amp;quot;{p[0]} {p[1]}\n&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def find_solutions(s):&lt;br /&gt;
    solutions = []&lt;br /&gt;
    for n in range(s, 0, -1):&lt;br /&gt;
        sn = n * (n + 1) // 2&lt;br /&gt;
        for m in range(n):&lt;br /&gt;
            sm = m * (m + 1) // 2&lt;br /&gt;
            d = sn - sm&lt;br /&gt;
            if d == s and n &amp;gt; m:&lt;br /&gt;
                solutions.append((n, m))&lt;br /&gt;
    solutions.sort(reverse=True)&lt;br /&gt;
    return solutions&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    # Citim numărul S din fișierul de intrare&lt;br /&gt;
    input_file = &#039;sumagauss2.in&#039;&lt;br /&gt;
    s = read_input_file(input_file)&lt;br /&gt;
&lt;br /&gt;
    # Găsim toate perechile (n, m) cu diferența dată S&lt;br /&gt;
    solutions = find_solutions(s)&lt;br /&gt;
&lt;br /&gt;
    # Scriem perechile în ordine descrescătoare după n în fișierul de ieșire&lt;br /&gt;
    output_file = &#039;sumagauss2.out&#039;&lt;br /&gt;
    write_output_file(output_file, solutions)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Explicatie rezolvare ==&lt;br /&gt;
Acest program are rolul de a găsi toate perechile de numere naturale (n, m) astfel încât diferența dintre suma primelor n numere naturale și suma primelor m numere naturale să fie egală cu un anumit număr S dat.&lt;br /&gt;
&lt;br /&gt;
Funcția &amp;quot;read_input_file&amp;quot; primește ca parametru numele fișierului de intrare și returnează numărul S citit din fișierul respectiv.&lt;br /&gt;
&lt;br /&gt;
Funcția &amp;quot;write_output_file&amp;quot; primește ca parametri numele fișierului de ieșire și o listă de perechi (n, m) și scrie aceste perechi în fișierul de ieșire, fiecare pe o linie separată. Funcția &amp;quot;find_solutions&amp;quot; primește ca parametru numărul S și returnează o listă cu toate perechile (n, m) care îndeplinesc condiția dată, sortate descrescător după n.&lt;br /&gt;
&lt;br /&gt;
În funcția &amp;quot;find_solutions&amp;quot;, se parcurg toate numerele naturale de la s până la 1 și se calculează suma primelor n numere naturale pentru fiecare n, apoi se parcurg toate numerele naturale de la 0 până la n-1 și se calculează suma primelor m numere naturale pentru fiecare m.&lt;br /&gt;
Se calculează diferența dintre aceste sume și se verifică dacă este egală cu numărul S dat.&lt;br /&gt;
Dacă este, perechea (n, m) este adăugată la lista de soluții. La final, lista de soluții este sortată descrescător după n și returnată.&lt;br /&gt;
&lt;br /&gt;
În blocul &amp;quot;if name == &#039;main&#039;&amp;quot;, se citește numărul S din fișierul de intrare, se găsesc toate perechile (n, m) cu diferența dată S folosind funcția &amp;quot;find_solutions&amp;quot;, iar apoi se scriu perechile în ordine descrescătoare după n în fișierul de ieșire folosind funcția &amp;quot;write_output_file&amp;quot;.&lt;br /&gt;
Numele fișierelor de intrare și de ieșire sunt specificate în variabilele &amp;quot;input_file&amp;quot; și, respectiv, &amp;quot;output_file&amp;quot;.&lt;/div&gt;</summary>
		<author><name>Csula Beatrice</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=4272_-_Prod_Pare&amp;diff=6381</id>
		<title>4272 - Prod Pare</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=4272_-_Prod_Pare&amp;diff=6381"/>
		<updated>2023-05-14T17:56:07Z</updated>

		<summary type="html">&lt;p&gt;Csula Beatrice: /* Exemplul 2 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Sursa: [https://www.pbinfo.ro/probleme/4272/prodpare]&lt;br /&gt;
== Cerinţa ==&lt;br /&gt;
Se dă numărul natural nenul &#039;&#039;&#039;n&#039;&#039;&#039;. Să se determine produsul primelor n numere pare nenule.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Programul citește de la tastatură numărul &#039;&#039;&#039;n&#039;&#039;&#039;.&lt;br /&gt;
== Date de iesire ==&lt;br /&gt;
Dacă datele sunt introduse corect, în consolă se va afișa mesajul &amp;quot;Datele introduse corespund cerintelor.&amp;quot; și pe rând nou se va afișa  produsul rezultat din inmultirea primelor &#039;&#039;&#039;n&#039;&#039;&#039; numere pare. În caz contrar, se va afișa pe ecran: &amp;quot;Datele introduse nu corespund cerintelor.&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Restricţii şi precizări ==&lt;br /&gt;
* 1 &amp;amp;les; &#039;&#039;&#039;n&#039;&#039;&#039; &amp;amp;les; 10&lt;br /&gt;
&lt;br /&gt;
== Exemplu ==&lt;br /&gt;
=== Exemplul 1 ===&lt;br /&gt;
; Intrare&lt;br /&gt;
: 4&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele introduse corespund cerintelor.&lt;br /&gt;
: 384&lt;br /&gt;
&lt;br /&gt;
=== Exemplul 2 ===&lt;br /&gt;
; Intrare&lt;br /&gt;
: 11&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele introduse nu corespund cerintelor.&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;
#4272&lt;br /&gt;
def produs_numere_pare(n):&lt;br /&gt;
    produs = 1&lt;br /&gt;
&lt;br /&gt;
    for i in range(2, 2 * n + 1, 2):&lt;br /&gt;
        produs *= i&lt;br /&gt;
&lt;br /&gt;
    print(produs)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def validare_numar(n):&lt;br /&gt;
    if n &amp;lt; 1 or n &amp;gt; 10:&lt;br /&gt;
        print(&amp;quot;Datele introduse nu corespund cerintelor.&amp;quot;)&lt;br /&gt;
        return False&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    numar = int(input(&amp;quot;Introduceți un număr: &amp;quot;))&lt;br /&gt;
    if validare_numar(numar):&lt;br /&gt;
        print(&amp;quot;Datele introduse corespund cerintelor.&amp;quot;)&lt;br /&gt;
        produs_numere_pare(numar)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Explicatie rezolvare ==&lt;br /&gt;
Acest program calculează produsul numerelor pare de la 2 la 2n, unde n este un număr întreg introdus de utilizator.&lt;br /&gt;
&lt;br /&gt;
Funcția validare_numar(n) verifică dacă numărul introdus de utilizator respectă cerințele, adică să fie între 1 și 10 inclusiv. Dacă numărul nu respectă aceste cerințe, funcția va afișa un mesaj de eroare și va returna False. Dacă numărul este valid, funcția va returna True.&lt;br /&gt;
&lt;br /&gt;
Funcția produs_numere_pare(n) calculează produsul numerelor pare de la 2 la 2n, prin intermediul unui ciclu for. Ciclul pornește de la 2 și se oprește la 2n inclusiv, în pași de 2. La fiecare iterație, valoarea curentă a produsului este înmulțită cu valoarea curentă a variabilei i.&lt;br /&gt;
&lt;br /&gt;
În if __name__ == &amp;quot;__main__&amp;quot;: se verifică dacă programul rulează ca script (adică nu a fost importat ca modul). Utilizatorul este invitat să introducă un număr întreg. Dacă numărul respectă cerințele, se afișează un mesaj de confirmare și se calculează produsul numerelor pare de la 2 la 2n prin apelul funcției produs_numere_pare(n).&lt;/div&gt;</summary>
		<author><name>Csula Beatrice</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=4272_-_Prod_Pare&amp;diff=6380</id>
		<title>4272 - Prod Pare</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=4272_-_Prod_Pare&amp;diff=6380"/>
		<updated>2023-05-14T17:55:22Z</updated>

		<summary type="html">&lt;p&gt;Csula Beatrice: /* Date de iesire */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Sursa: [https://www.pbinfo.ro/probleme/4272/prodpare]&lt;br /&gt;
== Cerinţa ==&lt;br /&gt;
Se dă numărul natural nenul &#039;&#039;&#039;n&#039;&#039;&#039;. Să se determine produsul primelor n numere pare nenule.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Programul citește de la tastatură numărul &#039;&#039;&#039;n&#039;&#039;&#039;.&lt;br /&gt;
== Date de iesire ==&lt;br /&gt;
Dacă datele sunt introduse corect, în consolă se va afișa mesajul &amp;quot;Datele introduse corespund cerintelor.&amp;quot; și pe rând nou se va afișa  produsul rezultat din inmultirea primelor &#039;&#039;&#039;n&#039;&#039;&#039; numere pare. În caz contrar, se va afișa pe ecran: &amp;quot;Datele introduse nu corespund cerintelor.&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Restricţii şi precizări ==&lt;br /&gt;
* 1 &amp;amp;les; &#039;&#039;&#039;n&#039;&#039;&#039; &amp;amp;les; 10&lt;br /&gt;
&lt;br /&gt;
== Exemplu ==&lt;br /&gt;
=== Exemplul 1 ===&lt;br /&gt;
; Intrare&lt;br /&gt;
: 4&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele introduse corespund cerintelor.&lt;br /&gt;
: 384&lt;br /&gt;
&lt;br /&gt;
=== Exemplul 2 ===&lt;br /&gt;
; Intrare&lt;br /&gt;
: 11&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele nu corespund cerintelor.&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;
#4272&lt;br /&gt;
def produs_numere_pare(n):&lt;br /&gt;
    produs = 1&lt;br /&gt;
&lt;br /&gt;
    for i in range(2, 2 * n + 1, 2):&lt;br /&gt;
        produs *= i&lt;br /&gt;
&lt;br /&gt;
    print(produs)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def validare_numar(n):&lt;br /&gt;
    if n &amp;lt; 1 or n &amp;gt; 10:&lt;br /&gt;
        print(&amp;quot;Datele introduse nu corespund cerintelor.&amp;quot;)&lt;br /&gt;
        return False&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    numar = int(input(&amp;quot;Introduceți un număr: &amp;quot;))&lt;br /&gt;
    if validare_numar(numar):&lt;br /&gt;
        print(&amp;quot;Datele introduse corespund cerintelor.&amp;quot;)&lt;br /&gt;
        produs_numere_pare(numar)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Explicatie rezolvare ==&lt;br /&gt;
Acest program calculează produsul numerelor pare de la 2 la 2n, unde n este un număr întreg introdus de utilizator.&lt;br /&gt;
&lt;br /&gt;
Funcția validare_numar(n) verifică dacă numărul introdus de utilizator respectă cerințele, adică să fie între 1 și 10 inclusiv. Dacă numărul nu respectă aceste cerințe, funcția va afișa un mesaj de eroare și va returna False. Dacă numărul este valid, funcția va returna True.&lt;br /&gt;
&lt;br /&gt;
Funcția produs_numere_pare(n) calculează produsul numerelor pare de la 2 la 2n, prin intermediul unui ciclu for. Ciclul pornește de la 2 și se oprește la 2n inclusiv, în pași de 2. La fiecare iterație, valoarea curentă a produsului este înmulțită cu valoarea curentă a variabilei i.&lt;br /&gt;
&lt;br /&gt;
În if __name__ == &amp;quot;__main__&amp;quot;: se verifică dacă programul rulează ca script (adică nu a fost importat ca modul). Utilizatorul este invitat să introducă un număr întreg. Dacă numărul respectă cerințele, se afișează un mesaj de confirmare și se calculează produsul numerelor pare de la 2 la 2n prin apelul funcției produs_numere_pare(n).&lt;/div&gt;</summary>
		<author><name>Csula Beatrice</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=3976_-_Prod_Impare&amp;diff=6379</id>
		<title>3976 - Prod Impare</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=3976_-_Prod_Impare&amp;diff=6379"/>
		<updated>2023-05-14T17:52:08Z</updated>

		<summary type="html">&lt;p&gt;Csula Beatrice: /* Exemplul 1 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Sursa: [https://www.pbinfo.ro/probleme/3976/prodimpare]&lt;br /&gt;
== Cerinţa ==&lt;br /&gt;
Se dă numărul natural nenul &#039;&#039;&#039;n&#039;&#039;&#039;. Să se determine produsul primelor &#039;&#039;&#039;n&#039;&#039;&#039; numere impare.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Programul citește de la tastatură numărul &#039;&#039;&#039;n&#039;&#039;&#039;.&lt;br /&gt;
== Date de iesire ==&lt;br /&gt;
Programul va afișa pe ecran, mesajul &amp;quot;Datele introduse corespund cerințelor&amp;quot; și  pe o linie nouă numărul &#039;&#039;&#039;P&#039;&#039;&#039;  reprezentând produsul primelor &#039;&#039;&#039;n&#039;&#039;&#039; numere impare, în caz contrar programul va afișa pe o linie nouă &amp;quot;Datele introduse nu corespund cerințelor&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Restricţii şi precizări ==&lt;br /&gt;
* 1 &amp;amp;les; &#039;&#039;&#039;n&#039;&#039;&#039; &amp;amp;les; 15&lt;br /&gt;
== Exemplu ==&lt;br /&gt;
=== Exemplul 1 ===&lt;br /&gt;
; Intrare&lt;br /&gt;
: 4&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele introduse corespund cerințelor.&lt;br /&gt;
: 105&lt;br /&gt;
&lt;br /&gt;
=== Exemplul 2 ===&lt;br /&gt;
; Intrare&lt;br /&gt;
: 0&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele introduse nu corespund cerințelor.&lt;br /&gt;
=== Exemplul 3 ===&lt;br /&gt;
; Intrare&lt;br /&gt;
: 7&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele introduse corespund cerințelor.&lt;br /&gt;
: 135135&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;
#3976&lt;br /&gt;
def validare_numar_intreg_pozitiv(mesaj):&lt;br /&gt;
    while True:&lt;br /&gt;
        try:&lt;br /&gt;
            numar = int(input(mesaj))&lt;br /&gt;
            if numar &amp;lt;= 0:&lt;br /&gt;
                print(&amp;quot;Datele introduse nu corespund cerintelor.&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
            elif numar &amp;gt; 15:&lt;br /&gt;
                print(&amp;quot;Datele introduse nu corespund cerintelor.&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
            else:&lt;br /&gt;
                return numar&lt;br /&gt;
&lt;br /&gt;
        except ValueError:&lt;br /&gt;
            print(&amp;quot;Introduceti un numar intreg pozitiv.&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def produs_primelor_n_numere_impare(n):&lt;br /&gt;
    produs = 1&lt;br /&gt;
    for i in range(1, 2*n, 2):&lt;br /&gt;
        produs *= i&lt;br /&gt;
    return produs&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    n = validare_numar_intreg_pozitiv(&amp;quot;Introduceti un numar natural nenul: &amp;quot;)&lt;br /&gt;
    produs = produs_primelor_n_numere_impare(n)&lt;br /&gt;
    print(&amp;quot;Datele introduse corespund cerintelor.\n&amp;quot;,produs)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Explicatie rezolvare ==&lt;br /&gt;
Acest program calculează produsul primelor n numere impare, unde n este un număr natural dat de utilizator. Funcția &amp;quot;validare_numar_intreg_pozitiv(mesaj)&amp;quot; primește un argument &amp;quot;mesaj&amp;quot; care este afișat pentru a îndruma utilizatorul să introducă un număr natural nenul. În cadrul acestei funcții, programul verifică dacă numărul introdus este mai mic sau egal cu 0 sau mai mare decât 15, afișând un mesaj de eroare în caz contrar. Dacă numărul este un număr natural între 1 și 15, acesta este returnat și funcția se termină. În caz contrar, utilizatorul este rugat să introducă un alt număr.&lt;br /&gt;
&lt;br /&gt;
Funcția &amp;quot;produs_primelor_n_numere_impare(n)&amp;quot; primește un argument &amp;quot;n&amp;quot; și calculează produsul primelor n numere impare. Produsul este inițializat cu 1 și apoi, folosind un ciclu for, se calculează produsul valorilor impare din intervalul [1, 2n], adică valorile 1, 3, 5, ..., 2n-1.&lt;br /&gt;
&lt;br /&gt;
În programul principal, utilizatorul este întâi rugat să introducă un număr natural nenul, care este verificat pentru a se asigura că corespunde cerințelor prin intermediul funcției &amp;quot;validare_numar_intreg_pozitiv(mesaj)&amp;quot;. Dacă numărul este valid, programul calculează produsul și îl afișează împreună cu un mesaj de confirmare că datele introduse sunt valabile.&lt;/div&gt;</summary>
		<author><name>Csula Beatrice</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=2330_-_prim023&amp;diff=5700</id>
		<title>2330 - prim023</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=2330_-_prim023&amp;diff=5700"/>
		<updated>2023-04-30T15:04:10Z</updated>

		<summary type="html">&lt;p&gt;Csula Beatrice: /* Explicaţie cod */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Sursa: [https://www.pbinfo.ro/probleme/2330/prim023 -  prim023]&lt;br /&gt;
----&lt;br /&gt;
== Cerinţa ==&lt;br /&gt;
Dorel a scris un şir format din &#039;&#039;&#039;n&#039;&#039;&#039; numere naturale nenule. Apoi a luat fiecare subşir şi a calculat produsul termenilor săi. Aflaţi câte dintre produsele efectuate sunt numere prime.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Fișierul de intrare &#039;&#039;&#039;prim023.in&#039;&#039;&#039; conține pe prima linie numărul &#039;&#039;&#039;n&#039;&#039;&#039;, iar pe a doua linie &#039;&#039;&#039;n&#039;&#039;&#039; numere naturale nenule 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: &lt;br /&gt;
&amp;quot;Datele sunt corecte.&amp;quot;, iar apoi in fișierul de ieșire &#039;&#039;&#039;prim023.out&#039;&#039;&#039; va conține pe prima linie numărul produselor care sunt numere prime. În caz contrar, se va afișa pe ecran: &amp;quot;Datele nu sunt comform restricțiilor impuse.&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Restricţii şi precizări ==&lt;br /&gt;
* 1 ≤ &#039;&#039;&#039;n&#039;&#039;&#039; ≤ 5.000&lt;br /&gt;
* numerele de pe a doua linie a fișierului de intrare vor fi mai mici decât &#039;&#039;&#039;1.000.000.000&#039;&#039;&#039;&lt;br /&gt;
* un subşir conţine cel puţin un termen şi se formează alegând o parte din termenii şirului&lt;br /&gt;
== Exemple ==&lt;br /&gt;
===Exemplul 1===&lt;br /&gt;
; prim023.in&lt;br /&gt;
: 3&lt;br /&gt;
: 1 2 3&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele sunt corecte.&lt;br /&gt;
; prim023.out&lt;br /&gt;
: 4&lt;br /&gt;
===Exemplul 2===&lt;br /&gt;
;  prim023.in&lt;br /&gt;
: 4&lt;br /&gt;
: 13 3123 414 41241&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele sunt corecte.&lt;br /&gt;
;  prim023.out&lt;br /&gt;
:  1&lt;br /&gt;
===Exemplul 3===&lt;br /&gt;
; prim023.in&lt;br /&gt;
: 2 &lt;br /&gt;
: 314441 41241241&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele nu sunt comform restricțiilor impuse.&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;
#2330 prim023&lt;br /&gt;
&lt;br /&gt;
def este_prim(n):&lt;br /&gt;
    if n &amp;lt;= 1:&lt;br /&gt;
        return False&lt;br /&gt;
    for i in range(2, int(n**0.5) + 1):&lt;br /&gt;
        if n % i == 0:&lt;br /&gt;
            return False&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def prim023(vector, n):&lt;br /&gt;
    with open(&amp;quot;prim023.out&amp;quot;, &amp;quot;w&amp;quot;) as f:&lt;br /&gt;
        count = 0 &lt;br /&gt;
        for i in range(1 &amp;lt;&amp;lt; n):   &lt;br /&gt;
            product = 1&lt;br /&gt;
            for j in range(n):  &lt;br /&gt;
                if i &amp;amp; (1 &amp;lt;&amp;lt; j):  &lt;br /&gt;
                    product *= vector[j]&lt;br /&gt;
            if este_prim(product): &lt;br /&gt;
                count += 1&lt;br /&gt;
        f.write(str(count))&lt;br /&gt;
    &lt;br /&gt;
&lt;br /&gt;
def conform_restrictiilor():&lt;br /&gt;
    with open(&#039;prim023.in&#039;) as f:&lt;br /&gt;
        n = int(f.readline())&lt;br /&gt;
        vector = list(map(int, f.read().split()))&lt;br /&gt;
    if n &amp;gt; 5000:&lt;br /&gt;
        print(&amp;quot;Datele nu sunt conform restricțiilor impuse.&amp;quot;)&lt;br /&gt;
        exit()&lt;br /&gt;
    for x in vector:&lt;br /&gt;
        if x &amp;gt; 1000000000:&lt;br /&gt;
            print(&amp;quot;Datele nu sunt conform restricțiilor impuse.&amp;quot;)&lt;br /&gt;
            exit()&lt;br /&gt;
    print(&amp;quot;Datele sunt corecte.&amp;quot;)&lt;br /&gt;
    return n, vector&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    n, vector = conform_restrictiilor()&lt;br /&gt;
    prim023(vector,n)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Explicaţie cod==&lt;br /&gt;
&lt;br /&gt;
Acesta este un program care primește un fișier de intrare și calculează numărul de produse prime ale elementelor din fișierul de intrare.&lt;br /&gt;
&lt;br /&gt;
Funcția &#039;&#039;&#039;este_prim&#039;&#039;&#039; primește un număr și returnează True dacă numărul este prim și False altfel. Verifică dacă numărul este mai mic sau egal cu 1 și, în caz afirmativ, returnează False. Pentru ceilalți întregi pozitivi, se iterază prin toate numerele de la 2 până la rădăcina pătrată a numărului și se verifică dacă numărul este divizibil cu vreunul dintre acestea. Dacă da, returnează False. În caz contrar, returnează True.&lt;br /&gt;
&lt;br /&gt;
Funcția &#039;&#039;&#039;prim023&#039;&#039;&#039; primește o listă de numere și numărul de elemente din această listă. Se deschide un fișier de ieșire &#039;&#039;&#039;prim023.out&#039;&#039;&#039;. Funcția apoi iterează prin toate combinațiile posibile ale elementelor din lista dată și înmulțește elementele care apar în acea combinație. Dacă produsul este prim, numără acest lucru. La sfârșit, numărul de produse prime este scris în fișierul de ieșire.&lt;br /&gt;
&lt;br /&gt;
Funcția &#039;&#039;&#039;conform_restrictiilor&#039;&#039;&#039; deschide fișierul de intrare &#039;&#039;&#039;prim023.in&#039;&#039;&#039;. Citeste numărul de elemente din listă și lista de numere din fișier. Verifică dacă numărul de elemente din listă este mai mic sau egal cu 5000 și dacă toate elementele listei sunt mai mici sau egale cu 1000000000. În caz contrar, afișează un mesaj de eroare și iese din program. Dacă datele sunt corecte, funcția returnează numărul de elemente și lista de numere.&lt;br /&gt;
&lt;br /&gt;
În &#039;&#039;&#039;main&#039;&#039;&#039;, se apelează funcția conform_restrictiilor pentru a obține datele din fișierul de intrare și apoi se apelează funcția &#039;&#039;&#039;prim023&#039;&#039;&#039; pentru a calcula numărul de produse prime și a le scrie în fișierul de ieșire &#039;&#039;&#039;prim023.out&#039;&#039;&#039;.&lt;/div&gt;</summary>
		<author><name>Csula Beatrice</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=2327_-_prim997&amp;diff=5699</id>
		<title>2327 - prim997</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=2327_-_prim997&amp;diff=5699"/>
		<updated>2023-04-30T15:02:35Z</updated>

		<summary type="html">&lt;p&gt;Csula Beatrice: /* Explicaţie cod */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Sursa: [https://www.pbinfo.ro/probleme/2327/prim997 -  prim997]&lt;br /&gt;
----&lt;br /&gt;
== Cerinţa ==&lt;br /&gt;
Se dau &#039;&#039;&#039;n&#039;&#039;&#039; numere naturale. Pentru fiecare număr &#039;&#039;&#039;k&#039;&#039;&#039; dat, să se afle cea mai lungă secvenţă de numere naturale consecutive din şirul &#039;&#039;&#039;1,2,3,...,k&#039;&#039;&#039;, astfel încât orice număr din secvenţă să nu fie prim.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Fișierul de intrare &#039;&#039;&#039;prim997.in&#039;&#039;&#039; conține pe prima linie numărul &#039;&#039;&#039;n&#039;&#039;&#039;, iar pe a doua linie &#039;&#039;&#039;n&#039;&#039;&#039; numere naturale separate prin spații.&lt;br /&gt;
== Date de ieșire == &lt;br /&gt;
Dacă datele sunt introduse corect, pe ecran se va afișa: &lt;br /&gt;
&amp;quot;Datele sunt corecte.&amp;quot;, iar apoi in fișierul de ieșire &#039;&#039;&#039;prim997.out&#039;&#039;&#039; va conține pe linia &#039;&#039;&#039;i&#039;&#039;&#039;, primul număr din secvenţă şi lungimea secvenţei, pentru cel de-al &#039;&#039;&#039;i&#039;&#039;&#039;-lea număr de pe linia a doua a fişierului de intrare. În caz contrar, se va afișa pe ecran: &amp;quot;Datele nu sunt comform restricțiilor impuse.&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Restricţii şi precizări ==&lt;br /&gt;
* 1 ≤ &#039;&#039;&#039;n&#039;&#039;&#039; ≤ 100.000&lt;br /&gt;
* numerele de pe a doua linie a fișierului de intrare vor fi mai mici decât &#039;&#039;&#039;10.000.000&#039;&#039;&#039;&lt;br /&gt;
* dacă sunt mai multe secvenţe de lungime maximă cu numere consecutive neprime, se va afişa cea cu primul număr din secvenţă minim&lt;br /&gt;
== Exemple ==&lt;br /&gt;
===Exemplul 1===&lt;br /&gt;
; prim997.in&lt;br /&gt;
: 3&lt;br /&gt;
: 4 11 30&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele sunt corecte.&lt;br /&gt;
; prim997.out&lt;br /&gt;
: 1 1&lt;br /&gt;
: 8 3&lt;br /&gt;
: 24 5&lt;br /&gt;
===Exemplul 2===&lt;br /&gt;
;  prim997.in&lt;br /&gt;
: 4&lt;br /&gt;
: 19 23 410 421&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele sunt corecte.&lt;br /&gt;
; prim997.out&lt;br /&gt;
: 8 3 &lt;br /&gt;
: 8 3&lt;br /&gt;
: 114 3&lt;br /&gt;
: 114 3&lt;br /&gt;
===Exemplul 3===&lt;br /&gt;
; prim997.in&lt;br /&gt;
: 2 &lt;br /&gt;
: 314441 41241241&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele nu sunt comform restricțiilor impuse.&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;
#2327 prim997&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def este_prim(n):&lt;br /&gt;
    if n &amp;lt; 2:&lt;br /&gt;
        return False&lt;br /&gt;
    for i in range(2, int(n ** 0.5) + 1):&lt;br /&gt;
        if n % i == 0:&lt;br /&gt;
            return False&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def prim997(nums, n):&lt;br /&gt;
    with open(&amp;quot;prim997.out&amp;quot;, &amp;quot;w&amp;quot;) as f:&lt;br /&gt;
        for k in nums:&lt;br /&gt;
            max_len = 0&lt;br /&gt;
            start_num = 1&lt;br /&gt;
            current_len = 0&lt;br /&gt;
            for i in range(1, k+1):&lt;br /&gt;
                if not este_prim(i):&lt;br /&gt;
                    current_len += 1&lt;br /&gt;
                else:&lt;br /&gt;
                    if current_len &amp;gt; max_len:&lt;br /&gt;
                        max_len = current_len&lt;br /&gt;
                        start_num = i - current_len&lt;br /&gt;
                    current_len = 0&lt;br /&gt;
            if current_len &amp;gt; max_len:&lt;br /&gt;
                max_len = current_len&lt;br /&gt;
                start_num = k - current_len + 1&lt;br /&gt;
            f.write(f&amp;quot;{start_num} {max_len}\n&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def conform_restrictiilor():&lt;br /&gt;
    with open(&#039;prim997.in&#039;) as f:&lt;br /&gt;
        n = int(f.readline())&lt;br /&gt;
        vector = list(map(int, f.read().split()))&lt;br /&gt;
    if n &amp;gt; 100000:&lt;br /&gt;
        print(&amp;quot;Datele nu sunt conform restricțiilor impuse.&amp;quot;)&lt;br /&gt;
        exit()&lt;br /&gt;
    for x in vector:&lt;br /&gt;
        if x &amp;gt; 10000000:&lt;br /&gt;
            print(&amp;quot;Datele nu sunt conform restricțiilor impuse.&amp;quot;)&lt;br /&gt;
            exit()&lt;br /&gt;
    print(&amp;quot;Datele sunt corecte.&amp;quot;)&lt;br /&gt;
    return n, vector&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    n, vector = conform_restrictiilor()&lt;br /&gt;
    prim997(vector,n)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Explicaţie cod==&lt;br /&gt;
&lt;br /&gt;
Funcția &#039;&#039;&#039;este_prim(n)&#039;&#039;&#039; primește un număr întreg &#039;&#039;&#039;n&#039;&#039;&#039; și returnează True dacă &#039;&#039;&#039;n&#039;&#039;&#039; este un număr prim, iar False altfel. Algoritmul de verificare a numărului prim verifică dacă &#039;&#039;&#039;n&#039;&#039;&#039; este mai mic decât 2 și dacă este divizibil cu oricare dintre numerele din intervalul &#039;&#039;&#039;[2, sqrt(n)]&#039;&#039;&#039;.&lt;br /&gt;
Funcția &#039;&#039;&#039;prim997(nums, n)&#039;&#039;&#039; primește o listă de numere întregi nums și un număr întreg &#039;&#039;&#039;n&#039;&#039;&#039; și determină pentru fiecare număr din lista &#039;&#039;&#039;nums&#039;&#039;&#039; cel mai lung subșir format din numere non-prime consecutive. Pentru fiecare număr din listă, se parcurge intervalul &#039;&#039;&#039;[1, k]&#039;&#039;&#039; și se actualizează variabilele &#039;&#039;&#039;max_len&#039;&#039;&#039; (lungimea maximă a unui subșir de numere non-prime consecutive), &#039;&#039;&#039;start_num&#039;&#039;&#039; (primul număr din cel mai lung subșir de numere non-prime consecutive) și &#039;&#039;&#039;current_len&#039;&#039;&#039; (lungimea curentă a unui subșir de numere non-prime consecutive) în funcție de starea curentă a numărului verificat. La final, se scriu în fișierul &#039;&#039;&#039;prim997.out&#039;&#039;&#039; valorile găsite pentru fiecare număr din lista &#039;&#039;&#039;nums&#039;&#039;&#039;.&lt;br /&gt;
Funcția &#039;&#039;&#039;conform_restrictiilor()&#039;&#039;&#039; citește din fișierul &#039;&#039;&#039;prim997.in&#039;&#039;&#039; un număr întreg &#039;&#039;&#039;n&#039;&#039;&#039; și o listă de numere întregi vector și verifică dacă acestea respectă restricțiile impuse (n ≤ 10^5, valoarea fiecărui element din vector ≤ 10^7). Dacă datele sunt conforme, funcția returnează cele două variabile citite din fișier.&lt;/div&gt;</summary>
		<author><name>Csula Beatrice</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=2325_-_prim003&amp;diff=5698</id>
		<title>2325 - prim003</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=2325_-_prim003&amp;diff=5698"/>
		<updated>2023-04-30T15:00:45Z</updated>

		<summary type="html">&lt;p&gt;Csula Beatrice: /* Explicaţie cod */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Sursa: [https://www.pbinfo.ro/probleme/2325/prim003 - prim003]&lt;br /&gt;
----&lt;br /&gt;
== Cerinţa ==&lt;br /&gt;
Anul &#039;&#039;&#039;2017&#039;&#039;&#039; tocmai s-a încheiat, suntem trişti deoarece era număr prim, însă avem şi o veste bună, anul 2018 este produs de două numere prime, &#039;&#039;&#039;2&#039;&#039;&#039; şi &#039;&#039;&#039;1009&#039;&#039;&#039;. Dorel, un adevărat colecţionar de numere prime, şi-a pus întrebarea: “Câte numere dintr-un interval [a,b] se pot scrie ca produs de două numere prime? “.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Programul citește de la tastatură numărul natural &#039;&#039;&#039;t&#039;&#039;&#039;, iar apoi &#039;&#039;&#039;t&#039;&#039;&#039; perechi de numere naturale &#039;&#039;&#039;a,b&#039;&#039;&#039; cu &#039;&#039;&#039;a≤b&#039;&#039;&#039;, 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: &lt;br /&gt;
&amp;quot;Datele sunt corecte.&amp;quot;, iar apoi va afișa pe ecran, pentru fiecare pereche &#039;&#039;&#039;a,b&#039;&#039;&#039;, numărul numerelor din intervalul &#039;&#039;&#039;[a,b]&#039;&#039;&#039; care se pot scrie ca produs de două numere prime. În caz contrar, se va afișa pe ecran: &amp;quot;Datele nu sunt comform restricțiilor impuse.&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Restricţii şi precizări ==&lt;br /&gt;
* 1 ≤ &#039;&#039;&#039;t&#039;&#039;&#039; ≤ 100.000&lt;br /&gt;
* 1 ≤ &#039;&#039;&#039;a, b&#039;&#039;&#039; ≤ 1.000.000&lt;br /&gt;
== Exemple ==&lt;br /&gt;
===Exemplul 1===&lt;br /&gt;
; Intrare&lt;br /&gt;
: 3&lt;br /&gt;
: 1 7&lt;br /&gt;
: 10 30&lt;br /&gt;
: 88 100&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele sunt corecte.&lt;br /&gt;
: 2 7 4&lt;br /&gt;
===Exemplul 2===&lt;br /&gt;
; Intrare&lt;br /&gt;
: 5&lt;br /&gt;
: 1 10&lt;br /&gt;
: 26 40&lt;br /&gt;
: 15 90&lt;br /&gt;
: 90 111&lt;br /&gt;
: 1431 1530&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele sunt corecte.&lt;br /&gt;
: 4 6 25 6 24 &lt;br /&gt;
===Exemplul 3===&lt;br /&gt;
; Intrare&lt;br /&gt;
: 2 &lt;br /&gt;
: 314515341535441 412351541241&lt;br /&gt;
: 29 49&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele nu sunt comform restricțiilor impuse.&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;
#2325 prim003&lt;br /&gt;
&lt;br /&gt;
def este_prim(n):&lt;br /&gt;
    if n &amp;lt; 2:&lt;br /&gt;
        return False&lt;br /&gt;
    for i in range(2, int(n ** 0.5) + 1):&lt;br /&gt;
        if n % i == 0:&lt;br /&gt;
            return False&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
    &lt;br /&gt;
def conform_restrictiilor(vector,t):&lt;br /&gt;
    for i in range(0, t*2,2):&lt;br /&gt;
            a = vector[i]&lt;br /&gt;
            b = vector[i+1]&lt;br /&gt;
            if a &amp;lt;= 0 or b &amp;lt;= 0 or a &amp;gt; 1000000 or b &amp;gt; 1000000 or a &amp;gt; b or t &amp;gt; 100000 or t &amp;lt; 1:&lt;br /&gt;
                print(&amp;quot;Datele nu sunt conform restricțiilor impuse.&amp;quot;)&lt;br /&gt;
                return False&lt;br /&gt;
    print(&amp;quot;Datele sunt corecte.&amp;quot;)&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    t = int (input())&lt;br /&gt;
    vector = list()&lt;br /&gt;
    for _ in range(t):&lt;br /&gt;
        a , b = map(int,input().split())&lt;br /&gt;
        vector.append(a)&lt;br /&gt;
        vector.append(b)&lt;br /&gt;
    if conform_restrictiilor(vector,t) is True:&lt;br /&gt;
        for i in range(0, t*2,2):&lt;br /&gt;
            a = vector[i]&lt;br /&gt;
            b = vector[i+1]&lt;br /&gt;
            contor = 0&lt;br /&gt;
            for numere in range(a, b+1):&lt;br /&gt;
                for i in range(2, numere):&lt;br /&gt;
                    if este_prim(i) and numere % i == 0 and este_prim(numere // i):&lt;br /&gt;
                        contor += 1&lt;br /&gt;
                        break&lt;br /&gt;
            print(contor,end=&#039; &#039;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Explicaţie cod==&lt;br /&gt;
&lt;br /&gt;
Acest cod implementează un program care primește ca intrare un număr întreg &#039;&#039;&#039;t&#039;&#039;&#039; și apoi &#039;&#039;&#039;t&#039;&#039;&#039; perechi de numere întregi &#039;&#039;&#039;a&#039;&#039;&#039; și &#039;&#039;&#039;b&#039;&#039;&#039;. Programul numără câte perechi de numere primesc un număr compus din produsul a două numere prime. Programul verifică dacă datele de intrare sunt conforme cu restricțiile impuse și afișează un mesaj corespunzător dacă nu sunt. Pentru a verifica dacă un număr este prim, programul utilizează funcția &#039;&#039;&#039;este_prim&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Funcția &#039;&#039;&#039;conform_restrictiilor&#039;&#039;&#039; verifică dacă valorile &#039;&#039;&#039;a&#039;&#039;&#039; și &#039;&#039;&#039;b&#039;&#039;&#039; din fiecare pereche de numere întregi sunt cuprinse în intervalul [1, 1 000 000], iar dacă &#039;&#039;&#039;t&#039;&#039;&#039; se află în intervalul [1, 100 000]. Dacă valorile dintr-o pereche de numere sunt în afara intervalului sau &#039;&#039;&#039;a&#039;&#039;&#039; este mai mare decât &#039;&#039;&#039;b&#039;&#039;&#039;, funcția va returna False și va afișa un mesaj corespunzător.&lt;br /&gt;
&lt;br /&gt;
În funcția &#039;&#039;&#039;main&#039;&#039;&#039;, programul primește datele de intrare sub forma unui număr întreg &#039;&#039;&#039;t&#039;&#039;&#039; și a unei liste de perechi de numere întregi. Dacă datele sunt conforme cu restricțiile impuse, programul va număra câte perechi de numere primesc un număr compus din produsul a două numere prime folosind un contor și afișează numărul la ieșire.&lt;/div&gt;</summary>
		<author><name>Csula Beatrice</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=2533_-_SecventaIncadrata&amp;diff=5697</id>
		<title>2533 - SecventaIncadrata</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=2533_-_SecventaIncadrata&amp;diff=5697"/>
		<updated>2023-04-30T14:57:50Z</updated>

		<summary type="html">&lt;p&gt;Csula Beatrice: /* Explicaţie cod */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Sursa: [https://www.pbinfo.ro/probleme/2533/secventaincadrata - SecventaIncadrata]&lt;br /&gt;
----&lt;br /&gt;
== Cerinţa ==&lt;br /&gt;
Numim &#039;&#039;&#039;secvență încadrată&#039;&#039;&#039; a unui șir de numere naturale un subșir al acestuia, format din termeni aflați pe poziții consecutive în șirul dat, subșir care începe și se termină cu aceeași valoare. Lungimea secvenței este egală cu numărul de termeni ai acesteia.&lt;br /&gt;
&lt;br /&gt;
Să se determine secvențele încadrate dintr-un șir, care au lungimea maximă.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Fișierul de intrare &#039;&#039;&#039;secventaincadrata.in&#039;&#039;&#039; conține cel puțin &#039;&#039;&#039;două&#039;&#039;&#039; și cel mult &#039;&#039;&#039;106&#039;&#039;&#039; numere naturale din intervalul &#039;&#039;&#039;[0,9]&#039;&#039;&#039;, separate printr-un 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;
&amp;quot;Datele sunt corecte.&amp;quot;, iar apoi in fișierul de ieșire &#039;&#039;&#039;secventaincadrata.out&#039;&#039;&#039; va conține pe prima linie numărul &#039;&#039;&#039;L&#039;&#039;&#039;, reprezentând lungimea maximă a secvențelor încadrate, iar pe a doua linie a fișierului valoarea primului termen al fiecărei secvențe încadrate de lungime maximă, în ordine crescătoare și separate printr-un spațiu. În caz contrar, se va afișa pe ecran: &amp;quot;Datele nu sunt comform restricțiilor impuse.&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Restricţii şi precizări ==&lt;br /&gt;
* în șir există ce puțin doi termeni egali&lt;br /&gt;
* proiectați un algoritm eficient din punctul de vedere al timpului de executare și a memoriei utilizate&lt;br /&gt;
* se recomandă o soluție care să evite stocarea tuturor valorilor citite într-un tablou sau într-o altă structură de date similară&lt;br /&gt;
== Exemple ==&lt;br /&gt;
===Exemplul 1===&lt;br /&gt;
; secventaincadrata.in&lt;br /&gt;
: 3 1 5 2 4 5 5 2 5 9 5 7 4 6 8 0 8&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele sunt corecte.&lt;br /&gt;
; secventaincadrata.out&lt;br /&gt;
: 9&lt;br /&gt;
: 4 5&lt;br /&gt;
===Exemplul 2===&lt;br /&gt;
; secventaincadrata.in&lt;br /&gt;
: 9 0 1 3 4 7 1 8 9 1 3 1 2 3 4 6&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele sunt corecte.&lt;br /&gt;
; secventaincadrata.out&lt;br /&gt;
: 11&lt;br /&gt;
: 3 4&lt;br /&gt;
===Exemplul 3===&lt;br /&gt;
; secventaincadrata.in&lt;br /&gt;
: 314441 41241241&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele nu sunt comform restricțiilor impuse.&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;
#2533 secventaincadrata&lt;br /&gt;
&lt;br /&gt;
def secventaincadrata(vector):&lt;br /&gt;
     with open(&amp;quot;secventaincadrata.out&amp;quot;,&amp;quot;w&amp;quot;) as f:&lt;br /&gt;
        A = [float(&#039;inf&#039;)] * 10&lt;br /&gt;
        lmax = [0] * 10&lt;br /&gt;
        L = 0&lt;br /&gt;
        i = 1&lt;br /&gt;
&lt;br /&gt;
        for x in vector:&lt;br /&gt;
            lmax[x] = max(i - A[x] + 1, lmax[x])&lt;br /&gt;
            if A[x] == float(&#039;inf&#039;):&lt;br /&gt;
                A[x] = i&lt;br /&gt;
            L = max(lmax[x], L)&lt;br /&gt;
            i += 1&lt;br /&gt;
&lt;br /&gt;
        f.write(str(L) + &#039;\n&#039;)&lt;br /&gt;
        for i in range(10):&lt;br /&gt;
            if lmax[i] == L:&lt;br /&gt;
                f.write(str(i) + &#039; &#039;)&lt;br /&gt;
        f.write(&#039;\n&#039;)&lt;br /&gt;
    &lt;br /&gt;
def conform_restrictiilor():&lt;br /&gt;
    with open(&#039;secventaincadrata.in&#039;) as f:&lt;br /&gt;
        vector = list(map(int, f.read().split()))&lt;br /&gt;
    if len(vector) &amp;lt; 2 or len(vector) &amp;gt; 106:&lt;br /&gt;
        print(&amp;quot;Datele nu sunt conform restricțiilor impuse.&amp;quot;)&lt;br /&gt;
        exit()&lt;br /&gt;
    for x in vector:&lt;br /&gt;
        if x &amp;gt; 9:&lt;br /&gt;
            print(&amp;quot;Datele nu sunt conform restricțiilor impuse.&amp;quot;)&lt;br /&gt;
            exit()&lt;br /&gt;
    print(&amp;quot;Datele sunt corecte.&amp;quot;)&lt;br /&gt;
    return vector &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    vector= conform_restrictiilor()&lt;br /&gt;
    secventaincadrata(vector)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Explicaţie cod==&lt;br /&gt;
&lt;br /&gt;
cest cod implementează o funcție &#039;&#039;&#039;secventaincadrata&#039;&#039;&#039; care primește un &#039;&#039;&#039;vector&#039;&#039;&#039; de numere întregi și calculează lungimea celei mai lungi subsecvențe a vectorului care conține cel puțin două elemente și în care toate elementele sunt identice sau difera cel mult cu o unitate.&lt;br /&gt;
&lt;br /&gt;
De asemenea, programul verifică dacă datele de intrare sunt valide (două sau mai multe elemente, fiecare element să fie un număr întreg între 0 și 9), iar apoi apelează funcția &#039;&#039;&#039;secventaincadrata&#039;&#039;&#039; cu vectorul de intrare dat.&lt;br /&gt;
&lt;br /&gt;
Funcția &#039;&#039;&#039;secventaincadrata&#039;&#039;&#039; folosește o listă &#039;&#039;&#039;A&#039;&#039;&#039; și o listă &#039;&#039;&#039;lmax&#039;&#039;&#039;. Listele au dimensiunea 10 și reprezintă valori auxiliare folosite în calcularea lungimii subsecvenței cerute.&lt;br /&gt;
&lt;br /&gt;
Pe parcursul parcurgerii vectorului, pentru fiecare element, se calculează lungimea maximă a subsecvenței în care toate elementele sunt identice sau difera cel mult cu o unitate și care se termină cu elementul curent. Aceasta se face folosind formula &#039;&#039;&#039;max(i - A[x] + 1, lmax[x])&#039;&#039;&#039;, unde &#039;&#039;&#039;i&#039;&#039;&#039; este indicele curent al elementului, &#039;&#039;&#039;x&#039;&#039;&#039; este valoarea elementului și &#039;&#039;&#039;A[x]&#039;&#039;&#039; este poziția celui mai recent element cu valoarea &#039;&#039;&#039;x&#039;&#039;&#039;. De asemenea, se actualizează lista &#039;&#039;&#039;A&#039;&#039;&#039;, astfel încât &#039;&#039;&#039;A[x]&#039;&#039;&#039; să conțină poziția curentă &#039;&#039;&#039;i&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
La final, programul scrie în fișierul &#039;&#039;&#039;secventaincadrata.out&#039;&#039;&#039; lungimea celei mai lungi subsecvențe găsite și afișează subsecvențele cu această lungime.&lt;/div&gt;</summary>
		<author><name>Csula Beatrice</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=2328_-_prim013&amp;diff=5696</id>
		<title>2328 - prim013</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=2328_-_prim013&amp;diff=5696"/>
		<updated>2023-04-30T14:56:21Z</updated>

		<summary type="html">&lt;p&gt;Csula Beatrice: /* Explicaţie cod */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Sursa: [https://www.pbinfo.ro/probleme/2328/prim013 - prim013]&lt;br /&gt;
----&lt;br /&gt;
== Cerinţa ==&lt;br /&gt;
Dorel este pasionat de feng shui. Astfel, pentru a-şi crea un cadru adecvat meditaţiei, s-a hotărât să scrie pe pereţii casei numere care au un număr prim de divizori. El a găsit n numere, însă nu ştie să le aleagă pe cele potrivite.&lt;br /&gt;
Se dau &#039;&#039;&#039;n&#039;&#039;&#039; numere naturale. Aflaţi câte dintre acestea au un număr prim de divizori.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Fișierul de intrare &#039;&#039;&#039;prim013.in&#039;&#039;&#039; conține pe prima linie numărul &#039;&#039;&#039;n&#039;&#039;&#039;, iar pe a doua linie &#039;&#039;&#039;n&#039;&#039;&#039; numere naturale nenule 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: &lt;br /&gt;
&amp;quot;Datele sunt corecte.&amp;quot;, iar apoi in fișierul de ieșire &#039;&#039;&#039;prim013.out&#039;&#039;&#039; va conține pe prima linie numărul de numere care au un număr prim de divizori. În caz contrar, se va afișa pe ecran: &amp;quot;Datele nu sunt comform restricțiilor impuse.&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Restricţii şi precizări ==&lt;br /&gt;
* 1 ≤ &#039;&#039;&#039;n&#039;&#039;&#039; ≤ 1.000.000&lt;br /&gt;
* numerele de pe a doua linie a fișierului de intrare vor fi mai mici decât &#039;&#039;&#039;10.000.000&#039;&#039;&#039;&lt;br /&gt;
== Exemple ==&lt;br /&gt;
===Exemplul 1===&lt;br /&gt;
; prim013.in&lt;br /&gt;
: 5&lt;br /&gt;
: 1 3 6 9 625&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele sunt corecte.&lt;br /&gt;
; prim013.out&lt;br /&gt;
: 3&lt;br /&gt;
===Exemplul 2===&lt;br /&gt;
; prim013.in&lt;br /&gt;
: 5&lt;br /&gt;
: 1 10 12 15 19999&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele sunt corecte.&lt;br /&gt;
; prim013.out&lt;br /&gt;
: 0&lt;br /&gt;
===Exemplul 3===&lt;br /&gt;
; prim013.in&lt;br /&gt;
: 2 &lt;br /&gt;
: 314441 41241241&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele nu sunt comform restricțiilor impuse.&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;
#2328 prim013&lt;br /&gt;
&lt;br /&gt;
def este_prim(n):&lt;br /&gt;
    if n &amp;lt; 2:&lt;br /&gt;
        return False&lt;br /&gt;
    for i in range(2, int(n ** 0.5) + 1):&lt;br /&gt;
        if n % i == 0:&lt;br /&gt;
            return False&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def prim013(n,vector):&lt;br /&gt;
    numere_cu_divizori_primi = 0&lt;br /&gt;
    for num in vector:&lt;br /&gt;
        num_divizori = 0&lt;br /&gt;
        for i in range(1, num + 1):&lt;br /&gt;
            if num % i == 0:&lt;br /&gt;
                num_divizori += 1&lt;br /&gt;
        if este_prim(num_divizori):&lt;br /&gt;
            numere_cu_divizori_primi += 1&lt;br /&gt;
    with open(&#039;prim013.out&#039;,&#039;w&#039;) as f:&lt;br /&gt;
        f.write(str(numere_cu_divizori_primi))&lt;br /&gt;
    &lt;br /&gt;
&lt;br /&gt;
def conform_restrictiilor():&lt;br /&gt;
    with open(&#039;prim013.in&#039;) as f:&lt;br /&gt;
        n = int(f.readline())&lt;br /&gt;
        vector = list(map(int, f.read().split()))&lt;br /&gt;
    if n &amp;gt; 1000000:&lt;br /&gt;
        print(&amp;quot;Datele nu sunt conform restricțiilor impuse.&amp;quot;)&lt;br /&gt;
        exit()&lt;br /&gt;
    for x in vector:&lt;br /&gt;
        if x &amp;gt; 10000000:&lt;br /&gt;
            print(&amp;quot;Datele nu sunt conform restricțiilor impuse.&amp;quot;)&lt;br /&gt;
            exit()&lt;br /&gt;
    print(&amp;quot;Datele sunt corecte.&amp;quot;)&lt;br /&gt;
    return n , vector &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    n , vector= conform_restrictiilor()&lt;br /&gt;
    prim013(n , vector)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Explicaţie cod==&lt;br /&gt;
&lt;br /&gt;
Acest cod implementează o funcție numită &#039;&#039;&#039;prim013&#039;&#039;&#039;, care primește un număr întreg &#039;&#039;&#039;n&#039;&#039;&#039; și un vector de &#039;&#039;&#039;n&#039;&#039;&#039; numere întregi &#039;&#039;&#039;vector&#039;&#039;&#039;, și își propune să determine numărul de elemente din vector care au un număr prim de divizori.&lt;br /&gt;
&lt;br /&gt;
Funcția &#039;&#039;&#039;este_prim&#039;&#039;&#039; este o funcție ajutătoare care primește un număr întreg și returnează adevărat dacă numărul este prim, iar fals în caz contrar.&lt;br /&gt;
&lt;br /&gt;
Funcția &#039;&#039;&#039;conform_restrictiilor&#039;&#039;&#039; citește datele de intrare din fișierul &#039;&#039;&#039;prim013.in&#039;&#039;&#039; și verifică dacă acestea respectă restricțiile impuse. În cazul în care datele nu sunt conforme, programul se încheie prin apelarea funcției &#039;&#039;&#039;exit()&#039;&#039;&#039;, iar în cazul în care datele sunt conforme, funcția returnează cele două variabile &#039;&#039;&#039;n&#039;&#039;&#039; și &#039;&#039;&#039;vector&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Funcția &#039;&#039;&#039;prim013&#039;&#039;&#039; parcurge fiecare element din &#039;&#039;&#039;vector&#039;&#039;&#039; și numără numărul de divizori ai fiecărui element. Dacă numărul de divizori este prim, acesta este adăugat la numărul total de elemente cu număr prim de divizori. Rezultatul este scris în fișierul &#039;&#039;&#039;prim013.out&#039;&#039;&#039;.&lt;/div&gt;</summary>
		<author><name>Csula Beatrice</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=3499_-_Secv011&amp;diff=5694</id>
		<title>3499 - Secv011</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=3499_-_Secv011&amp;diff=5694"/>
		<updated>2023-04-30T14:50:39Z</updated>

		<summary type="html">&lt;p&gt;Csula Beatrice: /* Explicaţie cod */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Sursa: [https://www.pbinfo.ro/probleme/3499/secv011 - Secv011]&lt;br /&gt;
----&lt;br /&gt;
== Cerinţa ==&lt;br /&gt;
Se dă un șir &#039;&#039;&#039;A&#039;&#039;&#039; format din &#039;&#039;&#039;n&#039;&#039;&#039; elemente din mulțimea &#039;&#039;&#039;{0,1}&#039;&#039;&#039;. Numim secvență a șirului &#039;&#039;&#039;A&#039;&#039;&#039; orice succesiune de elemente situate pe poziții consecutive în șir. Numim secvență a șirului &#039;&#039;&#039;A&#039;&#039;&#039; orice succesiune de elemente situate pe poziții consecutive în șir.&lt;br /&gt;
Să se determine numărul de secvențe ale șirului &#039;&#039;&#039;A&#039;&#039;&#039; ce conțin de două ori mai mulți de &#039;&#039;&#039;1&#039;&#039;&#039; decât de &#039;&#039;&#039;0&#039;&#039;&#039;.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Pe prima linie a fișierului &#039;&#039;&#039;secv011.in&#039;&#039;&#039; se află numărul &#039;&#039;&#039;n&#039;&#039;&#039;. Pe următoarea linie se află cele &#039;&#039;&#039;n&#039;&#039;&#039; elemente ale șirului , 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: &lt;br /&gt;
&amp;quot;Datele sunt corecte.&amp;quot;, iar apoi in fișierul de ieșire &#039;&#039;&#039;secv011.out&#039;&#039;&#039; va conține pe prima linie numărul cerut. În caz contrar, se va afișa pe ecran: &amp;quot;Datele nu sunt comform restricțiilor impuse.&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Restricţii şi precizări ==&lt;br /&gt;
* 1 ≤ &#039;&#039;&#039;n&#039;&#039;&#039; ≤ 1.000.000&lt;br /&gt;
== Exemple ==&lt;br /&gt;
===Exemplul 1===&lt;br /&gt;
; secv011.in&lt;br /&gt;
: 6&lt;br /&gt;
: 1 0 1 1 1 0&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele sunt corecte.&lt;br /&gt;
; secv011.out&lt;br /&gt;
: 4&lt;br /&gt;
===Exemplul 2===&lt;br /&gt;
; secv011.in&lt;br /&gt;
: 10 &lt;br /&gt;
: 1 0 0 0 1 1 1 0 0 0&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele sunt corecte.&lt;br /&gt;
; secv011.out&lt;br /&gt;
: 2&lt;br /&gt;
===Exemplul 3===&lt;br /&gt;
; secv011.in&lt;br /&gt;
: 2 &lt;br /&gt;
: 314441 41241241&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele nu sunt comform restricțiilor impuse.&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;
#0302 Secv011&lt;br /&gt;
&lt;br /&gt;
def secv011(vector,n):&lt;br /&gt;
    f = open(&amp;quot;secv011.out&amp;quot;,&amp;quot;w&amp;quot;)&lt;br /&gt;
    contor = 0 &lt;br /&gt;
    zero = 0 &lt;br /&gt;
    unu = 0 &lt;br /&gt;
    for i in range(n):&lt;br /&gt;
        for j in range(i,n):&lt;br /&gt;
            if vector[j] == 0:&lt;br /&gt;
                zero += 1&lt;br /&gt;
            else:&lt;br /&gt;
                unu +=1&lt;br /&gt;
            if unu &amp;gt; 1 and unu == 2 * zero:&lt;br /&gt;
                contor += 1&lt;br /&gt;
        zero = 0&lt;br /&gt;
        unu = 0&lt;br /&gt;
    f.write(str(contor))&lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
def conform_restrictiilor():&lt;br /&gt;
    with open(&#039;secv011.in&#039;) as f:&lt;br /&gt;
        n = int(f.readline().strip())&lt;br /&gt;
        vector = list(map(int, f.read().split()))&lt;br /&gt;
    if not 1 &amp;lt;= n &amp;lt;= 100000:&lt;br /&gt;
        print(&amp;quot;Datele nu sunt conform restricțiilor impuse.&amp;quot;)&lt;br /&gt;
        exit()&lt;br /&gt;
    for x in vector:&lt;br /&gt;
        if x &amp;gt; 1:&lt;br /&gt;
            print(&amp;quot;Datele nu sunt conform restricțiilor impuse.&amp;quot;)&lt;br /&gt;
            exit()&lt;br /&gt;
    print(&amp;quot;Datele sunt corecte.&amp;quot;)&lt;br /&gt;
    return n, vector &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    n, vector= conform_restrictiilor()&lt;br /&gt;
    secv011(vector,n)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Explicaţie cod==&lt;br /&gt;
&lt;br /&gt;
Acesta este un program care citeste un vector de numere intregi din fisierul &#039;&#039;&#039;secv011.in&#039;&#039;&#039;, verifica daca exista secvente de cel putin doua cifre &#039;&#039;&#039;1&#039;&#039;&#039; consecutive, separate de o secventa de cifre &#039;&#039;&#039;0&#039;&#039;&#039; si afiseaza numarul total de astfel de secvente in fisierul &#039;&#039;&#039;secv011.out&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Functia &#039;&#039;&#039;conform_restrictiilor()&#039;&#039;&#039; citeste datele de intrare din fisierul &#039;&#039;&#039;secv011.in&#039;&#039;&#039; si verifica daca sunt conforme cu restrictiile impuse. In cazul in care acestea nu sunt conforme, se afiseaza un mesaj de eroare si programul se termina. Daca datele sunt conforme, functia returneaza vectorul &#039;&#039;&#039;vector&#039;&#039;&#039; si lungimea acestuia &#039;&#039;&#039;n&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Functia &#039;&#039;&#039;secv011(vector, n)&#039;&#039;&#039; calculeaza numarul de secvente valide din &#039;&#039;&#039;vector&#039;&#039;&#039;. Pentru fiecare subsecventa a vectorului, numara cate cifre &#039;&#039;&#039;0&#039;&#039;&#039; si cate cifre &#039;&#039;&#039;1&#039;&#039;&#039; sunt prezente si verifica daca exista o secventa de cel putin doua cifre &#039;&#039;&#039;1&#039;&#039;&#039; consecutive, separate de o secventa de cifre &#039;&#039;&#039;0&#039;&#039;&#039;. Daca exista, incrementarea contorului &#039;&#039;&#039;contor&#039;&#039;&#039;. La final, functia afiseaza valoarea contorului in fisierul &#039;&#039;&#039;secv011.out&#039;&#039;&#039;.&lt;/div&gt;</summary>
		<author><name>Csula Beatrice</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=2906_-_Potrivire&amp;diff=5693</id>
		<title>2906 - Potrivire</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=2906_-_Potrivire&amp;diff=5693"/>
		<updated>2023-04-30T14:48:14Z</updated>

		<summary type="html">&lt;p&gt;Csula Beatrice: /* Explicaţie cod */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Sursa: [https://www.pbinfo.ro/probleme/2906/potrivire - Potrivire]&lt;br /&gt;
----&lt;br /&gt;
== Cerinţa ==&lt;br /&gt;
Gigel a găsit un șir de &#039;&#039;&#039;n&#039;&#039;&#039; cifre minunate. A adormit cu ele în brațe și a visat &#039;&#039;&#039;m&#039;&#039;&#039; numere naturale. Nedumerit, a cerut părerea vrăjitoarei Ghiocica. Acesta i-a spus:&lt;br /&gt;
&lt;br /&gt;
* - Gigele, ești norocos. Suma numerelor distincte visate care sunt scrise cu cifre consecutive în șirul de cifre minunate este suma pe care o vei câștiga la Loto.&lt;br /&gt;
&lt;br /&gt;
Nerăbdător, Gigel vă roagă să scrieți un program care să citească cele &#039;&#039;&#039;n&#039;&#039;&#039; cifre și cele &#039;&#039;&#039;m&#039;&#039;&#039; numere și să determine suma pe care o va câștiga la Loto.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Fișierul de intrare &#039;&#039;&#039;potrivire.in&#039;&#039;&#039; conține pe prima linie numărul &#039;&#039;&#039;n&#039;&#039;&#039;; a doua linie conține șirul de &#039;&#039;&#039;n&#039;&#039;&#039; cifre. A treia linie conține numărul &#039;&#039;&#039;m&#039;&#039;&#039;, iar a patra linie conține cele &#039;&#039;&#039;m&#039;&#039;&#039; numere.&lt;br /&gt;
== Date de ieșire == &lt;br /&gt;
Dacă datele sunt introduse corect, pe ecran se va afișa: &lt;br /&gt;
&amp;quot;Datele sunt corecte.&amp;quot;, iar apoi in fișierul de ieșire &#039;&#039;&#039;potrivire.out&#039;&#039;&#039; va conține pe prima linie numărul &#039;&#039;&#039;S&#039;&#039;&#039;, reprezentând suma pe care o va câștiga Gigel. În caz contrar, se va afișa pe ecran: &amp;quot;Datele nu sunt comform restricțiilor impuse.&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Restricţii şi precizări ==&lt;br /&gt;
* 1 ≤ &#039;&#039;&#039;n, m&#039;&#039;&#039; ≤ 100.000&lt;br /&gt;
* pentru 50% din teste, 1 ≤ &#039;&#039;&#039;n, m&#039;&#039;&#039; ≤ 1000&lt;br /&gt;
* cele &#039;&#039;&#039;m&#039;&#039;&#039; numere visate sunt numere naturale și au cel mult cinci cifre&lt;br /&gt;
== Exemple ==&lt;br /&gt;
===Exemplul 1===&lt;br /&gt;
; potrivire.in&lt;br /&gt;
: 10&lt;br /&gt;
: 4 5 6 2 6 0 7 1 9 7&lt;br /&gt;
: 6&lt;br /&gt;
: 456 662 2607 2607 97 975&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele sunt corecte.&lt;br /&gt;
; potrivire.out&lt;br /&gt;
: 3160&lt;br /&gt;
===Exemplul 2===&lt;br /&gt;
; potrivire.in&lt;br /&gt;
: 6&lt;br /&gt;
: 1 0 3 1 4 5&lt;br /&gt;
: 8 &lt;br /&gt;
: 111 1231 4124 5741 4124 22 21 12&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele sunt corecte.&lt;br /&gt;
; potrivire.out&lt;br /&gt;
: 0&lt;br /&gt;
===Exemplul 3===&lt;br /&gt;
; potrivire.in&lt;br /&gt;
: 10&lt;br /&gt;
: 4 5 6 2 6 0 7 1 9 7&lt;br /&gt;
: 2&lt;br /&gt;
: 12414124215 1251251512&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele nu sunt comform restricțiilor impuse.&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;
#2906 - Potrivire&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def potrivire(n, cifre, m, numere_visate):&lt;br /&gt;
    f = open(&amp;quot;potrivire.out&amp;quot;, &amp;quot;w&amp;quot;)&lt;br /&gt;
    frecventa = {}&lt;br /&gt;
    s = 0&lt;br /&gt;
    for i in range(n):&lt;br /&gt;
        num = 0&lt;br /&gt;
        for j in range(i, min(i + 4, n)):&lt;br /&gt;
            num = num * 10 + cifre[j]&lt;br /&gt;
            if num not in frecventa:&lt;br /&gt;
                frecventa[num] = 0&lt;br /&gt;
            frecventa[num] += 1&lt;br /&gt;
    for i in range(m):&lt;br /&gt;
        if numere_visate[i] in frecventa and frecventa[numere_visate[i]] != 0 and frecventa[numere_visate[i]] != -1:&lt;br /&gt;
            s += numere_visate[i]&lt;br /&gt;
            frecventa[numere_visate[i]] = -1&lt;br /&gt;
    f.write(str(s))&lt;br /&gt;
    f.close()&lt;br /&gt;
&lt;br /&gt;
def conform_restrictiilor():&lt;br /&gt;
    with open(&amp;quot;potrivire.in&amp;quot;, &amp;quot;r&amp;quot;) as f:&lt;br /&gt;
        n = int(f.readline())&lt;br /&gt;
        cifre = list(map(int, f.readline().split()))&lt;br /&gt;
        m = int(f.readline())&lt;br /&gt;
        numere_visate = list(map(int, f.readline().split()))&lt;br /&gt;
        if not (1 &amp;lt;= m &amp;lt;= 100000) and not (1 &amp;lt;= n &amp;lt;= 100000):&lt;br /&gt;
            print(&amp;quot;Datele nu sunt conform restricțiilor impuse.&amp;quot;)&lt;br /&gt;
            exit()&lt;br /&gt;
        for x in numere_visate:&lt;br /&gt;
            if x &amp;gt; 100000:&lt;br /&gt;
                print(&amp;quot;Datele nu sunt conform restricțiilor impuse.&amp;quot;)&lt;br /&gt;
                exit()&lt;br /&gt;
        for x in cifre:&lt;br /&gt;
            if x &amp;gt;= 10:&lt;br /&gt;
                print(&amp;quot;Datele nu sunt conform restricțiilor impuse.&amp;quot;)&lt;br /&gt;
                exit()&lt;br /&gt;
        print(&amp;quot;Datele sunt corecte.&amp;quot;)&lt;br /&gt;
        return n, cifre, m, numere_visate&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    n, cifre, m, numere_visate = conform_restrictiilor()&lt;br /&gt;
    potrivire(n, cifre, m, numere_visate)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Explicaţie cod==&lt;br /&gt;
&lt;br /&gt;
Funcția &#039;&#039;&#039;conform_restrictiilor()&#039;&#039;&#039; verifică dacă datele de intrare sunt conforme cu restricțiile impuse în problemă, respectiv: &#039;&#039;&#039;n&#039;&#039;&#039; și &#039;&#039;&#039;m&#039;&#039;&#039; trebuie să fie între 1 și 100.000, inclusiv, cifre și numere_visate trebuie să conțină numere între 0 și 100.000, inclusiv, iar cifrele din cifre trebuie să fie mai mici decât 10.&lt;br /&gt;
&lt;br /&gt;
Funcția &#039;&#039;&#039;potrivire()&#039;&#039;&#039; primește ca argumente &#039;&#039;&#039;n&#039;&#039;&#039;, &#039;&#039;&#039;cifre&#039;&#039;&#039;, &#039;&#039;&#039;m&#039;&#039;&#039; și &#039;&#039;&#039;numere_visate&#039;&#039;&#039;, determină toate numerele care pot fi formate prin combinarea unui subset de cifre consecutive din cifre, și calculează suma tuturor numerelor din numere_visate care se regăsesc printre numerele calculate. Aceasta se realizează prin parcurgerea tuturor subset-urilor de cifre consecutive și adăugarea numerelor rezultate într-un dicționar care memorează frecvența aparițiilor acestora. Apoi, pentru fiecare număr din numere_visate, se verifică dacă acesta se regăsește în dicționar și dacă apare cel puțin o dată și nu a fost deja adăugat la sumă.&lt;br /&gt;
&lt;br /&gt;
La final, suma calculată este scrisă în fișierul &#039;&#039;&#039;potrivire.out&#039;&#039;&#039;.&lt;/div&gt;</summary>
		<author><name>Csula Beatrice</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=3298_-_fmi_orase2&amp;diff=5692</id>
		<title>3298 - fmi orase2</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=3298_-_fmi_orase2&amp;diff=5692"/>
		<updated>2023-04-30T14:46:26Z</updated>

		<summary type="html">&lt;p&gt;Csula Beatrice: /* Explicaţie cod */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Sursa: [https://www.pbinfo.ro/probleme/3298/fmi-orase2 - fmi_orase2]&lt;br /&gt;
----&lt;br /&gt;
== Cerinţa ==&lt;br /&gt;
Suntem în anul 2050. Resursele de apă de pe planeta noastră sunt limitate din cauza schimbărilor climatice. Pentru ca toți locuitorii unui oraș să supraviețuiască în cazul unei catastrofe, orașul trebuie să aibă o rezervă de cel puțin &#039;&#039;&#039;1 km^3&#039;&#039;&#039; de apă. Pentru a face față mai ușor unor catastrofe, orașele pot forma alianțe în care se pot împrumuta reciproc cu apă. Astfel, într-o alianță formată din &#039;&#039;&#039;h&#039;&#039;&#039; orașe, fiecare oraș trebuie să aibă o rezervă de cel puțin &#039;&#039;&#039;h km^3&#039;&#039;&#039; de apă (pentru a putea supraviețui toți locuitorii săi și a putea să împrumute cu câte &#039;&#039;&#039;1 km^3&#039;&#039;&#039; de apă fiecare dintre celelalte &#039;&#039;&#039;h - 1&#039;&#039;&#039; orașe aliate).&lt;br /&gt;
&lt;br /&gt;
Fiind dat numărul &#039;&#039;&#039;m&#039;&#039;&#039; de orașe și un șir de &#039;&#039;&#039;m&#039;&#039;&#039; numere naturale strict pozitive, notate cu &#039;&#039;&#039;c[1] c[2] ... c[m]&#039;&#039;&#039;, unde fiecare număr &#039;&#039;&#039;c[i]&#039;&#039;&#039; reprezintă capacitatea maximă de stocare a orașului &#039;&#039;&#039;i&#039;&#039;&#039;, să se determine numărul maxim de orașe &#039;&#039;&#039;h&#039;&#039;&#039; care pot forma o alianță, adică există cel puțin &#039;&#039;&#039;h&#039;&#039;&#039; orașe care pot reține fiecare o cantitate de apă cel puțin egală cu &#039;&#039;&#039;h km^3&#039;&#039;&#039;.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Fișierul de intrare &#039;&#039;&#039;fmi_orase2.in&#039;&#039;&#039; conține pe prima linie numărul &#039;&#039;&#039;m&#039;&#039;&#039;, iar pe a doua linie &#039;&#039;&#039;m&#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: &lt;br /&gt;
&amp;quot;Datele sunt corecte.&amp;quot;, iar apoi in fișierul de ieșire &#039;&#039;&#039;fmi_orase2.out&#039;&#039;&#039; va conține pe prima linie numărul &#039;&#039;&#039;h&#039;&#039;&#039;, reprezentând cel mai mare număr de orașe care se pot alia. În caz contrar, se va afișa pe ecran: &amp;quot;Datele nu sunt comform restricțiilor impuse.&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Restricţii şi precizări ==&lt;br /&gt;
* 1 ≤ &#039;&#039;&#039;m&#039;&#039;&#039; ≤ 100&lt;br /&gt;
* numerele de pe a doua linie a fișierului de intrare vor fi mai mici decât &#039;&#039;&#039;1.000&#039;&#039;&#039;&lt;br /&gt;
== Exemple ==&lt;br /&gt;
===Exemplul 1===&lt;br /&gt;
; fmi_orase2.in&lt;br /&gt;
: 5&lt;br /&gt;
: 3 1 6 1 5&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele sunt corecte.&lt;br /&gt;
; fmi_orase2.out&lt;br /&gt;
: 3&lt;br /&gt;
===Exemplul 2===&lt;br /&gt;
; fmi_orase2.in&lt;br /&gt;
: 5&lt;br /&gt;
: 7 81 2 3 4&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele sunt corecte.&lt;br /&gt;
; fmi_orase2.out&lt;br /&gt;
: 4&lt;br /&gt;
===Exemplul 3===&lt;br /&gt;
; fmi_orase2.in&lt;br /&gt;
: 2 &lt;br /&gt;
: 314441 41241241&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele nu sunt comform restricțiilor impuse.&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;
#3298 - fmi orase2&lt;br /&gt;
&lt;br /&gt;
def orase(vector,m):&lt;br /&gt;
    f = open(&amp;quot;fmi_orase2.out&amp;quot;, &amp;quot;w&amp;quot;)&lt;br /&gt;
    vector.sort(reverse=True)&lt;br /&gt;
    h = 0&lt;br /&gt;
    for i in range(m):&lt;br /&gt;
        h += 1&lt;br /&gt;
        if h &amp;gt;= vector[i]:&lt;br /&gt;
            break&lt;br /&gt;
    f.write(str(h))&lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
def conform_restrictiilor():&lt;br /&gt;
    with open(&amp;quot;fmi_orase2.in&amp;quot;, &amp;quot;r&amp;quot;) as f:&lt;br /&gt;
        m =  int(f.readline())&lt;br /&gt;
        vector = list(map(int, f.readline().split()))&lt;br /&gt;
        if not (1 &amp;lt;= m &amp;lt;= 100):&lt;br /&gt;
            print(&amp;quot;Datele nu sunt conform restricțiilor impuse.&amp;quot;)&lt;br /&gt;
            exit()&lt;br /&gt;
        for x in vector:&lt;br /&gt;
            if x &amp;gt;= 1000:&lt;br /&gt;
                print(&amp;quot;Datele nu sunt conform restricțiilor impuse.&amp;quot;)&lt;br /&gt;
                exit()&lt;br /&gt;
        print(&amp;quot;Datele sunt corecte.&amp;quot;)&lt;br /&gt;
        return vector, m&lt;br /&gt;
        &lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    vector , m = conform_restrictiilor()&lt;br /&gt;
    orase(vector , m)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Explicaţie cod==&lt;br /&gt;
&lt;br /&gt;
Acesta este un cod care citeste date dintr-un fisier de intrare &#039;&#039;&#039;fmi_orase2.in&#039;&#039;&#039; si afiseaza rezultatul in alt fisier &#039;&#039;&#039;fmi_orase2.out&#039;&#039;&#039;. Codul verifica daca datele citite sunt in limitele permise si daca sunt corecte.&lt;br /&gt;
&lt;br /&gt;
Functia &#039;&#039;&#039;conform_restrictiilor&#039;&#039;&#039; citeste datele din fisier si verifica daca sunt in limitele permise. Daca datele sunt in limitele permise, aceasta returneaza o lista cu numerele citite si numarul de orase &#039;&#039;&#039;m&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Functia &#039;&#039;&#039;orase&#039;&#039;&#039; sorteaza lista cu numerele citite in ordine descrescatoare, calculeaza suma tuturor oraselor incepand cu orasul cu populatia maxima, si scrie aceasta suma in fisierul de iesire &#039;&#039;&#039;fmi_orase2.out&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
In final, programul principala citeste datele, verifica daca sunt in limitele permise, si daca acestea sunt corecte, calculeaza si scrie rezultatul in fisierul de iesire.&lt;/div&gt;</summary>
		<author><name>Csula Beatrice</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=3790_-_subsets&amp;diff=5691</id>
		<title>3790 - subsets</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=3790_-_subsets&amp;diff=5691"/>
		<updated>2023-04-30T14:43:41Z</updated>

		<summary type="html">&lt;p&gt;Csula Beatrice: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Sursa: [https://www.pbinfo.ro/probleme/3790/subsets - subsets]&lt;br /&gt;
----&lt;br /&gt;
== Cerinţa ==&lt;br /&gt;
Se dă șirul &#039;&#039;&#039;a1, a2, …, an&#039;&#039;&#039; de numere naturale nenule distincte. Vrem să alegem trei submulțimi &#039;&#039;&#039;X, Y și Z&#039;&#039;&#039; cu proprietățile:&lt;br /&gt;
&lt;br /&gt;
* submulțimile sunt nevide&lt;br /&gt;
* orice element din șir aparține cel mult unei submulțimi&lt;br /&gt;
* cele trei submulțimi au suma elementelor identică&lt;br /&gt;
&lt;br /&gt;
De exemplu, dacă &#039;&#039;&#039;a = (1,2,3,4,5,6)&#039;&#039;&#039;, atunci putem alege submulțimile: &#039;&#039;&#039;X={1,4}, Y={2,3}, Z={5}&#039;&#039;&#039;. Se observă că au toate suma elementelor egală cu 5 și că 6 nu apare în niciuna din submulțimi. O altă alegere este &#039;&#039;&#039;X={1,6}, Y={2,5}, Z={3,4}&#039;&#039;&#039; și în acest caz toate submulțimile au suma 7 și toate elementele șirului aparțin uneia dintre submulțimi.&lt;br /&gt;
&lt;br /&gt;
Reținem faptul că ordinea elementelor într-o submulțime nu contează, deci &#039;&#039;&#039;X={1,4}&#039;&#039;&#039; este totuna cu &#039;&#039;&#039;X={4,1}&#039;&#039;&#039;. De asemenea, ordinea celor trei submulțimi nu contează, adică de exemplu &#039;&#039;&#039;X={1,4}, Y={2,3}, Z={5}&#039;&#039;&#039; înseamnă același triplet cu &#039;&#039;&#039;X={2,3}, Y={1,4}, Z={5}&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Să se determine numărul tripletelor de submulțimi care îndeplinesc proprietățile.&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; cele numere naturale &#039;&#039;&#039;a1, a2, …, an&#039;&#039;&#039;, 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: &lt;br /&gt;
&amp;quot;Datele sunt corecte.&amp;quot;, iar apoi va afișa pe ecran numărul tripletelor de submulțimi. În caz contrar, se va afișa pe ecran: &amp;quot;Datele nu sunt comform restricțiilor impuse.&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Restricţii şi precizări ==&lt;br /&gt;
* 3 ≤ &#039;&#039;&#039;n&#039;&#039;&#039; ≤ 10&lt;br /&gt;
* cele n numere din șir vor fi nenule, distincte două câte două și mai mici decât &#039;&#039;&#039;100&#039;&#039;&#039;&lt;br /&gt;
== Exemple ==&lt;br /&gt;
===Exemplul 1===&lt;br /&gt;
; Intrare&lt;br /&gt;
: 6&lt;br /&gt;
: 1 2 3 4 5 6&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele sunt corecte.&lt;br /&gt;
: 3&lt;br /&gt;
===Exemplul 2===&lt;br /&gt;
; Intrare&lt;br /&gt;
: 5&lt;br /&gt;
: 1 2 3 4 7&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele sunt corecte.&lt;br /&gt;
: 0 &lt;br /&gt;
===Exemplul 3===&lt;br /&gt;
; Intrare&lt;br /&gt;
: 2 &lt;br /&gt;
: 314515341535441 412351541241&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele nu sunt comform restricțiilor impuse.&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;
#3790 - subsets&lt;br /&gt;
&lt;br /&gt;
def numara_tripleturi(n, vector):&lt;br /&gt;
    def verifica_suma_egala(submultimi):&lt;br /&gt;
        sume = []&lt;br /&gt;
        for submultime in submultimi:&lt;br /&gt;
            sume.append(sum(submultime))&lt;br /&gt;
        return len(set(sume)) == 1&lt;br /&gt;
        &lt;br /&gt;
    def backtracking(index, submultimi):&lt;br /&gt;
        nonlocal numar&lt;br /&gt;
        if index == n:&lt;br /&gt;
            if len(submultimi[0]) &amp;gt; 0 and len(submultimi[1]) &amp;gt; 0 and len(submultimi[2]) &amp;gt; 0 and verifica_suma_egala(submultimi):&lt;br /&gt;
                numar += 1&lt;br /&gt;
            return&lt;br /&gt;
        for i in range(3):&lt;br /&gt;
            submultimi[i].append(vector[index])&lt;br /&gt;
            backtracking(index + 1, submultimi)&lt;br /&gt;
            submultimi[i].pop()&lt;br /&gt;
&lt;br /&gt;
    numar = 0&lt;br /&gt;
    submultimi = [[], [], []]&lt;br /&gt;
    backtracking(0, submultimi)&lt;br /&gt;
    return numar // 2&lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
def conform_restrictiilor(n,vector):&lt;br /&gt;
    if not 3 &amp;lt;= n &amp;lt;= 10:&lt;br /&gt;
        print(&amp;quot;Datele nu sunt conform restricțiilor impuse.&amp;quot;)&lt;br /&gt;
        return False&lt;br /&gt;
    for x in vector:&lt;br /&gt;
        if x &amp;gt; 100 or x == 0:&lt;br /&gt;
            print(&amp;quot;Datele nu sunt conform restricțiilor impuse.&amp;quot;)&lt;br /&gt;
            return False&lt;br /&gt;
    print(&amp;quot;Datele sunt corecte.&amp;quot;)&lt;br /&gt;
    return True&lt;br /&gt;
        &lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    n = int(input())&lt;br /&gt;
    vector = list(map(int, input().split()))&lt;br /&gt;
    if conform_restrictiilor(n,vector) is True:&lt;br /&gt;
       rezultat = numara_tripleturi(n,vector)&lt;br /&gt;
       print(rezultat)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Explicaţie cod==&lt;br /&gt;
&lt;br /&gt;
Funcția &#039;&#039;&#039;verifica_suma_egala&#039;&#039;&#039; primește o listă de submulțimi și verifică dacă suma elementelor din fiecare submulțime este aceeași. Pentru a face acest lucru, se calculează suma elementelor din fiecare submulțime, aceste sume fiind stocate într-o listă. Dacă această listă conține un singur element, înseamnă că suma elementelor din toate cele trei submulțimi este egală.&lt;br /&gt;
&lt;br /&gt;
Funcția &#039;&#039;&#039;backtracking&#039;&#039;&#039; primește un index și o listă de submulțimi și generează toate tripleturile posibile de submulțimi care îndeplinesc criteriile impuse. Algoritmul de &#039;&#039;&#039;backtracking&#039;&#039;&#039; adaugă elemente în submulțimi în mod recursiv, începând cu primul element din &#039;&#039;&#039;vector&#039;&#039;&#039;, și verifică dacă suma elementelor din fiecare submulțime este egală. Dacă această condiție este îndeplinită pentru toate cele trei submulțimi, se incrementează numărul de tripleturi găsite.&lt;br /&gt;
&lt;br /&gt;
Funcția &#039;&#039;&#039;numara_tripleturi&#039;&#039;&#039; inițializează o listă vidă pentru fiecare submulțime și apelează funcția &#039;&#039;&#039;backtracking&#039;&#039;&#039; pentru a genera toate tripleturile de submulțimi. Numărul de tripleturi găsite este returnat împărțit la 2 pentru a elimina duplicatele, deoarece un triplet de submulțimi poate fi reprezentat într-un mod diferit (fiecare submulțime poate fi permutată).&lt;br /&gt;
&lt;br /&gt;
Funcția &#039;&#039;&#039;conform_restrictiilor&#039;&#039;&#039; verifică dacă datele de intrare sunt conforme cu restricțiile impuse și returnează True dacă acest lucru este adevărat. Datele de intrare trebuie să aibă o dimensiune cuprinsă între 3 și 10, inclusiv, iar fiecare element din vector trebuie să fie mai mic sau egal cu 100 și diferit de 0.&lt;/div&gt;</summary>
		<author><name>Csula Beatrice</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=2329_-_prim007&amp;diff=5689</id>
		<title>2329 - prim007</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=2329_-_prim007&amp;diff=5689"/>
		<updated>2023-04-30T14:41:01Z</updated>

		<summary type="html">&lt;p&gt;Csula Beatrice: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Sursa: [https://www.pbinfo.ro/probleme/2329/prim007 - prim007]&lt;br /&gt;
----&lt;br /&gt;
== Cerinţa ==&lt;br /&gt;
Se dă un șir &#039;&#039;&#039;a1, a2, …, an&#039;&#039;&#039; format din &#039;&#039;&#039;n&#039;&#039;&#039; numere naturale. Determinați numărul de perechi de elemente din șir &#039;&#039;&#039;(ai,aj)&#039;&#039;&#039; cu &#039;&#039;&#039;i &amp;lt; j&#039;&#039;&#039;, care au suma număr prim.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Programul citește de la tastatură numărul &#039;&#039;&#039;n&#039;&#039;&#039;, 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: &lt;br /&gt;
&amp;quot;Datele sunt corecte.&amp;quot;, iar apoi va afișa pe ecran numărul rezultatelor care sunt numere prime. În caz contrar, se va afișa pe ecran: &amp;quot;Datele nu sunt comform restricțiilor impuse.&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Restricţii şi precizări ==&lt;br /&gt;
* 2 ≤ &#039;&#039;&#039;n&#039;&#039;&#039; ≤ 100.000&lt;br /&gt;
* elementele șirului vor fi mai mici decât &#039;&#039;&#039;10.000&#039;&#039;&#039;&lt;br /&gt;
== Exemple ==&lt;br /&gt;
===Exemplul 1===&lt;br /&gt;
; Intrare&lt;br /&gt;
: 3&lt;br /&gt;
: 2 5 9&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele sunt corecte.&lt;br /&gt;
: 2&lt;br /&gt;
===Exemplul 2===&lt;br /&gt;
; Intrare&lt;br /&gt;
: 5&lt;br /&gt;
: 16 7 90 19 82&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele sunt corecte.&lt;br /&gt;
: 5&lt;br /&gt;
===Exemplul 3===&lt;br /&gt;
; Intrare&lt;br /&gt;
: 2 &lt;br /&gt;
: 314515341535441 412351541241&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele nu sunt comform restricțiilor impuse.&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;
#2329 prim007&lt;br /&gt;
&lt;br /&gt;
def este_prim(n):&lt;br /&gt;
    if n &amp;lt; 2:&lt;br /&gt;
        return False&lt;br /&gt;
    for i in range(2, int(n ** 0.5) + 1):&lt;br /&gt;
        if n % i == 0:&lt;br /&gt;
            return False&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def prim007(n,vector):&lt;br /&gt;
    count = 0&lt;br /&gt;
    for i in range(n):&lt;br /&gt;
        for j in range(i+1, n):&lt;br /&gt;
            if este_prim(vector[i] + vector[j]):&lt;br /&gt;
                count += 1&lt;br /&gt;
    print(count)&lt;br /&gt;
    &lt;br /&gt;
def conform_restrictiilor(n,vctor):&lt;br /&gt;
    if not 2 &amp;lt;= n &amp;lt;= 100000:&lt;br /&gt;
        print(&amp;quot;Datele nu sunt conform restricțiilor impuse.&amp;quot;)&lt;br /&gt;
        return False&lt;br /&gt;
    for x in vector:&lt;br /&gt;
        if x &amp;gt; 10000:&lt;br /&gt;
            print(&amp;quot;Datele nu sunt conform restricțiilor impuse.&amp;quot;)&lt;br /&gt;
            return False&lt;br /&gt;
    print(&amp;quot;Datele sunt corecte.&amp;quot;)&lt;br /&gt;
    return True&lt;br /&gt;
        &lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    n = int(input())&lt;br /&gt;
    vector = list(map(int, input().split()))&lt;br /&gt;
    if conform_restrictiilor(n,vector) is True:&lt;br /&gt;
        prim007(n,vector)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Explicaţie cod==&lt;br /&gt;
&lt;br /&gt;
Functia &#039;&#039;&#039;este_prim(n)&#039;&#039;&#039; - Verifica daca un numar este prim sau nu. Daca numarul este mai mic decat 2, functia va returna False, altfel, va verifica daca numarul are un divizor in intervalul &#039;&#039;&#039;[2, sqrt(n)]&#039;&#039;&#039;. Daca il gaseste, functia va returna False, altfel, va returna True.&lt;br /&gt;
&lt;br /&gt;
Functia &#039;&#039;&#039;prim007(n, vector)&#039;&#039;&#039; - Primeste un numar &#039;&#039;&#039;n&#039;&#039;&#039; si un vector de numere &#039;&#039;&#039;vector&#039;&#039;&#039;. Functia itereaza prin toate perechile de numere din &#039;&#039;&#039;vector&#039;&#039;&#039;, calculeaza suma lor si verifica daca suma este un numar prim prin apelarea functiei &#039;&#039;&#039;este_prim(n)&#039;&#039;&#039;. Daca suma este un numar prim, va incrementa un contor. La final, functia va afisa valoarea contorului.&lt;br /&gt;
&lt;br /&gt;
Functia &#039;&#039;&#039;conform_restrictiilor(n, vector)&#039;&#039;&#039; - Verifica daca valorile primite ca input respecta restrictiile impuse de problema. Verifica daca &#039;&#039;&#039;n&#039;&#039;&#039; este intre 2 si 100000, iar valorile din vector sunt mai mici sau egale cu 10000. Daca valorile respecta restrictiile, functia va returna True, altfel, va afisa un mesaj de eroare si va returna False.&lt;br /&gt;
&lt;br /&gt;
In functia &#039;&#039;&#039;main&#039;&#039;&#039;, programul primeste input-ul, verifica daca acesta respecta restrictiile impuse prin apelarea functiei &#039;&#039;&#039;conform_restrictiilor(n, vector)&#039;&#039;&#039; si, daca este cazul, calculeaza si afiseaza numarul de perechi de numere din &#039;&#039;&#039;vector&#039;&#039;&#039; a caror suma este un numar prim prin apelarea functiei &#039;&#039;&#039;prim007(n, vector)&#039;&#039;&#039;.&lt;/div&gt;</summary>
		<author><name>Csula Beatrice</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=3278_-_AproapePrime&amp;diff=5688</id>
		<title>3278 - AproapePrime</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=3278_-_AproapePrime&amp;diff=5688"/>
		<updated>2023-04-30T14:37:00Z</updated>

		<summary type="html">&lt;p&gt;Csula Beatrice: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Sursa: [https://www.pbinfo.ro/probleme/3278/aproapeprime - AproapePrime]&lt;br /&gt;
----&lt;br /&gt;
== Cerinţa ==&lt;br /&gt;
Spunem că un număr natural este &#039;&#039;&#039;aproape prim&#039;&#039;&#039; dacă el poate fi scris ca produs de două numere prime. De exemplu 6 și 25 sunt aproape prime pentru că 6 = 2 * 3, iar 25 = 5 * 5. Considerăm șirul crescător al numerelor naturale aproape prime: 4, 6, 9, 10, 14, 15, 21, … Acestora li se asociază câte un număr de ordine, numerotarea începând cu &#039;&#039;&#039;1&#039;&#039;&#039;. Deci 4 este primul număr aproape prim, 6 este al doilea număr, 9 este al treilea etc.&lt;br /&gt;
Dat un număr natural &#039;&#039;&#039;N&#039;&#039;&#039;, să se determine al &#039;&#039;&#039;N&#039;&#039;&#039;-lea număr aproape prim.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Programul citește de la tastatură numărul &#039;&#039;&#039;N&#039;&#039;&#039;.&lt;br /&gt;
== Date de ieșire == &lt;br /&gt;
Dacă datele sunt introduse corect, pe ecran se va afișa pe ecran un singur număr natural, reprezentând al &#039;&#039;&#039;N&#039;&#039;&#039;-lea număr aproape prim. În caz contrar, se va afișa pe ecran: &amp;quot;Datele nu sunt comform restricțiilor impuse.&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Restricţii şi precizări ==&lt;br /&gt;
* 1 ≤ &#039;&#039;&#039;N&#039;&#039;&#039; ≤ 23.378&lt;br /&gt;
== Exemple ==&lt;br /&gt;
===Exemplul 1===&lt;br /&gt;
; Intrare&lt;br /&gt;
: 4&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele sunt corecte.&lt;br /&gt;
: 10&lt;br /&gt;
===Exemplul 2===&lt;br /&gt;
; Intrare&lt;br /&gt;
: 5 &lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele sunt corecte.&lt;br /&gt;
: 14 &lt;br /&gt;
===Exemplul 3===&lt;br /&gt;
; Intrare&lt;br /&gt;
: 314515341535441&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele nu sunt comform restricțiilor impuse.&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;
#3278 AproapePrim&lt;br /&gt;
&lt;br /&gt;
def este_prim(n):&lt;br /&gt;
    if n &amp;lt; 2:&lt;br /&gt;
        return False&lt;br /&gt;
    for i in range(2, int(n ** 0.5) + 1):&lt;br /&gt;
        if n % i == 0:&lt;br /&gt;
            return False&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def aproape_prim(N):&lt;br /&gt;
    contor = 0&lt;br /&gt;
    i = 2&lt;br /&gt;
    while True:&lt;br /&gt;
        if contor == N:&lt;br /&gt;
            return i-1&lt;br /&gt;
        if este_prim(i):&lt;br /&gt;
            i += 1&lt;br /&gt;
            continue&lt;br /&gt;
        for j in range(2, int(i ** 0.5) + 1):&lt;br /&gt;
            if i % j == 0 and este_prim(j) and este_prim(i // j):&lt;br /&gt;
                contor += 1&lt;br /&gt;
                break&lt;br /&gt;
        i += 1&lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
def conform_restrictiilor():&lt;br /&gt;
    if not 1 &amp;lt;= N &amp;lt;= 23378:&lt;br /&gt;
        print(&amp;quot;Datele nu sunt conform restricțiilor impuse.&amp;quot;)&lt;br /&gt;
        return False&lt;br /&gt;
    print(&amp;quot;Datele sunt corecte.&amp;quot;)&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    N = int(input())&lt;br /&gt;
    if conform_restrictiilor(N) is True:&lt;br /&gt;
        print(aproape_prim(N))&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Explicaţie cod==&lt;br /&gt;
Funcția &#039;&#039;&#039;este_prim(n)&#039;&#039;&#039; primește un număr întreg &#039;&#039;&#039;n&#039;&#039;&#039; și returnează &#039;&#039;&#039;True&#039;&#039;&#039; dacă acesta este prim și &#039;&#039;&#039;False&#039;&#039;&#039; altfel. Ea verifică dacă numărul este mai mic decât 2 (în acest caz, nu este prim) și apoi verifică dacă există vreun divizor între 2 și radicalul pătrat al lui &#039;&#039;&#039;n&#039;&#039;&#039; (inclusiv) care îl divide pe &#039;&#039;&#039;n&#039;&#039;&#039;. Dacă există, numărul nu este prim.&lt;br /&gt;
&lt;br /&gt;
Funcția &#039;&#039;&#039;aproape_prim(N)&#039;&#039;&#039; primește un număr întreg &#039;&#039;&#039;N&#039;&#039;&#039; și returnează al &#039;&#039;&#039;N&#039;&#039;&#039;-lea număr aproape prim din șirul de numere aproape prime. Ea inițializează un contor de indexare cu 0 și i cu 2. Apoi, începe să itereze prin numerele naturale, verificând dacă fiecare număr este aproape prim. Dacă un număr este prim, continuă iterația cu următorul număr, astfel încât numai numerele compuse sunt testate pentru a fi aproape prime. Pentru a verifica dacă un număr este aproape prim, programul încearcă să îl descompună în factori primi și să verifice dacă ambele sunt prime. Dacă da, crește contorul cu 1 și trece la următorul număr. Când contorul ajunge la &#039;&#039;&#039;N&#039;&#039;&#039;, programul returnează ultimul număr testat minus 1, deoarece ultimul număr a fost al &#039;&#039;&#039;N&#039;&#039;&#039;-lea număr aproape prim.&lt;br /&gt;
&lt;br /&gt;
Funcția &#039;&#039;&#039;conform_restrictiilor(N)&#039;&#039;&#039; primește noul număr întreg &#039;&#039;&#039;N&#039;&#039;&#039; ca si parametru și verifică dacă este între 1 și 23378, conform restricțiilor impuse. Dacă nu este, afișează un mesaj de eroare și se returneaza False. Dacă este corect, afișează un mesaj de confirmare și returnează True.&lt;br /&gt;
&lt;br /&gt;
În funcția principală, programul citește &#039;&#039;&#039;N&#039;&#039;&#039; iar daca functia &#039;&#039;&#039;conform_restrictiilor(N)&#039;&#039;&#039; este True atunci se apelează funcția &#039;&#039;&#039;aproape_prim(N)&#039;&#039;&#039; și afișează rezultatul returnat.&lt;/div&gt;</summary>
		<author><name>Csula Beatrice</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=3460_-_FirstPrime&amp;diff=5685</id>
		<title>3460 - FirstPrime</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=3460_-_FirstPrime&amp;diff=5685"/>
		<updated>2023-04-30T14:33:43Z</updated>

		<summary type="html">&lt;p&gt;Csula Beatrice: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Sursa: [https://www.pbinfo.ro/probleme/3460/firstprime - FirstPrime]&lt;br /&gt;
----&lt;br /&gt;
== Cerinţa ==&lt;br /&gt;
Se dau &#039;&#039;&#039;n&#039;&#039;&#039; numere naturale. Definim &#039;&#039;&#039;FP(x)&#039;&#039;&#039; cel mai mic număr prim care îl divide pe &#039;&#039;&#039;x&#039;&#039;&#039;. Aflați suma &#039;&#039;&#039;FP&#039;&#039;&#039;-urilor 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: &lt;br /&gt;
&amp;quot;Datele sunt corecte.&amp;quot;, iar apoi va afișa pe ecran numărul &#039;&#039;&#039;S&#039;&#039;&#039;. În caz contrar, se va afișa pe ecran: &amp;quot;Datele nu sunt comform restricțiilor impuse.&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Restricţii şi precizări ==&lt;br /&gt;
* 2 ≤ &#039;&#039;&#039;n&#039;&#039;&#039; ≤ 1.000.000&lt;br /&gt;
* cele &#039;&#039;&#039;n&#039;&#039;&#039; numere citite vor fi mai mici decât &#039;&#039;&#039;100.000.000&#039;&#039;&#039;&lt;br /&gt;
== Exemple ==&lt;br /&gt;
===Exemplul 1===&lt;br /&gt;
; Intrare&lt;br /&gt;
: 4&lt;br /&gt;
: 2 13 9 25&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele sunt corecte.&lt;br /&gt;
: 23&lt;br /&gt;
===Exemplul 2===&lt;br /&gt;
; Intrare&lt;br /&gt;
: 5&lt;br /&gt;
: 16 7 90 19 82&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele sunt corecte.&lt;br /&gt;
: 32 &lt;br /&gt;
===Exemplul 3===&lt;br /&gt;
; Intrare&lt;br /&gt;
: 2 &lt;br /&gt;
: 314515341535441 412351541241&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele nu sunt comform restricțiilor impuse.&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;
#3460 FirstPrime&lt;br /&gt;
&lt;br /&gt;
def este_prim(n):&lt;br /&gt;
    if n &amp;lt; 2:&lt;br /&gt;
        return False&lt;br /&gt;
    for i in range(2, int(n ** 0.5) + 1):&lt;br /&gt;
        if n % i == 0:&lt;br /&gt;
            return False&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def fp(x):&lt;br /&gt;
    if x &amp;lt; 2:&lt;br /&gt;
        return 0&lt;br /&gt;
    for i in range(2, int(x ** 0.5) + 1):&lt;br /&gt;
        if x % i == 0:&lt;br /&gt;
            return i if este_prim(i) else 0&lt;br /&gt;
    return x&lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
def conform_restrictiilor(vector , n):&lt;br /&gt;
    if not 2 &amp;lt;= n &amp;lt;= 1000000:&lt;br /&gt;
        print(&amp;quot;Datele nu sunt conform restricțiilor impuse.&amp;quot;)&lt;br /&gt;
        return False&lt;br /&gt;
    for x in vector:&lt;br /&gt;
        if x &amp;gt; 100000000:&lt;br /&gt;
            print(&amp;quot;Datele nu sunt conform restricțiilor impuse.&amp;quot;)&lt;br /&gt;
            return False&lt;br /&gt;
    print(&amp;quot;Datele sunt corecte.&amp;quot;)&lt;br /&gt;
    return True&lt;br /&gt;
        &lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    n = int(input())&lt;br /&gt;
    vector = list(map(int, input().split()))&lt;br /&gt;
    if conform_restrictiilor(vector , n) is True:&lt;br /&gt;
        suma_fp = sum(fp(x) for x in vector)&lt;br /&gt;
        print(suma_fp)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Explicaţie cod==&lt;br /&gt;
Funcția &#039;&#039;&#039;este_prim(n)&#039;&#039;&#039; primește un număr întreg pozitiv &#039;&#039;&#039;n&#039;&#039;&#039; și returnează &#039;&#039;&#039;True&#039;&#039;&#039; dacă &#039;&#039;&#039;n&#039;&#039;&#039; este prim și &#039;&#039;&#039;False&#039;&#039;&#039; în caz contrar. Implementarea folosește o metodă eficientă de verificare a primalității care verifică toți divizorii numărului &#039;&#039;&#039;n&#039;&#039;&#039; până la radicalul pătrat din &#039;&#039;&#039;n&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Funcția &#039;&#039;&#039;fp(x)&#039;&#039;&#039; primește un număr întreg pozitiv &#039;&#039;&#039;x&#039;&#039;&#039; și returnează cel mai mic număr prim care îl divide pe &#039;&#039;&#039;x&#039;&#039;&#039; sau &#039;&#039;&#039;0&#039;&#039;&#039; dacă &#039;&#039;&#039;x&#039;&#039;&#039; este mai mic decât &#039;&#039;&#039;2&#039;&#039;&#039; sau nu are divizori primi.&lt;br /&gt;
&lt;br /&gt;
Funcția &#039;&#039;&#039;conform_restrictiilor(vector , n)&#039;&#039;&#039; primește două argumente, un vector de numere întregi și un număr întreg n. Mai întâi, funcția verifică dacă n este între 2 și 1.000.000, iar dacă nu, afișează un mesaj de eroare și returnează False. Apoi, pentru fiecare element din vector, funcția verifică dacă este mai mic sau egal cu 100.000.000. Dacă se găsește un element care depășește această limită, funcția afișează un mesaj de eroare și returnează False.&lt;br /&gt;
&lt;br /&gt;
Dacă toate verificările sunt trecute cu succes, funcția afișează un mesaj de confirmare și returnează True.&lt;br /&gt;
&lt;br /&gt;
În programul principal, citim numărul &#039;&#039;&#039;n&#039;&#039;&#039; și cele &#039;&#039;&#039;n&#039;&#039;&#039; numere naturale de la tastatură, stocate în lista numere. Se apeleaza apoi functia &#039;&#039;&#039;conform_restrictiilor(vector , n)&#039;&#039;&#039; iar daca se returneaza True, se continua.&lt;br /&gt;
Pentru a calcula suma &#039;&#039;&#039;FP&#039;&#039;&#039;-urilor celor &#039;&#039;&#039;n&#039;&#039;&#039; numere, iterăm prin lista numere și pentru fiecare element apelăm funcția &#039;&#039;&#039;fp(x)&#039;&#039;&#039; pentru a determina cel mai mic număr prim care îl divide pe &#039;&#039;&#039;x&#039;&#039;&#039;. Suma acestor valori este stocată în variabila &#039;&#039;&#039;suma_fp&#039;&#039;&#039;.&lt;br /&gt;
La final, afișăm valoarea variabilei &#039;&#039;&#039;suma_fp&#039;&#039;&#039;.&lt;/div&gt;</summary>
		<author><name>Csula Beatrice</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=2576_-_Ciurul_Lui_Eratosthenes&amp;diff=5684</id>
		<title>2576 - Ciurul Lui Eratosthenes</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=2576_-_Ciurul_Lui_Eratosthenes&amp;diff=5684"/>
		<updated>2023-04-30T14:27:06Z</updated>

		<summary type="html">&lt;p&gt;Csula Beatrice: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Sursa: [https://www.pbinfo.ro/probleme/2576/ciurul-lui-eratosthenes - Ciurul Lui Eratosthenes]&lt;br /&gt;
----&lt;br /&gt;
== Cerinţa ==&lt;br /&gt;
Să se afișeze numerele prime de la &#039;&#039;&#039;1&#039;&#039;&#039; la &#039;&#039;&#039;n&#039;&#039;&#039;.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Se citește numărul &#039;&#039;&#039;n&#039;&#039;&#039;.&lt;br /&gt;
== Date de ieșire == &lt;br /&gt;
Se vor afișa numerele prime de la &#039;&#039;&#039;1&#039;&#039;&#039; la &#039;&#039;&#039;n&#039;&#039;&#039;, în ordine crescătoare,separate printr-un spațiu iar pe ecran se va afisa &amp;quot;Datele sunt corecte.&amp;quot;. Daca n = 1 se va afisa pe un rand nou &amp;quot;Nu exista numere prime mai mici decat 2.&amp;quot;. In caz contrar, se va afisa &amp;quot;Datele nu sunt comform restricțiilor impuse.&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Restricţii şi precizări ==&lt;br /&gt;
* 1 ≤ &#039;&#039;&#039;n&#039;&#039;&#039; ≤ 1.000.000&lt;br /&gt;
== Exemple ==&lt;br /&gt;
===Exemplul 1===&lt;br /&gt;
; Intrare&lt;br /&gt;
: 30&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele sunt corecte.&lt;br /&gt;
: 2 3 5 7 11 13 17 19 23 29&lt;br /&gt;
===Exemplul 2===&lt;br /&gt;
; Intrare&lt;br /&gt;
: 1&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele sunt corecte.&lt;br /&gt;
;Explicație&lt;br /&gt;
: Nu exista numere prime mai mici decat 1.&lt;br /&gt;
===Exemplul 3===&lt;br /&gt;
; Intrare&lt;br /&gt;
: 154242352352 &lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele nu sunt comform restricțiilor impuse.&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;
#2576 Ciurul Lui Eratosthenes&lt;br /&gt;
def ciur(n):&lt;br /&gt;
    if n &amp;lt; 2:&lt;br /&gt;
        print(&amp;quot;Nu exista numere prime mai mici decat 2.&amp;quot;)&lt;br /&gt;
    else:&lt;br /&gt;
        prime = []&lt;br /&gt;
        for i in range(2, n+1):&lt;br /&gt;
            e_prim = True&lt;br /&gt;
            for j in range(2, int(i ** 0.5) + 1):&lt;br /&gt;
                if i % j == 0:&lt;br /&gt;
                    e_prim = False&lt;br /&gt;
                    break&lt;br /&gt;
            if e_prim:&lt;br /&gt;
                prime.append(i)&lt;br /&gt;
        print(*prime)&lt;br /&gt;
    &lt;br /&gt;
        &lt;br /&gt;
def conform_restrictiilor(n):&lt;br /&gt;
    if n &amp;gt; 1000000 or n &amp;lt; 1:&lt;br /&gt;
        print(&amp;quot;Datele nu sunt comform restricțiilor impuse.&amp;quot;)&lt;br /&gt;
        return False&lt;br /&gt;
    print(&amp;quot;Datele sunt corecte.&amp;quot;)&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    n = int(input())&lt;br /&gt;
    if conform_restrictiilor(n) is True:&lt;br /&gt;
        ciur(n)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Explicaţie cod==&lt;br /&gt;
Funcția &#039;&#039;&#039;conform_restrictiilor()&#039;&#039;&#039; primeste ca si parametru un numar intreg &#039;&#039;&#039;n&#039;&#039;&#039; și verifică dacă acesta respectă restricțiile impuse: trebuie să fie între &#039;&#039;&#039;1&#039;&#039;&#039; și &#039;&#039;&#039;1.000.000&#039;&#039;&#039;. Dacă datele sunt conforme, se afiseaza mesajul de confrimare si se returneaza True.&lt;br /&gt;
&lt;br /&gt;
Funcția &#039;&#039;&#039;ciur(n)&#039;&#039;&#039; primește ca argument un număr întreg &#039;&#039;&#039;n&#039;&#039;&#039;. Această funcție determină toate numerele prime mai mici sau egale cu &#039;&#039;&#039;n&#039;&#039;&#039;, utilizând algoritmul &#039;&#039;&#039;Ciurul lui Eratostene&#039;&#039;&#039;. În această implementare, se initializează o listă vidă prime pentru a stoca numerele prime. Se iterează prin fiecare număr întreg de la 2 până la &#039;&#039;&#039;n&#039;&#039;&#039; și pentru fiecare număr se verifică dacă este prim sau nu, utilizând un al doilea for care merge de la 2 până la radicalul pătrat din i (care este cel mai mare divizor posibil). Dacă numărul i este divizibil cu un alt număr întreg în intervalul [2, radicalul pătrat din i], atunci nu este prim și se trece la următorul număr. Dacă numărul i trece prin această verificare, atunci este adăugat în lista prime. La final, funcția afișează lista prime, folosind * pentru a extrage toate elementele acesteia.&lt;br /&gt;
&lt;br /&gt;
În secțiunea &#039;&#039;&#039;if __name__ == &#039;__main__&#039;:&#039;&#039;&#039;, se citeste mai întâi numarul &#039;&#039;&#039;n&#039;&#039;&#039; iar apoi se verifica daca funcția &#039;&#039;&#039;conform_restrictiilor(n)&#039;&#039;&#039; este conforma restricțiilor. Apoi, se apelează funcția &#039;&#039;&#039;ciur(n)&#039;&#039;&#039; pentru a determina și afișa toate numerele prime mai mici sau egale cu &#039;&#039;&#039;n&#039;&#039;&#039;.&lt;/div&gt;</summary>
		<author><name>Csula Beatrice</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=3737_-_SecvEgale1_v2&amp;diff=5683</id>
		<title>3737 - SecvEgale1 v2</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=3737_-_SecvEgale1_v2&amp;diff=5683"/>
		<updated>2023-04-30T14:24:50Z</updated>

		<summary type="html">&lt;p&gt;Csula Beatrice: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Sursa: [https://www.pbinfo.ro/probleme/3737/secvegale1-v2 - SecvEgale1 v2]&lt;br /&gt;
----&lt;br /&gt;
== Cerinţa ==&lt;br /&gt;
Se dă un vector cu &#039;&#039;&#039;n&#039;&#039;&#039; elemente, numere naturale. Determinați cea mai lungă secvență de elemente din vector care începe și se termină cu aceeași valoare. Dacă în vector există mai multe secvențe corecte de lungime maximă se va determina cea mai din stânga.&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, reprezentând elementele vectorului.&lt;br /&gt;
== Date de ieșire == &lt;br /&gt;
Dacă datele sunt introduse corect, pe ecran se va afișa: &lt;br /&gt;
&amp;quot;Datele sunt corecte.&amp;quot;, iar apoi va afișa pe ecran indicii &#039;&#039;&#039;st dr&#039;&#039;&#039; ai capetelor secvenței determinate, separați printr-un spațiu. În caz contrar, se va afișa pe ecran: &amp;quot;Datele nu sunt comform restricțiilor impuse.&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Restricţii şi precizări ==&lt;br /&gt;
* 1 ≤ &#039;&#039;&#039;n&#039;&#039;&#039; ≤ 1.000.000&lt;br /&gt;
* cele &#039;&#039;&#039;n&#039;&#039;&#039; numere citite vor fi mai mici decât &#039;&#039;&#039;1.000.000&#039;&#039;&#039;&lt;br /&gt;
* indexarea elementelor vectorului începe de la 1.&lt;br /&gt;
== Exemple ==&lt;br /&gt;
===Exemplul 1===&lt;br /&gt;
; Intrare&lt;br /&gt;
: 12&lt;br /&gt;
: 6 6 8 3 6 6 3 8 4 3 3 4&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele sunt corecte.&lt;br /&gt;
: 4 11&lt;br /&gt;
===Exemplul 2===&lt;br /&gt;
; Intrare&lt;br /&gt;
: 7&lt;br /&gt;
: 1 2 3 4 1 7 8 &lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele sunt corecte.&lt;br /&gt;
: 1 5 &lt;br /&gt;
===Exemplul 3===&lt;br /&gt;
; Intrare&lt;br /&gt;
: 2 &lt;br /&gt;
: 314441 41241241&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele nu sunt comform restricțiilor impuse.&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;
#3737&lt;br /&gt;
&lt;br /&gt;
def secvente(vector, n):&lt;br /&gt;
    lungime_maxima=0&lt;br /&gt;
    st = 0    &lt;br /&gt;
    dr = 0&lt;br /&gt;
    for i in range(n):&lt;br /&gt;
        for j in range(i+1 , n+1):&lt;br /&gt;
            if vector[i] == vector [j-1] and j - i &amp;gt; lungime_maxima:&lt;br /&gt;
                lungime_maxima = j-i&lt;br /&gt;
                st = i&lt;br /&gt;
                dr = j-1&lt;br /&gt;
    print(st+1, dr+1)&lt;br /&gt;
    &lt;br /&gt;
        &lt;br /&gt;
def conform_restrictiilor(n, vector):&lt;br /&gt;
    if n &amp;gt; 1000000 or n &amp;lt; 1:&lt;br /&gt;
        print(&amp;quot;Datele nu sunt comform restricțiilor impuse.&amp;quot;)&lt;br /&gt;
        return False&lt;br /&gt;
    for x in vector:&lt;br /&gt;
        if x &amp;gt; 1000000 or x &amp;lt; 0:&lt;br /&gt;
            print(&amp;quot;Datele nu sunt comform restricțiilor impuse.&amp;quot;)&lt;br /&gt;
            return False&lt;br /&gt;
    print(&amp;quot;Datele sunt corecte.&amp;quot;)&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    n=int(input())&lt;br /&gt;
    vector = list(map(int,input().split()))&lt;br /&gt;
    if conform_restrictiilor(n, vector) is True:&lt;br /&gt;
        secvente(vector, n)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Explicaţie cod==&lt;br /&gt;
&lt;br /&gt;
Funcția &#039;&#039;&#039;secvente()&#039;&#039;&#039; primește vectorul &#039;&#039;&#039;vector&#039;&#039;&#039; și numărul de elemente din vector &#039;&#039;&#039;n&#039;&#039;&#039;. Acestă funcție calculează cea mai lungă secvență de elemente din &#039;&#039;&#039;vector&#039;&#039;&#039; care începe și se termină cu aceeași valoare. Inițial, variabilele &#039;&#039;&#039;lungime_maxima&#039;&#039;&#039;, &#039;&#039;&#039;st&#039;&#039;&#039; și &#039;&#039;&#039;dr&#039;&#039;&#039; sunt inițializate cu 0. Două bucle for sunt utilizate pentru a itera prin toate elementele vectorului și pentru a găsi secvențele de lungime maximă. Când sunt găsite două elemente consecutive egale, se calculează lungimea secvenței, iar dacă aceasta este mai mare decât &#039;&#039;&#039;lungimea maximă&#039;&#039;&#039; găsită anterior, atunci variabilele &#039;&#039;&#039;st&#039;&#039;&#039; și &#039;&#039;&#039;dr&#039;&#039;&#039; sunt actualizate cu indicii elementelor de început și de sfârșit ai secvenței. Indicii afișați sunt incrementați cu 1 pentru a corespunde indexării elementelor în program, care începe de la 1, nu de la 0.&lt;br /&gt;
Funcția &#039;&#039;&#039;conform_restrictiilor&#039;&#039;&#039; primește un numar &#039;&#039;&#039;n&#039;&#039;&#039; și o listă &#039;&#039;&#039;vector&#039;&#039;&#039; și verifică dacă sunt respectate restricțiile problemei (0 &amp;lt; &#039;&#039;&#039;n&#039;&#039;&#039; &amp;lt; 1000000, 0 ≤ &#039;&#039;&#039;vector[i]&#039;&#039;&#039; ≤ 1000000 pentru fiecare &#039;&#039;&#039;i&#039;&#039;&#039; în [0, n)). Dacă restricțiile nu sunt respectate, funcția afișează un mesaj de eroare și returnează False; în caz contrar, afișează un mesaj de confirmare și returnează True.&lt;br /&gt;
&lt;br /&gt;
În blocul &#039;&#039;&#039;__name__ == &#039;__main__&#039;&#039;&#039;&#039;, programul citește dimensiunea și secvența de la intrare folosind &#039;&#039;&#039;input()&#039;&#039;&#039; și &#039;&#039;&#039;map()&#039;&#039;&#039;. Apoi verifică dacă restricțiile sunt respectate utilizând funcția &#039;&#039;&#039;conform_restrictiilor&#039;&#039;&#039;. Dacă restricțiile sunt respectate, funcția secvente este apelată cu &#039;&#039;&#039;vector&#039;&#039;&#039; și &#039;&#039;&#039;n&#039;&#039;&#039; ca argumente.&lt;/div&gt;</summary>
		<author><name>Csula Beatrice</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=3324_-_Eratostene0&amp;diff=5680</id>
		<title>3324 - Eratostene0</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=3324_-_Eratostene0&amp;diff=5680"/>
		<updated>2023-04-30T14:18:52Z</updated>

		<summary type="html">&lt;p&gt;Csula Beatrice: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Sursa: [https://www.pbinfo.ro/probleme/3324/eratostene0 - Eratostene0]&lt;br /&gt;
----&lt;br /&gt;
== Cerinţa ==&lt;br /&gt;
Se dau &#039;&#039;&#039;n&#039;&#039;&#039; perechi de numere naturale &#039;&#039;&#039;(i, j)&#039;&#039;&#039;, cu &#039;&#039;&#039;i ≤ j&#039;&#039;&#039;. Pentru fiecare pereche trebuie să aflați &#039;&#039;&#039;suma&#039;&#039;&#039; divizorilor tuturor numerelor din șirul i, i + 1, ..., j.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Fișierul de intrare &#039;&#039;&#039;eratostene0.in&#039;&#039;&#039; conține pe prima linie numărul &#039;&#039;&#039;n&#039;&#039;&#039;, iar pe următoarele n linii câte două numere naturale i(1) j(1), i(2) j(2), …, i(n) j(n).&lt;br /&gt;
== Date de ieșire == &lt;br /&gt;
Dacă datele sunt introduse corect, pe ecran se va afișa: &lt;br /&gt;
&amp;quot;Datele sunt corecte.&amp;quot;, iar apoi in fişierul de ieșire &#039;&#039;&#039;eratostene0.out&#039;&#039;&#039; va conține &#039;&#039;&#039;n&#039;&#039;&#039; linii, pe fiecare linie L, L = 1..n, aflându-se un singur număr natural reprezentând suma divizorilor tuturor numerelor corespunzătoare perechii &#039;&#039;&#039;i(L) j(L)&#039;&#039;&#039;. În caz contrar, se va afișa pe ecran: &amp;quot;Datele nu sunt comform restricțiilor impuse.&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Restricţii şi precizări ==&lt;br /&gt;
* 1 ≤ &#039;&#039;&#039;n&#039;&#039;&#039; ≤ 200.000&lt;br /&gt;
* 1 ≤ &#039;&#039;&#039;i&#039;&#039;&#039; ≤ &#039;&#039;&#039;j&#039;&#039;&#039; ≤ 1.000.000&lt;br /&gt;
== Exemple ==&lt;br /&gt;
===Exemplul 1===&lt;br /&gt;
; eratostene0.in&lt;br /&gt;
: 4&lt;br /&gt;
: 1 6&lt;br /&gt;
: 3 7&lt;br /&gt;
: 2 5&lt;br /&gt;
: 8 8&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele sunt corecte.&lt;br /&gt;
; eratostene0.out&lt;br /&gt;
: 33&lt;br /&gt;
: 37&lt;br /&gt;
: 20&lt;br /&gt;
: 15&lt;br /&gt;
===Exemplul 2===&lt;br /&gt;
; eratostene0.in&lt;br /&gt;
: 3&lt;br /&gt;
: 2 4&lt;br /&gt;
: 10 20&lt;br /&gt;
: 40 90&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele sunt corecte.&lt;br /&gt;
; eratostene0.out&lt;br /&gt;
: 14&lt;br /&gt;
: 270&lt;br /&gt;
: 5481&lt;br /&gt;
===Exemplul 3===&lt;br /&gt;
; eratostene0.in&lt;br /&gt;
: 2&lt;br /&gt;
: 191824719471 19991&lt;br /&gt;
: 120 200&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele nu sunt comform restricțiilor impuse.&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;
#3324 Eratostene0&lt;br /&gt;
&lt;br /&gt;
def eratostene(vector, n):&lt;br /&gt;
    suma = 0&lt;br /&gt;
    f = open(&amp;quot;eratostene0.out&amp;quot;, &amp;quot;w&amp;quot;)&lt;br /&gt;
    for k in range(0, n * 2, +2):&lt;br /&gt;
        suma = 0&lt;br /&gt;
        i = vector[k]&lt;br /&gt;
        j = vector[k + 1]&lt;br /&gt;
        for numar in range(i, j + 1):&lt;br /&gt;
            divizor = 1&lt;br /&gt;
            while divizor &amp;lt;= numar:&lt;br /&gt;
                if numar % divizor == 0:&lt;br /&gt;
                    suma += divizor&lt;br /&gt;
                divizor += 1&lt;br /&gt;
        f.write(str(suma) + &amp;quot;\n&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def conform_restrictiilor():&lt;br /&gt;
    vector = list()&lt;br /&gt;
    with open(&#039;eratostene0.in&#039;) as f:&lt;br /&gt;
        lines = f.readlines()&lt;br /&gt;
        for line in lines:&lt;br /&gt;
            for c in line.split():&lt;br /&gt;
                if c.isdigit() == True:&lt;br /&gt;
                    vector.append(int(c))&lt;br /&gt;
    n = vector[0]&lt;br /&gt;
    vector = vector[1:]&lt;br /&gt;
    if n &amp;gt; 200000 and n &amp;lt; 1:&lt;br /&gt;
        print(&amp;quot;Datele nu sunt comform restricțiilor impuse.&amp;quot;)&lt;br /&gt;
        exit()&lt;br /&gt;
    for x in vector:&lt;br /&gt;
        if x &amp;lt; 0 or x &amp;gt; 1000000:&lt;br /&gt;
            print(&amp;quot;Datele nu sunt comform restricțiilor impuse.&amp;quot;)&lt;br /&gt;
            exit()&lt;br /&gt;
    print(&amp;quot;Datele sunt corecte.&amp;quot;)&lt;br /&gt;
    return vector, n&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    vector, n = conform_restrictiilor()&lt;br /&gt;
    eratostene(vector, n)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
==Explicaţie cod==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Acest cod calculează suma divizorilor pentru intervale de numere date în fișierul &#039;&#039;&#039;eratostene0.in&#039;&#039;&#039; și scrie sumele corespunzătoare în fișierul &#039;&#039;&#039;eratostene0.out&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Funcția &#039;&#039;&#039;conform_restrictiilor()&#039;&#039;&#039; citeste datele din fișier și verifică dacă sunt în limitele impuse de restricțiile problemei. Apoi, returnează numerele citite din fișier într-un vector și numărul de intervale de numere.&lt;br /&gt;
&lt;br /&gt;
Funcția &#039;&#039;&#039;eratostene()&#039;&#039;&#039; primește vectorul și numărul de intervale de numere ca parametri. Apoi, pentru fiecare interval de numere, calculează suma divizorilor pentru fiecare număr în interval și o scrie în fișierul de ieșire.&lt;br /&gt;
&lt;br /&gt;
Spre deosebire de numărul prim, suma divizorilor unui număr nu poate fi determinată cu un algoritm eficient. De aceea, se verifică fiecare divizor de la 1 la numărul în cauză și se adaugă la suma dacă divizează numărul.&lt;/div&gt;</summary>
		<author><name>Csula Beatrice</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=0303_-_Eratostene&amp;diff=5679</id>
		<title>0303 - Eratostene</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=0303_-_Eratostene&amp;diff=5679"/>
		<updated>2023-04-30T14:17:06Z</updated>

		<summary type="html">&lt;p&gt;Csula Beatrice: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Sursa: [https://www.pbinfo.ro/probleme/303/eratostene - Eratostene]&lt;br /&gt;
----&lt;br /&gt;
== Cerinţa ==&lt;br /&gt;
Se dau &#039;&#039;&#039;n&#039;&#039;&#039; numere naturale mai mici decât &#039;&#039;&#039;1.000.000&#039;&#039;&#039;. Determinaţi câte dintre ele sunt prime.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Fişierul de intrare &#039;&#039;&#039;eratostene.in&#039;&#039;&#039; conţine pe prima linie numărul &#039;&#039;&#039;n&#039;&#039;&#039;; urmează cele &#039;&#039;&#039;n&#039;&#039;&#039; numere, dispuse pe mai multe linii şi 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: &lt;br /&gt;
&amp;quot;Datele sunt corecte.&amp;quot;, iar apoi in fişierul de ieşire &#039;&#039;&#039;eratostene.out&#039;&#039;&#039; va conţine pe prima linie numărul &#039;&#039;&#039;C&#039;&#039;&#039;, reprezentând numărul valorilor citite care erau numere prime. În caz contrar, se va afișa pe ecran: &amp;quot;Datele nu sunt comform restricțiilor impuse.&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Restricţii şi precizări ==&lt;br /&gt;
* 1 ≤ n ≤ 1.000.000&lt;br /&gt;
== Exemple ==&lt;br /&gt;
===Exemplul 1===&lt;br /&gt;
; eratostene.in&lt;br /&gt;
: 6&lt;br /&gt;
: 12 18 19 25 29 7&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele sunt corecte.&lt;br /&gt;
; eratostene.out&lt;br /&gt;
: 3&lt;br /&gt;
===Exemplul 2===&lt;br /&gt;
; eratostene.in&lt;br /&gt;
: 3&lt;br /&gt;
: 100 102 104&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele sunt corecte.&lt;br /&gt;
; eratostene.out&lt;br /&gt;
: 0&lt;br /&gt;
===Exemplul 3===&lt;br /&gt;
; eratostene.in&lt;br /&gt;
: 3&lt;br /&gt;
: 191824719471 19991 19724174&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele nu sunt comform restricțiilor impuse.&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;
#0303 Eratostene&lt;br /&gt;
&lt;br /&gt;
def eratostene(vector, n):&lt;br /&gt;
    C = 0&lt;br /&gt;
    for i in range(n):&lt;br /&gt;
        numar = vector[i]&lt;br /&gt;
        if numar == 2:&lt;br /&gt;
            C += 1&lt;br /&gt;
        divizor = 3&lt;br /&gt;
        while divizor * divizor &amp;lt;= numar:&lt;br /&gt;
            if numar % divizor == 0 or numar%2==0:&lt;br /&gt;
                break&lt;br /&gt;
            divizor += 2&lt;br /&gt;
        if divizor ** 2 &amp;gt; numar:&lt;br /&gt;
            C += 1&lt;br /&gt;
    f = open(&amp;quot;eratostene.out&amp;quot;, &amp;quot;w&amp;quot;)&lt;br /&gt;
    f.write(str(C))&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def conform_restrictiilor():&lt;br /&gt;
    vector = list()&lt;br /&gt;
    with open(&#039;eratostene.in&#039;) as f:&lt;br /&gt;
        lines = f.readlines()&lt;br /&gt;
        for line in lines:&lt;br /&gt;
            for c in line.split():&lt;br /&gt;
                if c.isdigit() == True:&lt;br /&gt;
                    vector.append(int(c))&lt;br /&gt;
    n = vector[0]&lt;br /&gt;
    vector = vector[1:]&lt;br /&gt;
    if n &amp;gt; 1000000 and n &amp;lt; 1:&lt;br /&gt;
        print(&amp;quot;Datele nu sunt comform restricțiilor impuse.&amp;quot;)&lt;br /&gt;
        exit()&lt;br /&gt;
    for x in vector:&lt;br /&gt;
        if x &amp;lt; 0 or x &amp;gt; 1000000:&lt;br /&gt;
            print(&amp;quot;Datele nu sunt comform restricțiilor impuse.&amp;quot;)&lt;br /&gt;
            exit()&lt;br /&gt;
    print(&amp;quot;Datele sunt corecte.&amp;quot;)&lt;br /&gt;
    return vector, n&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    vector, n = conform_restrictiilor()&lt;br /&gt;
    eratostene(vector, n)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
==Explicaţie cod==&lt;br /&gt;
&lt;br /&gt;
Acest cod implementează Ciurul lui Eratostene, un algoritm folosit pentru a găsi toate numerele prime până la un anumit număr dat &#039;&#039;&#039;n&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Funcția &#039;&#039;&#039;conform_restrictiilor&#039;&#039;&#039; verifică dacă datele de intrare respectă condițiile impuse și returnează vectorul de numere și &#039;&#039;&#039;n&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Funcția &#039;&#039;&#039;eratostene&#039;&#039;&#039; primește vectorul de numere și &#039;&#039;&#039;n&#039;&#039;&#039;, parcurge vectorul și pentru fiecare număr verifică dacă este prim folosind Ciurul lui Eratostene. Se verifică dacă numărul este 2, în caz contrar se începe căutarea divizorilor de la 3. Dacă numărul este divizibil cu un număr impar sau cu 2, se trece la următorul număr. În caz contrar, se continuă căutarea divizorilor până la radicalul numărului. Dacă numărul este prim, se adaugă 1 la variabila &#039;&#039;&#039;C&#039;&#039;&#039;. La final se scrie rezultatul în fișierul &#039;&#039;&#039;eratostene.out&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
În general, este important să se verifice condițiile impuse înainte de procesarea datelor pentru a preveni erori și pentru a se asigura că datele sunt valide.&lt;/div&gt;</summary>
		<author><name>Csula Beatrice</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=0607_-_Asfalt&amp;diff=5678</id>
		<title>0607 - Asfalt</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=0607_-_Asfalt&amp;diff=5678"/>
		<updated>2023-04-30T14:14:37Z</updated>

		<summary type="html">&lt;p&gt;Csula Beatrice: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Sursa: [https://www.pbinfo.ro/?pagina=probleme&amp;amp;id=607 - Asfalt]&lt;br /&gt;
----&lt;br /&gt;
== Cerinţa ==&lt;br /&gt;
S-a hotărât asfaltarea șoselei care unește orașul &#039;&#039;&#039;A&#039;&#039;&#039; de orașul &#039;&#039;&#039;B&#039;&#039;&#039;. Lungimea acestei șosele este de &#039;&#039;&#039;n&#039;&#039;&#039; kilometri. De-a lungul șoselei sunt instalate borne, distanța dintre ele fiind de un kilometru; prima bornă este numerotată cu 0, iar ultima cu n. La asfaltarea șoselei participă &#039;&#039;&#039;m&#039;&#039;&#039; firme, fiecare firmă dorind să asfalteze o porțiune de șosea cuprinsă între doua borne date.&lt;br /&gt;
&lt;br /&gt;
Gigel, conducătorul operațiunilor de asfaltare, dorește să afle dacă cele &#039;&#039;&#039;m&#039;&#039;&#039; firme vor asfalta toată șoseaua și dacă există părți ale șoselei care ar urma să fie asfaltate de mai multe firme.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Fișierul de intrare &#039;&#039;&#039;asfalt.in&#039;&#039;&#039; conține pe prima linie numerele &#039;&#039;&#039;n m&#039;&#039;&#039;, reprezentând lungimea șoselei și numărul de firme participante. Următoarele &#039;&#039;&#039;m&#039;&#039;&#039; linii conțin câte două numere &#039;&#039;&#039;x y&#039;&#039;&#039; – firma curentă dorește să asfalteze șoseaua între borna numerotată cu &#039;&#039;&#039;x&#039;&#039;&#039; și cea numerotată cu &#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;
&amp;quot;Datele sunt corecte.&amp;quot;, iar apoi in fişierul de ieșire &#039;&#039;&#039;asfalt.out&#039;&#039;&#039; va conține pe prima linie două numere &#039;&#039;&#039;A B&#039;&#039;&#039;, separate prin exact un spațiu, reprezentând numărul de kilometri de șosea care ar rămâne neasfaltați și numărul de kilometri de șosea care ar fi asfaltați de mai multe firme. În caz contrar, se va afișa pe ecran: &amp;quot;Datele nu sunt comform restricțiilor impuse.&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Restricţii şi precizări ==&lt;br /&gt;
* 1 ≤ n ≤ 10000&lt;br /&gt;
* 1 ≤ m ≤ 1000&lt;br /&gt;
* 1 ≤ x &amp;lt; y ≤ n&lt;br /&gt;
== Exemple ==&lt;br /&gt;
===Exemplul 1===&lt;br /&gt;
; asfalt.in&lt;br /&gt;
: 10 4&lt;br /&gt;
: 5 8&lt;br /&gt;
: 0 3&lt;br /&gt;
: 1 4&lt;br /&gt;
: 6 10&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele sunt corecte.&lt;br /&gt;
; asfalt.out&lt;br /&gt;
: 1 4&lt;br /&gt;
===Exemplul 2===&lt;br /&gt;
; asfalt.in&lt;br /&gt;
: 10 5&lt;br /&gt;
: 1 2&lt;br /&gt;
: 3 8&lt;br /&gt;
: 9 10&lt;br /&gt;
: 8 9&lt;br /&gt;
: 2 6&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele sunt corecte.&lt;br /&gt;
; asfalt.out&lt;br /&gt;
: 2 3&lt;br /&gt;
===Exemplul 3===&lt;br /&gt;
; asfalt.in&lt;br /&gt;
: 10 3&lt;br /&gt;
: 1 21&lt;br /&gt;
: 3 831&lt;br /&gt;
: 9 130&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele nu sunt comform restricțiilor impuse.&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;
# 0607 Asfalt&lt;br /&gt;
&lt;br /&gt;
def asfalt(vector, n):&lt;br /&gt;
    vector_verificare = [0] * n&lt;br /&gt;
    for i in range(0, len(vector), +2):&lt;br /&gt;
        x = vector[i]&lt;br /&gt;
        y = vector[i + 1]&lt;br /&gt;
        for j in range(x, y):&lt;br /&gt;
            vector_verificare[j] += 1&lt;br /&gt;
    A = 0&lt;br /&gt;
    B = 0&lt;br /&gt;
    for valoare in vector_verificare:&lt;br /&gt;
        if valoare == 0:&lt;br /&gt;
            A += 1&lt;br /&gt;
        elif valoare &amp;gt; 1:&lt;br /&gt;
            B += 1&lt;br /&gt;
    f = open(&amp;quot;asfalt.out&amp;quot;, &amp;quot;w&amp;quot;)&lt;br /&gt;
    line = [str(A), &amp;quot; &amp;quot;, str(B)]&lt;br /&gt;
    f.writelines(line)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def conform_restrictiilor():&lt;br /&gt;
    vector = list()&lt;br /&gt;
    with open(&#039;asfalt.in&#039;) as f:&lt;br /&gt;
        lines = f.readlines()&lt;br /&gt;
        for line in lines:&lt;br /&gt;
            for c in line.split():&lt;br /&gt;
                if c.isdigit() == True:&lt;br /&gt;
                    vector.append(int(c))&lt;br /&gt;
    n = vector[0]&lt;br /&gt;
    m = vector[1]&lt;br /&gt;
    vector = vector[2:]&lt;br /&gt;
    if n &amp;gt; 10000 and n &amp;lt; 1 or m &amp;gt; 1000 and m &amp;lt; 1:&lt;br /&gt;
        print(&amp;quot;Datele nu sunt comform restricțiilor impuse.&amp;quot;)&lt;br /&gt;
        exit()&lt;br /&gt;
    for x in vector:&lt;br /&gt;
        if x &amp;lt; 0 or x &amp;gt; n:&lt;br /&gt;
            print(&amp;quot;Datele nu sunt comform restricțiilor impuse.&amp;quot;)&lt;br /&gt;
            exit()&lt;br /&gt;
    print(&amp;quot;Datele sunt corecte.&amp;quot;)&lt;br /&gt;
    return vector, n&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    vector, n = conform_restrictiilor()&lt;br /&gt;
    asfalt(vector, n)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
==Explicaţie cod==&lt;br /&gt;
&lt;br /&gt;
Acesta este un program care primește datele dintr-un fișier de intrare, verifică dacă respectă restricțiile impuse și apoi procesează acele date și scrie rezultatul într-un fișier de ieșire.&lt;br /&gt;
&lt;br /&gt;
Funcția &#039;&#039;&#039;conform_restrictiilor&#039;&#039;&#039; citește datele din fișierul de intrare și verifică dacă valorile introduse sunt valide, respectând restricțiile impuse. Aceasta întoarce un vector și lungimea acestuia.&lt;br /&gt;
&lt;br /&gt;
Funcția &#039;&#039;&#039;asfalt&#039;&#039;&#039; primește ca parametri vectorul și lungimea acestuia și numără câte elemente din &#039;&#039;&#039;vector&#039;&#039;&#039; se află în intervalul &#039;&#039;&#039;[x, y)&#039;&#039;&#039; pentru fiecare pereche de valori &#039;&#039;&#039;x&#039;&#039;&#039; și &#039;&#039;&#039;y&#039;&#039;&#039;. Pe baza acestei numărători, funcția determină câte elemente din vector nu se află în niciun interval, respectiv câte elemente apar în cel puțin două intervale diferite. Aceste valori sunt scrise într-un fișier de ieșire.&lt;br /&gt;
&lt;br /&gt;
Funcția &#039;&#039;&#039;main&#039;&#039;&#039; apelează funcția &#039;&#039;&#039;conform_restrictiilor&#039;&#039;&#039; pentru a verifica datele de intrare și, dacă acestea sunt corecte, apelează funcția &#039;&#039;&#039;asfalt&#039;&#039;&#039; pentru a procesa datele și a scrie rezultatul în fișierul de ieșire.&lt;/div&gt;</summary>
		<author><name>Csula Beatrice</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=1010_-_produs&amp;diff=5677</id>
		<title>1010 - produs</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=1010_-_produs&amp;diff=5677"/>
		<updated>2023-04-30T14:12:06Z</updated>

		<summary type="html">&lt;p&gt;Csula Beatrice: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Sursa: [https://www.pbinfo.ro/probleme/1010/produs - produs]&lt;br /&gt;
----&lt;br /&gt;
== Cerinţa ==&lt;br /&gt;
Se dau două șiruri cu câte &#039;&#039;&#039;n&#039;&#039;&#039;, respectiv &#039;&#039;&#039;m&#039;&#039;&#039; elemente. Dacă înmulțim fiecare element din primul șir cu fiecare element din al doilea șir, să se afle câte produse sunt mai mici decât &#039;&#039;&#039;p&#039;&#039;&#039;.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Programul citește de la tastatură numerele &#039;&#039;&#039;n&#039;&#039;&#039; și &#039;&#039;&#039;p&#039;&#039;&#039;, iar apoi &#039;&#039;&#039;n&#039;&#039;&#039; numere naturale, separate prin spații, reprezentând elementele primului șir, după care citește numărul &#039;&#039;&#039;m&#039;&#039;&#039; urmat de &#039;&#039;&#039;m&#039;&#039;&#039; numere naturale, reprezentând elementele celui de-al doilea șir.&lt;br /&gt;
== Date de ieșire == &lt;br /&gt;
Dacă datele sunt introduse corect, pe ecran se va afișa: &lt;br /&gt;
&amp;quot;Datele sunt corecte.&amp;quot;, iar apoi se va afișa pe ecran numărul &#039;&#039;&#039;nr&#039;&#039;&#039;, reprezentând numărul produselor mai mici decât &#039;&#039;&#039;p&#039;&#039;&#039;. În caz contrar, se va afișa pe ecran: &amp;quot;Datele nu sunt comform restricțiilor impuse.&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Restricţii şi precizări ==&lt;br /&gt;
* 1 ≤ &#039;&#039;&#039;p&#039;&#039;&#039; ≤ 200.000&lt;br /&gt;
* 1 ≤ &#039;&#039;&#039;n , m&#039;&#039;&#039; ≤ 50.000&lt;br /&gt;
* elementele celor două șiruri sunt numere naturale mai mici decât &#039;&#039;&#039;10.000&#039;&#039;&#039;&lt;br /&gt;
== Exemple ==&lt;br /&gt;
===Exemplul 1===&lt;br /&gt;
; Intrare&lt;br /&gt;
: 5 99&lt;br /&gt;
: 1 2 3 4 5&lt;br /&gt;
: 2&lt;br /&gt;
: 25 34&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele sunt corecte.&lt;br /&gt;
: 5&lt;br /&gt;
===Exemplul 2===&lt;br /&gt;
; Intrare&lt;br /&gt;
: 4 10&lt;br /&gt;
: 10 2 6341 46541242 &lt;br /&gt;
: 2&lt;br /&gt;
: 2541412 341212&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele nu corespund restricțiilor impuse.&lt;br /&gt;
===Exemplul 3===&lt;br /&gt;
; Intrare&lt;br /&gt;
: 4 10&lt;br /&gt;
: 10 2 63 465 &lt;br /&gt;
: 2&lt;br /&gt;
: 25 3&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele sunt corecte.&lt;br /&gt;
: 1&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;
#1010 produs&lt;br /&gt;
&lt;br /&gt;
def numere(vector, n, vector_2, m, p):&lt;br /&gt;
    nr = 0&lt;br /&gt;
    for i in vector:&lt;br /&gt;
        for j in vector_2:&lt;br /&gt;
            if i * j &amp;lt; p:&lt;br /&gt;
                nr += 1&lt;br /&gt;
    print(nr)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def conform_restrictiilor(vector, n, vector_2, m, p):&lt;br /&gt;
    if n &amp;lt; 1 or n &amp;gt; 50000:&lt;br /&gt;
        print(&amp;quot;Datele nu sunt comform restricțiilor impuse.&amp;quot;)&lt;br /&gt;
        return False&lt;br /&gt;
    for x in vector:&lt;br /&gt;
        if x &amp;gt; 10000 or x &amp;lt; 0:&lt;br /&gt;
            print(&amp;quot;Datele nu sunt comform restricțiilor impuse.&amp;quot;)&lt;br /&gt;
            return False&lt;br /&gt;
    if m &amp;lt; 1 or m &amp;gt; 50000:&lt;br /&gt;
        print(&amp;quot;Datele nu sunt comform restricțiilor impuse.&amp;quot;)&lt;br /&gt;
        return False&lt;br /&gt;
    for x in vector_2:&lt;br /&gt;
        if x &amp;gt; 10000 or x &amp;lt; 0:&lt;br /&gt;
            print(&amp;quot;Datele nu sunt comform restricțiilor impuse.&amp;quot;)&lt;br /&gt;
            return False&lt;br /&gt;
    print(&amp;quot;Datele sunt corecte.&amp;quot;)&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    n, p = map(int, input().split())&lt;br /&gt;
    vector = list(map(int, input().split()))&lt;br /&gt;
    m = int(input())&lt;br /&gt;
    vector_2 = list(map(int, input().split()))&lt;br /&gt;
    if conform_restrictiilor(vector, n, vector_2, m, p) is True:&lt;br /&gt;
        numere(vector, n, vector_2, m, p)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
==Explicaţie cod==&lt;br /&gt;
&lt;br /&gt;
Acesta este un program care primește ca input 2 vectori și un număr întreg, apoi verifică dacă datele de intrare sunt conforme cu restricțiile impuse, după care calculează numărul de perechi de elemente din cele două vectori ale căror produs este mai mic decât numărul întreg dat.&lt;br /&gt;
&lt;br /&gt;
Funcția &#039;&#039;&#039;conform_restrictiilor&#039;&#039;&#039; verifică dacă valorile date ca input sunt conforme cu următoarele restricții:&lt;br /&gt;
   &#039;&#039;&#039;n&#039;&#039;&#039; și &#039;&#039;&#039;m&#039;&#039;&#039; trebuie să fie între 1 și 50000&lt;br /&gt;
   valorile vectorilor trebuie să fie între 0 și 10000&lt;br /&gt;
Dacă valorile de intrare sunt conforme cu restricțiile, se afișează &amp;quot;Datele sunt corecte.&amp;quot; și se returnează True, altfel se afișează &amp;quot;Datele nu sunt conforme restricțiilor impuse.&amp;quot; și se returnează False.&lt;br /&gt;
&lt;br /&gt;
Funcția &#039;&#039;&#039;numere&#039;&#039;&#039; primește cei doi vectori, lungimile lor și numărul întreg &#039;&#039;&#039;p&#039;&#039;&#039;. Folosind o buclă for dublă, calculează numărul de perechi ale căror produs este mai mic decât &#039;&#039;&#039;p&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
În funcția &#039;&#039;&#039;main&#039;&#039;&#039;, se citesc cele patru valori de intrare, apoi se apelează funcția &#039;&#039;&#039;conform_restrictiilor&#039;&#039;&#039; pentru a verifica dacă datele sunt conforme. Dacă sunt conforme, se apelează funcția numere pentru a calcula numărul de perechi ale căror produs este mai mic decât &#039;&#039;&#039;p&#039;&#039;&#039;.&lt;/div&gt;</summary>
		<author><name>Csula Beatrice</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=0301_-_Frecventa1&amp;diff=5676</id>
		<title>0301 - Frecventa1</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=0301_-_Frecventa1&amp;diff=5676"/>
		<updated>2023-04-30T14:08:21Z</updated>

		<summary type="html">&lt;p&gt;Csula Beatrice: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Sursa: [https://www.pbinfo.ro/probleme/301/frecventa1 -Frecventa1]&lt;br /&gt;
----&lt;br /&gt;
== Cerinţa ==&lt;br /&gt;
Se dau &#039;&#039;&#039;n&#039;&#039;&#039; numere naturale cu cel mult două cifre fiecare. Afişaţi valorile distincte în ordinea descrescătoare a numărului de apariţii.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Fișierul de intrare &#039;&#039;&#039;frecventa1.in&#039;&#039;&#039; conţine pe prima linie numărul &#039;&#039;&#039;n&#039;&#039;&#039;; urmează cele &#039;&#039;&#039;n&#039;&#039;&#039; numere, dispuse pe mai multe linii şi 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: &lt;br /&gt;
&amp;quot;Datele sunt corecte.&amp;quot;, iar apoi in fişierul de ieşire &#039;&#039;&#039;frecventa1.out&#039;&#039;&#039; va conţine pe prima linie valorile distincte dintre cele &#039;&#039;&#039;n&#039;&#039;&#039;, în ordinea descrescătoare a numărului de apariţii. În caz contrar, se va afișa pe ecran: &amp;quot;Datele nu sunt comform restricțiilor impuse.&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Restricţii şi precizări ==&lt;br /&gt;
* 1 ≤ &#039;&#039;&#039;n&#039;&#039;&#039; ≤ 100.000&lt;br /&gt;
* dacă două valori apar de acelaşi număr de ori, se va afişa mai întâi valoarea mai mică&lt;br /&gt;
== Exemple ==&lt;br /&gt;
===Exemplul 1===&lt;br /&gt;
; frecventa1.in&lt;br /&gt;
: 8&lt;br /&gt;
: 3 19 3 65 3 19 14 3&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele sunt corecte.&lt;br /&gt;
; frecventa1.out&lt;br /&gt;
: 3 19 14 65&lt;br /&gt;
===Exemplul 2===&lt;br /&gt;
; frecventa1.in&lt;br /&gt;
: 4&lt;br /&gt;
: 10 10 1 12&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele sunt corecte.&lt;br /&gt;
; frecventa1.out&lt;br /&gt;
: 10 1 12 &lt;br /&gt;
===Exemplul 3===&lt;br /&gt;
; frecventa1.in&lt;br /&gt;
: 5&lt;br /&gt;
: 22241 12 1234 12 236&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele nu sunt comform restricțiilor impuse.&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;
#0301 Frecventa1&lt;br /&gt;
&lt;br /&gt;
def frecventa(vector):&lt;br /&gt;
    f = open(&amp;quot;frecventa1.out&amp;quot;, &amp;quot;w&amp;quot;)&lt;br /&gt;
    aparitii = [(i, vector[i]) for i in range(100) if vector[i] &amp;gt; 0]&lt;br /&gt;
    aparitii.sort(key=lambda x: x[1], reverse=True)&lt;br /&gt;
    for i in range(len(aparitii)):&lt;br /&gt;
        f.write(str(aparitii[i][0]) + &amp;quot; &amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def conform_restrictiilor():&lt;br /&gt;
    vector = list()&lt;br /&gt;
    with open(&#039;frecventa1.in&#039;) as f:&lt;br /&gt;
        lines = f.readlines()&lt;br /&gt;
        for line in lines:&lt;br /&gt;
            for c in line.split():&lt;br /&gt;
                if c.isdigit() is True:&lt;br /&gt;
                    vector.append(int(c))&lt;br /&gt;
    n = vector[0]&lt;br /&gt;
    vector_aparitii = [0] * 100&lt;br /&gt;
    if n &amp;lt; 1 or n &amp;gt; 100000:&lt;br /&gt;
        print(&amp;quot;Datele nu sunt comform restricțiilor impuse.&amp;quot;)&lt;br /&gt;
        exit()&lt;br /&gt;
    vector = vector[1:]&lt;br /&gt;
    for x in vector:&lt;br /&gt;
        if x &amp;lt; 0 or x &amp;gt;= 100:&lt;br /&gt;
            print(&amp;quot;Datele nu sunt comform restricțiilor impuse.&amp;quot;)&lt;br /&gt;
            exit()&lt;br /&gt;
        vector_aparitii[x] += 1&lt;br /&gt;
    print(&amp;quot;Datele sunt corecte.&amp;quot;)&lt;br /&gt;
    return vector_aparitii&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    vector = conform_restrictiilor()&lt;br /&gt;
    frecventa(vector)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
==Explicaţie cod==&lt;br /&gt;
&lt;br /&gt;
Acest cod are ca scop determinarea frecvenței fiecărui element dintr-un vector de numere naturale citit din fișierul &#039;&#039;&#039;frecventa1.in&#039;&#039;&#039; și scrierea acestor frecvențe în ordine descrescătoare în fișierul &#039;&#039;&#039;frecventa1.out&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Funcția &#039;&#039;&#039;conform_restrictiilor()&#039;&#039;&#039; se ocupă de citirea datelor din fișier, verificarea restricțiilor impuse (numărul de elemente din vector și valorile elementelor trebuie să se încadreze în anumite limite) și crearea unui nou vector &#039;&#039;&#039;vector_aparitii&#039;&#039;&#039; inițializat cu 0 pentru fiecare element posibil (de la 0 la 99, deoarece elementele vectorului trebuie să fie numere între 0 și 99). Dacă datele nu sunt conforme cu restricțiile impuse, programul se oprește cu ajutorul funcției &#039;&#039;&#039;exit()&#039;&#039;&#039;. Funcția returnează vectorul &#039;&#039;&#039;vector_aparitii&#039;&#039;&#039; cu frecvențele.&lt;br /&gt;
&lt;br /&gt;
Funcția &#039;&#039;&#039;frecventa(vector)&#039;&#039;&#039; primește ca parametru vectorul cu frecvențele obținut anterior și realizează sortarea acestor frecvențe în ordine descrescătoare prin crearea unei liste de tupluri &#039;&#039;&#039;(i, vector[i])&#039;&#039;&#039; pentru fiecare element &#039;&#039;&#039;i&#039;&#039;&#039; și frecvența sa &#039;&#039;&#039;vector[i]&#039;&#039;&#039;, apoi sortarea acestei liste după a doua valoare din fiecare tuplu și scrierea în fișierul &#039;&#039;&#039;frecventa1.out&#039;&#039;&#039; a primului element din fiecare tuplu (adica a valorilor elementelor cu frecvență cea mai mare).&lt;br /&gt;
&lt;br /&gt;
În funcția principală, se citește numărul de elemente ale vectorului &#039;&#039;&#039;n&#039;&#039;&#039; și elementele vectorului vector cu ajutorul funcției &#039;&#039;&#039;input()&#039;&#039;&#039;, apoi se apelează funcția &#039;&#039;&#039;conform_restrictiilor(vector)&#039;&#039;&#039; pentru a verifica dacă datele citite din fișier sunt valide. Dacă datele sunt conforme, se afișează mesajul &amp;quot;Datele sunt corecte.&amp;quot; și se apelează funcția &#039;&#039;&#039;frecventa(vector)&#039;&#039;&#039; pentru a sorta și afișa frecvențele elementelor în ordine descrescătoare.&lt;/div&gt;</summary>
		<author><name>Csula Beatrice</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=1927_-_Bitsort&amp;diff=5675</id>
		<title>1927 - Bitsort</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=1927_-_Bitsort&amp;diff=5675"/>
		<updated>2023-04-30T14:04:31Z</updated>

		<summary type="html">&lt;p&gt;Csula Beatrice: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Sursa: [https://www.pbinfo.ro/probleme/1927/bitsort - Bitsort]&lt;br /&gt;
----&lt;br /&gt;
== Cerinţa ==&lt;br /&gt;
Se dă un vector cu &#039;&#039;&#039;n&#039;&#039;&#039; elemente, numere naturale nenule. Afișați termenii în ordine crescătoare.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Termenii care apar de mai multe ori se vor afișa o singură dată.&#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;n&#039;&#039;&#039; numere naturale nenule, 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: &lt;br /&gt;
&amp;quot;Datele sunt corecte.&amp;quot;, iar apoi se afișează elementele vectorului, în ordine crescătoare, separate prin spații, respectând cerința cerută. În caz contrar, se va afișa pe ecran: &amp;quot;Datele nu sunt comform restricțiilor impuse.&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Restricţii şi precizări ==&lt;br /&gt;
* 1 &amp;amp;les; &#039;&#039;&#039;n&#039;&#039;&#039; &amp;amp;les; 1.000.000&lt;br /&gt;
* cele &#039;&#039;&#039;n&#039;&#039;&#039; numere citite vor fi mai mici decât 300.000&lt;br /&gt;
== Exemple ==&lt;br /&gt;
===Exemplul 1===&lt;br /&gt;
; Intrare&lt;br /&gt;
: 7&lt;br /&gt;
: 9 8 8 8 1 2 8&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele sunt corecte.&lt;br /&gt;
: 1 2 8 9&lt;br /&gt;
===Exemplul 2===&lt;br /&gt;
; Intrare&lt;br /&gt;
: 4&lt;br /&gt;
: 1000001 214141251521 20 20&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele nu corespund restricțiilor impuse.&lt;br /&gt;
===Exemplul 3===&lt;br /&gt;
; Intrare&lt;br /&gt;
: 5&lt;br /&gt;
: 11 11 20 31 31 39&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele sunt corecte.&lt;br /&gt;
: 11 20 31 39&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;
#1927 Bitsort&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def bitsort(vector):&lt;br /&gt;
    vector.sort()&lt;br /&gt;
    for i in range(len(vector) - 1):&lt;br /&gt;
        if vector[i] != vector[i + 1]:&lt;br /&gt;
            print(vector[i], end=&amp;quot; &amp;quot;)&lt;br /&gt;
    if vector[len(vector) - 1] != vector[len(vector) - 2]:&lt;br /&gt;
        print(vector[len(vector) - 1])&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def conform_restrictiilor(n, vector):&lt;br /&gt;
    if n &amp;lt; 1 or n &amp;gt; 1000000:&lt;br /&gt;
        print(&amp;quot;Datele nu sunt comform restricțiilor impuse.&amp;quot;)&lt;br /&gt;
        return False&lt;br /&gt;
    for x in vector:&lt;br /&gt;
        if x &amp;gt; 300000 or x &amp;lt; 1:&lt;br /&gt;
            print(&amp;quot;Datele nu sunt comform restricțiilor impuse.&amp;quot;)&lt;br /&gt;
            return False&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    n = int(input())&lt;br /&gt;
    vector = list(map(int, input().split()))&lt;br /&gt;
    if conform_restrictiilor(n, vector) is True:&lt;br /&gt;
        print(&amp;quot;Datele sunt corecte.&amp;quot;)&lt;br /&gt;
        bitsort(vector)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
==Explicaţie cod==&lt;br /&gt;
&lt;br /&gt;
Funcția &#039;&#039;&#039;bitsort&#039;&#039;&#039; primește ca parametru un &#039;&#039;&#039;vector&#039;&#039;&#039; și sortează elementele sale. Apoi, pentru a elimina elementele duplicate, compară fiecare element cu elementul următor și îl afișează dacă este diferit de acesta. La final, verifică și ultimul element din &#039;&#039;&#039;vector&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Funcția &#039;&#039;&#039;conform_restrictiilor&#039;&#039;&#039; primește ca parametri un număr întreg &#039;&#039;&#039;n&#039;&#039;&#039; și un &#039;&#039;&#039;vector&#039;&#039;&#039; de numere întregi &#039;&#039;&#039;vector&#039;&#039;&#039;. Verifică dacă &#039;&#039;&#039;n&#039;&#039;&#039; respectă restricțiile impuse, respectiv dacă este între 1 și 1.000.000, iar fiecare element al vectorului este între 1 și 300.000. Dacă datele de intrare respectă aceste restricții, funcția returnează True, altfel returnează False.&lt;br /&gt;
&lt;br /&gt;
În funcția &#039;&#039;&#039;main&#039;&#039;&#039;, se citește numărul &#039;&#039;&#039;n&#039;&#039;&#039; și vectorul de la intrare și se apelează funcția &#039;&#039;&#039;conform_restrictiilor&#039;&#039;&#039; pentru a verifica restricțiile. Dacă acestea sunt respectate, se afișează mesajul &#039;&#039;&#039;Datele sunt corecte.&#039;&#039;&#039; și se apelează funcția &#039;&#039;&#039;bitsort&#039;&#039;&#039; pentru a sorta și afișa elementele unice din &#039;&#039;&#039;vector&#039;&#039;&#039;.&lt;/div&gt;</summary>
		<author><name>Csula Beatrice</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=0276_-_PareImpare&amp;diff=5673</id>
		<title>0276 - PareImpare</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=0276_-_PareImpare&amp;diff=5673"/>
		<updated>2023-04-30T14:02:37Z</updated>

		<summary type="html">&lt;p&gt;Csula Beatrice: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Sursa: [https://www.pbinfo.ro/probleme/276/pareimpare -PareImpare]&lt;br /&gt;
----&lt;br /&gt;
== Cerinţa ==&lt;br /&gt;
Se dau cel mult &#039;&#039;&#039;100.000&#039;&#039;&#039; de numere naturale, cu cel mult 2 cifre fiecare. Afişaţi în ordine strict crescătoare valorile impare care se regăsesc printre valorile date, şi în ordine strict descrescătoare valorile pare care se regăsesc printre valorile date.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Fişierul de intrare &#039;&#039;&#039;pareimpare.in&#039;&#039;&#039; conţine cel mult &#039;&#039;&#039;100.000&#039;&#039;&#039; de numere naturale, cu cel mult 2 cifre fiecare, dispuse pe mai multe linii şi 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: &lt;br /&gt;
&amp;quot;Datele sunt corecte.&amp;quot;, iar apoi in fişierul de ieşire &#039;&#039;&#039;pareimpare.out&#039;&#039;&#039; va conţine pe prima linie şirul valorilor impare, separate printr-un spaţiu, iar pe a doua linie şirul valorilor pare, separate printr-un spaţiu. În caz contrar, se va afișa pe ecran: &amp;quot;Datele nu sunt comform restricțiilor impuse.&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Restricţii şi precizări ==&lt;br /&gt;
* în fişierul de intrare se află cel puţin un număr par şi cel puţin un număr impar&lt;br /&gt;
== Exemple ==&lt;br /&gt;
===Exemplul 1===&lt;br /&gt;
; pareimpare.in&lt;br /&gt;
: 75 12 3 3 18 75 1 3&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele sunt corecte.&lt;br /&gt;
; pareimpare.out&lt;br /&gt;
: 1 3 75&lt;br /&gt;
: 18 12 &lt;br /&gt;
===Exemplul 2===&lt;br /&gt;
; pareimpare.in&lt;br /&gt;
: 10 11 42 45 79&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele sunt corecte.&lt;br /&gt;
; pareimpare.out&lt;br /&gt;
: 11 45 79&lt;br /&gt;
: 42 10&lt;br /&gt;
===Exemplul 3===&lt;br /&gt;
; pareimpare.in&lt;br /&gt;
: 75 77 71 99 &lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele nu sunt comform restricțiilor impuse.&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;
#0276 PareImpare&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def pareimpare(vector_pare, vector_impare):&lt;br /&gt;
    f = open(&amp;quot;pareimpare.out&amp;quot;, &amp;quot;w&amp;quot;)&lt;br /&gt;
    vector_impare.sort()&lt;br /&gt;
    vector_pare.sort(reverse=True)&lt;br /&gt;
    vector_impare.append(0)&lt;br /&gt;
    vector_pare.append(1)&lt;br /&gt;
    for i in range(len(vector_impare) - 1):&lt;br /&gt;
        if vector_impare[i] != vector_impare[i + 1]:&lt;br /&gt;
            f.write(str(vector_impare[i]))&lt;br /&gt;
            f.write(&amp;quot; &amp;quot;)&lt;br /&gt;
    f.write(&amp;quot;\n&amp;quot;)&lt;br /&gt;
    for i in range(len(vector_pare) - 1):&lt;br /&gt;
        if vector_impare[i] != vector_pare[i + 1]:&lt;br /&gt;
            f.write(str(vector_pare[i]))&lt;br /&gt;
            f.write(&amp;quot; &amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def conform_restrictiilor():&lt;br /&gt;
    vector = list()&lt;br /&gt;
    vector_pare = list()&lt;br /&gt;
    vector_impare = list()&lt;br /&gt;
    with open(&#039;pareimpare.in&#039;) as f:&lt;br /&gt;
        lines = f.readlines()&lt;br /&gt;
        for line in lines:&lt;br /&gt;
            for c in line.split():&lt;br /&gt;
                if c.isdigit() == True:&lt;br /&gt;
                    vector.append(int(c))&lt;br /&gt;
    if len(vector) &amp;gt; 100000:&lt;br /&gt;
        print(&amp;quot;Datele nu sunt comform restricțiilor impuse.&amp;quot;)&lt;br /&gt;
        exit()&lt;br /&gt;
    for x in vector:&lt;br /&gt;
        if x &amp;lt; 0 or x &amp;gt;= 100:&lt;br /&gt;
            print(&amp;quot;Datele nu sunt comform restricțiilor impuse.&amp;quot;)&lt;br /&gt;
            exit()&lt;br /&gt;
        elif x % 2 == 0:&lt;br /&gt;
            vector_pare.append(x)&lt;br /&gt;
        else:&lt;br /&gt;
            vector_impare.append(x)&lt;br /&gt;
    if len(vector_pare) == 0 or len(vector_impare) == 0:&lt;br /&gt;
        print(&amp;quot;Datele nu sunt comform restricțiilor impuse.&amp;quot;)&lt;br /&gt;
        exit()&lt;br /&gt;
    print(&amp;quot;Datele sunt corecte.&amp;quot;)&lt;br /&gt;
    return vector_pare, vector_impare&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    vector_pare, vector_impare = conform_restrictiilor()&lt;br /&gt;
    pareimpare(vector_pare, vector_impare)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
==Explicaţie cod==&lt;br /&gt;
&lt;br /&gt;
Acest cod implementează două funcții care citesc datele din fișierul &#039;&#039;&#039;pareimpare.in&#039;&#039;&#039; și verifică dacă respectă restricțiile impuse. Dacă datele sunt corecte, se apelează funcția &amp;quot;pareimpare&amp;quot; care sortează și afișează în fișierul &#039;&#039;&#039;pareimpare.out&#039;&#039;&#039; numerele pare și impare distincte din datele citite.&lt;br /&gt;
&lt;br /&gt;
Mai exact, funcția &#039;&#039;&#039;conform_restrictiilor&#039;&#039;&#039; începe prin a inițializa trei liste: o listă goală numită &#039;&#039;&#039;vector&#039;&#039;&#039; și două liste numite &#039;&#039;&#039;vector_pare&#039;&#039;&#039; și &#039;&#039;&#039;vector_impare&#039;&#039;&#039;, inițial, totodată, goale. Funcția deschide fișierul &#039;&#039;&#039;pareimpare.in&#039;&#039;&#039; și citeste fiecare linie, apoi fiecare caracter din linie și îl adaugă la lista &#039;&#039;&#039;vector&#039;&#039;&#039; dacă este un număr întreg. Dacă aceasta este lista cu toate datele, funcția verifică dacă aceasta are o lungime mai mică sau egală cu 100.000 și dacă fiecare număr este între 0 și 99. Dacă aceste condiții sunt îndeplinite, funcția adaugă fiecare număr par în lista &#039;&#039;&#039;vector_pare&#039;&#039;&#039; și fiecare număr impar în lista &#039;&#039;&#039;vector_impare&#039;&#039;&#039;. Dacă fiecare listă are cel puțin un element, funcția afișează &#039;&#039;&#039;Datele sunt corecte.&#039;&#039;&#039; și returnează lista &#039;&#039;&#039;vector_pare&#039;&#039;&#039; și lista &#039;&#039;&#039;vector_impare&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Funcția &#039;&#039;&#039;pareimpare&#039;&#039;&#039; primește ca parametrii cele două liste cu numere pare și impare, respectiv. Funcția sortează cele două liste și adaugă 0 la lista &#039;&#039;&#039;vector_impare&#039;&#039;&#039; și 1 la lista &#039;&#039;&#039;vector_pare&#039;&#039;&#039; pentru a avea grijă și de cazul în care toate numerele sunt pare sau impare. Apoi, funcția parcurge lista &#039;&#039;&#039;vector_impare&#039;&#039;&#039; și scrie în fișier toate numerele distincte, cu excepția ultimului element care este întotdeauna 0. Funcția face același lucru și pentru lista &#039;&#039;&#039;vector_pare&#039;&#039;&#039;, cu excepția ultimului element care este întotdeauna 1.&lt;/div&gt;</summary>
		<author><name>Csula Beatrice</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=1744_-_NrLipsa2&amp;diff=5671</id>
		<title>1744 - NrLipsa2</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=1744_-_NrLipsa2&amp;diff=5671"/>
		<updated>2023-04-30T13:57:30Z</updated>

		<summary type="html">&lt;p&gt;Csula Beatrice: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Sursa: [https://www.pbinfo.ro/probleme/1744/nrlipsa2 - NrLipsa2]&lt;br /&gt;
----&lt;br /&gt;
== Cerinţa ==&lt;br /&gt;
Fișierul de intrare conține cel mult &#039;&#039;&#039;1.000.000&#039;&#039;&#039; de numere întregi. Se cere să se afișeze în fișierul de ieșire cel mai mic număr din intervalul &#039;&#039;&#039;[-100,100]&#039;&#039;&#039; care nu apare în fișierul de intrare.&lt;br /&gt;
&lt;br /&gt;
Dacă nu există un astfel de număr se va afișa mesajul &#039;&#039;&#039;nu exista&#039;&#039;&#039;.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Fișierul de intrare &#039;&#039;&#039;nrlipsa2.in&#039;&#039;&#039; conține cel mult &#039;&#039;&#039;1.000.000&#039;&#039;&#039; de numere întregi, separate prin câte un spațiu, dispuse pe mai multe linii.&lt;br /&gt;
== Date de ieșire == &lt;br /&gt;
Dacă datele sunt introduse corect, pe ecran se va afișa: &lt;br /&gt;
&amp;quot;Datele sunt corecte.&amp;quot;, iar apoi in fişierul de ieșire &#039;&#039;&#039;nrlipsa2.out&#039;&#039;&#039; va conține pe prima linie valoarea cerută, sau mesajul &#039;&#039;&#039;nu exista&#039;&#039;&#039;. În caz contrar, se va afișa pe ecran: &amp;quot;Datele nu sunt comform restricțiilor impuse.&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Restricţii şi precizări ==&lt;br /&gt;
* numerele din fișierul de intrare vor fi din intervalul [-1.000.000, 1.000.000]&lt;br /&gt;
== Exemple ==&lt;br /&gt;
===Exemplul 1===&lt;br /&gt;
; nrlipsa2.in&lt;br /&gt;
: 80 -190 -149 165 -58 150 -8 -100 -99 65 &lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele sunt corecte.&lt;br /&gt;
; nrlipsa2.out&lt;br /&gt;
: -98&lt;br /&gt;
===Exemplul 2===&lt;br /&gt;
; nrlipsa2.in&lt;br /&gt;
: -100 -99 -98 -97 (...) 97 98 99 100 101 102&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele sunt corecte.&lt;br /&gt;
; nrlipsa2.out&lt;br /&gt;
: nu exista&lt;br /&gt;
===Exemplul 3===&lt;br /&gt;
; nrlipsa2.in&lt;br /&gt;
: 1000001 1000000000 131241 41421 0 131&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele nu sunt comform restricțiilor impuse.&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;
# 1744 NrLipsa2&lt;br /&gt;
&lt;br /&gt;
def nrlipsa(vector_verificare, vector_verificare_negative):&lt;br /&gt;
    element = 0&lt;br /&gt;
    for k in range(100, 0, -1):&lt;br /&gt;
        if vector_verificare_negative[k] == 0:&lt;br /&gt;
            if element == 0:&lt;br /&gt;
                element = k * (-1)&lt;br /&gt;
            else:&lt;br /&gt;
                break&lt;br /&gt;
    if element == 0:&lt;br /&gt;
        for k in range(100, 0, -1):&lt;br /&gt;
            if vector_verificare[k] == 0:&lt;br /&gt;
                if element == 0:&lt;br /&gt;
                    element = k&lt;br /&gt;
                else:&lt;br /&gt;
                    break&lt;br /&gt;
    f = open(&amp;quot;nrlipsa2.out&amp;quot;, &amp;quot;w&amp;quot;)&lt;br /&gt;
    if element != 0:&lt;br /&gt;
        f.write(str(element))&lt;br /&gt;
    else:&lt;br /&gt;
        f.write(&amp;quot;nu exista&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def readfiles(filename):&lt;br /&gt;
    with open(filename) as f:&lt;br /&gt;
        return [[int(num) for num in line.split()] for line in f]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def conform_restrictiilor():&lt;br /&gt;
    vector = list()&lt;br /&gt;
    vector_verificare = [0] * 101&lt;br /&gt;
    vector_verificare_negative = [0] * 101&lt;br /&gt;
    vector.append(readfiles(filename=&amp;quot;nrlipsa2.in&amp;quot;))&lt;br /&gt;
    if len(vector) &amp;gt; 1000000:&lt;br /&gt;
        print(&amp;quot;Datele nu sunt comform restricțiilor impuse.&amp;quot;)&lt;br /&gt;
        exit()&lt;br /&gt;
    vector = vector[0][0]&lt;br /&gt;
    for x in vector:&lt;br /&gt;
        x = int(x)&lt;br /&gt;
        if x * (-1) &amp;gt; 1000000 or x &amp;gt; 1000000:&lt;br /&gt;
            print(&amp;quot;Datele nu sunt comform restricțiilor impuse.&amp;quot;)&lt;br /&gt;
            exit()&lt;br /&gt;
        if 0 &amp;lt;= x &amp;lt;= 100:&lt;br /&gt;
            vector_verificare[x] = 1&lt;br /&gt;
        elif 0 &amp;lt;= x * (-1) &amp;lt;= 100:&lt;br /&gt;
            vector_verificare_negative[x * (-1)] = 1&lt;br /&gt;
    print(&amp;quot;Datele sunt corecte.&amp;quot;)&lt;br /&gt;
    return vector_verificare, vector_verificare_negative&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    vector_verificare, vector_verificare_negative = conform_restrictiilor()&lt;br /&gt;
    nrlipsa(vector_verificare, vector_verificare_negative)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Explicaţie cod==&lt;br /&gt;
&lt;br /&gt;
Funcția &#039;&#039;&#039;nrlipsa&#039;&#039;&#039; primește două liste: &#039;&#039;&#039;vector_verificare&#039;&#039;&#039; și &#039;&#039;&#039;vector_verificare_negative&#039;&#039;&#039;, care reprezintă verificarea dacă un număr se află sau nu în vectorul de intrare. Funcția caută în primul rând un număr negativ care să nu se afle în vectorul de intrare și apoi caută un număr pozitiv care să nu se afle în vectorul de intrare. Dacă găsește un număr care lipsește, îl scrie într-un fișier de ieșire numit &#039;&#039;&#039;nrlipsa2.out&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Funcția &#039;&#039;&#039;conform_restrictiilor&#039;&#039;&#039; citește datele de intrare din fișierul &#039;&#039;&#039;nrlipsa2.in&#039;&#039;&#039; și validează dacă respectă restricțiile impuse, adică numerele din vector trebuie să fie în intervalul [-1000000, 1000000] și trebuie să fie maxim 1.000.000 de numere în &#039;&#039;&#039;vector&#039;&#039;&#039;. Funcția returnează două vectori: &#039;&#039;&#039;vector_verificare&#039;&#039;&#039; și &#039;&#039;&#039;vector_verificare_negative&#039;&#039;&#039;, care sunt utilizați mai târziu pentru a găsi numărul lipsă.&lt;br /&gt;
&lt;br /&gt;
Funcția readfiles este o funcție ajutătoare care primește un nume de fișier și citește datele de intrare din fișierul respectiv, pe care le returnează sub forma de listă de liste. Această funcție este utilizată pentru a citi datele de intrare din fișierul &#039;&#039;&#039;nrlipsa2.in&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
În secțiunea principală a programului, se apelează funcția &#039;&#039;&#039;conform_restrictiilor&#039;&#039;&#039; pentru a obține vectorii de verificare, iar apoi se apelează funcția &#039;&#039;&#039;nrlipsa&#039;&#039;&#039; pentru a găsi numărul lipsă.&lt;/div&gt;</summary>
		<author><name>Csula Beatrice</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=2812_-_Progresie3&amp;diff=5669</id>
		<title>2812 - Progresie3</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=2812_-_Progresie3&amp;diff=5669"/>
		<updated>2023-04-30T13:54:17Z</updated>

		<summary type="html">&lt;p&gt;Csula Beatrice: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Sursa: [https://www.pbinfo.ro/probleme/2812/progresie3 - Progresie3]&lt;br /&gt;
----&lt;br /&gt;
== Cerinţa ==&lt;br /&gt;
Un șir de numere este o &#039;&#039;&#039;progresie aritmetică de rație r&#039;&#039;&#039; dacă oricare termen al său, cu excepția primului, se obține din cel care îl precede, prin adunarea la acesta a numărului r. &#039;&#039;&#039;Exemplu&#039;&#039;&#039;: șirul 12, 14, 16, 18, 20 este o progresie de rație 2.&lt;br /&gt;
&lt;br /&gt;
Se dă un șir de cel mult 1.000.000 numere naturale din intervalul [0,1.000]. Se cere să se verifice dacă există un număr natural &#039;&#039;&#039;r&#039;&#039;&#039;, astfel încât toate numerele distincte din șir să poată fi rearanjate, pentru a forma o progresie aritmetică de rație &#039;&#039;&#039;r&#039;&#039;&#039;. Se afișează numărul &#039;&#039;&#039;r&#039;&#039;&#039;, sau mesajul &#039;&#039;&#039;NU&#039;&#039;&#039;, dacă nu există un astfel de număr.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Fișierul de intrare &#039;&#039;&#039;progresie3.in&#039;&#039;&#039; conține cel mult 1.000.000 numere naturale din intervalul [0,1.000], 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: &lt;br /&gt;
&amp;quot;Datele sunt corecte.&amp;quot;, iar apoi in fişierul e ieșire &#039;&#039;&#039;progresie3.out&#039;&#039;&#039; va conține pe prima linie numărul &#039;&#039;&#039;r&#039;&#039;&#039;, sau mesajul &#039;&#039;&#039;NU&#039;&#039;&#039;, dacă nu există un astfel de număr. În caz contrar, se va afișa pe ecran: &amp;quot;Datele nu sunt comform restricțiilor impuse.&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Restricţii şi precizări ==&lt;br /&gt;
* în șirul dat există cel puțin două valori distincte&lt;br /&gt;
* proiectați un algoritm eficient din punctul de vedere al timpului de executare.&lt;br /&gt;
== Exemple ==&lt;br /&gt;
===Exemplul 1===&lt;br /&gt;
; progresie3.in&lt;br /&gt;
: 180 30 80 280 130 330 230 30 30 330 80&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele sunt corecte.&lt;br /&gt;
; progresie3.out&lt;br /&gt;
: 50&lt;br /&gt;
===Exemplul 2===&lt;br /&gt;
; progresie3.in&lt;br /&gt;
: 1 2 3 4 6&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele sunt corecte.&lt;br /&gt;
; progresie3.out&lt;br /&gt;
: NU&lt;br /&gt;
===Exemplul 3===&lt;br /&gt;
; progresie3.in&lt;br /&gt;
: 100 100 100&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele nu sunt comform restricțiilor impuse.&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;
# 2812 Progresie3&lt;br /&gt;
&lt;br /&gt;
def progresie(vector):&lt;br /&gt;
    f = open(&amp;quot;progresie3.out&amp;quot;, &amp;quot;w&amp;quot;)&lt;br /&gt;
    ratie = int()&lt;br /&gt;
    vector.sort()&lt;br /&gt;
    r = int()&lt;br /&gt;
    for i in range(len(vector) - 1):&lt;br /&gt;
        if vector[i] != vector[i + 1]:&lt;br /&gt;
            ratie = vector[i + 1] - vector[i]&lt;br /&gt;
            r = ratie&lt;br /&gt;
            break&lt;br /&gt;
    for i in range(len(vector) - 1):&lt;br /&gt;
        if vector[i] != vector[i + 1]:&lt;br /&gt;
            ratie = vector[i + 1] - vector[i]&lt;br /&gt;
            if ratie != r:&lt;br /&gt;
                f.write(&amp;quot;NU&amp;quot;)&lt;br /&gt;
                exit()&lt;br /&gt;
    f.write(str(r))&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def conform_restrictiilor():&lt;br /&gt;
    vector = list()&lt;br /&gt;
    with open(&#039;progresie3.in&#039;) as f:&lt;br /&gt;
        lines = f.readlines()&lt;br /&gt;
        for line in lines:&lt;br /&gt;
            for c in line.split():&lt;br /&gt;
                if c.isdigit() == True:&lt;br /&gt;
                    vector.append(int(c))&lt;br /&gt;
    if len(vector) &amp;gt; 1000000 or vector.count(vector[0]) == len(vector):&lt;br /&gt;
        print(&amp;quot;Datele nu sunt comform restricțiilor impuse.&amp;quot;)&lt;br /&gt;
        exit()&lt;br /&gt;
    for x in vector:&lt;br /&gt;
        if x &amp;lt; 0 or x &amp;gt; 1000:&lt;br /&gt;
            print(&amp;quot;Datele nu sunt comform restricțiilor impuse.&amp;quot;)&lt;br /&gt;
            exit()&lt;br /&gt;
    print(&amp;quot;Datele sunt corecte.&amp;quot;)&lt;br /&gt;
    return vector&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    vector = conform_restrictiilor()&lt;br /&gt;
    progresie(vector)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
==Explicaţie cod==&lt;br /&gt;
&lt;br /&gt;
Funcția &#039;&#039;&#039;progresie(vector)&#039;&#039;&#039; primește un vector ca parametru și începe prin a deschide un fișier &#039;&#039;&#039;progresie3.out&#039;&#039;&#039; pentru a scrie rezultatul. Apoi, initializează două variabile ratie și &#039;&#039;&#039;r&#039;&#039;&#039; cu valoarea 0. Vectorul este sortat și apoi se parcurge prin el. Dacă două elemente consecutive sunt diferite, se calculează diferența dintre ele și se stochează în variabila &#039;&#039;&#039;ratie&#039;&#039;&#039;. De asemenea, valoarea acestei diferențe este stochează și în variabila &#039;&#039;&#039;r&#039;&#039;&#039;. Programul se oprește din parcurgerea vectorului la primul astfel de caz, deoarece nu mai este nevoie să verifice restul elementelor din vector.&lt;br /&gt;
&lt;br /&gt;
După ce &#039;&#039;&#039;r&#039;&#039;&#039; a fost calculat, se parcurge din nou vectorul, de data aceasta pentru a verifica dacă toate diferențele dintre elementele consecutive ale vectorului sunt egale cu &#039;&#039;&#039;r&#039;&#039;&#039;. Dacă acest lucru este adevărat pentru toate diferențele, programul scrie valoarea &#039;&#039;&#039;r&#039;&#039;&#039; în fișierul de ieșire &#039;&#039;&#039;progresie3.out&#039;&#039;&#039;. Dacă se găsește o diferență care nu este egală cu &#039;&#039;&#039;r&#039;&#039;&#039;, programul afișează &#039;&#039;&#039;NU&#039;&#039;&#039; și se oprește prin apelul funcției &#039;&#039;&#039;exit()&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Funcția &#039;&#039;&#039;conform_restrictiilor()&#039;&#039;&#039; primește ca input datele din fișierul &#039;&#039;&#039;progresie3.in&#039;&#039;&#039; și verifică dacă ele corespund restricțiilor impuse. Mai precis, datele din fișier trebuie să conțină între 2 și 1000000 de elemente și fiecare element trebuie să fie între 0 și 1000. De asemenea, toate elementele din &#039;&#039;&#039;vector&#039;&#039;&#039; trebuie să fie diferite. Dacă restricțiile nu sunt îndeplinite, programul afișează un mesaj corespunzător și se oprește prin apelul funcției &#039;&#039;&#039;exit()&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
În funcția &#039;&#039;&#039;main()&#039;&#039;&#039;, se apelează mai întâi funcția &#039;&#039;&#039;conform_restrictiilor()&#039;&#039;&#039; pentru a verifica dacă datele din fișier sunt valide și pentru a obține vectorul de numere. Apoi, se apelează funcția &#039;&#039;&#039;progresie(vector)&#039;&#039;&#039; pentru a determina dacă vectorul este o progresie aritmetică și pentru a afișa diferența în fișierul de ieșire sau &#039;&#039;&#039;NU&#039;&#039;&#039;, după caz.&lt;/div&gt;</summary>
		<author><name>Csula Beatrice</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=3287_-_cifrazecmax&amp;diff=5668</id>
		<title>3287 - cifrazecmax</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=3287_-_cifrazecmax&amp;diff=5668"/>
		<updated>2023-04-30T13:50:57Z</updated>

		<summary type="html">&lt;p&gt;Csula Beatrice: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Sursa: [https://www.pbinfo.ro/probleme/3287/cifrazecmax -cifrazecmax]&lt;br /&gt;
----&lt;br /&gt;
== Cerinţa ==&lt;br /&gt;
Se consideră un şir &#039;&#039;&#039;vector&#039;&#039;&#039; de cel puțin 11 şi cel mult 10.000 de numere naturale, despărțite prin câte un spațiu. Fiecare număr are cel puțin două şi cel mult nouă cifre. Primul termen al şirului are numărul de ordine 1, al doilea are numărul de ordine 2 etc. Se citeşte şirul din fişier şi se cere să se determine numărul de ordine al unui termen al şirului care este precedat în fişier de un număr maxim de valori care au cifra zecilor egală cu a sa. Dacă sunt mai mulți termeni cu această proprietate se afişează numărul de ordine al primului.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Fișierul de intrare &#039;&#039;&#039;cifrazecmax.in&#039;&#039;&#039; conține pe prima linie cel puțin &#039;&#039;&#039;11&#039;&#039;&#039; şi cel mult un &#039;&#039;&#039;10.000&#039;&#039;&#039; de numere naturale, despărțite 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: &lt;br /&gt;
&amp;quot;Datele sunt corecte.&amp;quot;, iar apoi in fişierul de ieșire &#039;&#039;&#039;cifrazecmax.out&#039;&#039;&#039; va conține pe prima linie numărul de ordine al termenului care este precedat în fişier de un număr maxim de valori care au cifra zecilor egală cu a sa. În caz contrar, se va afișa pe ecran: &amp;quot;Datele nu sunt comform restricțiilor impuse.&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Restricţii şi precizări ==&lt;br /&gt;
* numerele din fișierul de intrare &#039;&#039;&#039;cifrazecmax.in&#039;&#039;&#039; au cel puțin &#039;&#039;&#039;2&#039;&#039;&#039; cifre și sunt mai mici decât &#039;&#039;&#039;1.000.000.000&#039;&#039;&#039;&lt;br /&gt;
* în fișier sunt cel mult &#039;&#039;&#039;10000&#039;&#039;&#039; de numere&lt;br /&gt;
== Exemple ==&lt;br /&gt;
===Exemplul 1===&lt;br /&gt;
; cifrazecmax.in&lt;br /&gt;
: 12 36 265 18 139 19 32 34 112 14 68&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele sunt corecte.&lt;br /&gt;
; cifrazecmax.out&lt;br /&gt;
: 10&lt;br /&gt;
===Explicatie===&lt;br /&gt;
10 este numărul de ordine al termenului 14. Pe poziția zecilor sunt 5 cifre de 1, 4 cifre de 3 și 2 cifre de 6. Cel mai mare este 5 corespunzător cifrei 1. Ultimul termen al șirului care are cifra zecilor 1 este 14 și are numărul de ordine 10.&lt;br /&gt;
===Exemplul 2===&lt;br /&gt;
; cifrazecmax.in&lt;br /&gt;
: 12 63 265 88 139 19 32 34 68 112 74 &lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele sunt corecte.&lt;br /&gt;
; cifrazecmax.out&lt;br /&gt;
: 8&lt;br /&gt;
===Explicatie===&lt;br /&gt;
8 este numărul de ordine al termenului 34. Pe poziția zecilor sunt 3 cifre de 1, 3 cifre de 3, 3 cifre de 6, o cifră de 8 și una de 7. Contorul cel mai mare este 3 corespunzător cifrelor 1, 3 și 6. Primul termen care este precedat în fişier de un număr maxim de valori care au cifra zecilor egală cu a sa este 34 și are numărul de ordine 8.&lt;br /&gt;
===Exemplul 3===&lt;br /&gt;
; cifrazecmax.in&lt;br /&gt;
: 2 3 4 5 6&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele nu sunt comform restricțiilor impuse.&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;
# 3287 - cifrazecmax&lt;br /&gt;
&lt;br /&gt;
def cifrazecmax(vector):&lt;br /&gt;
    f = open(&amp;quot;cifrazecmax.out&amp;quot;, &amp;quot;w&amp;quot;)&lt;br /&gt;
    cifre = [0] * len(vector)&lt;br /&gt;
    for i in range(len(vector)):&lt;br /&gt;
        element = vector[i]&lt;br /&gt;
        cifre[i] = element % 100 // 10&lt;br /&gt;
    maxim = 0&lt;br /&gt;
    pozfinala = int()&lt;br /&gt;
    for i in range(0, 10):&lt;br /&gt;
        contor = 0;&lt;br /&gt;
        poz = int()&lt;br /&gt;
        for j in range(len(vector)):&lt;br /&gt;
            if cifre[j] == i:&lt;br /&gt;
                contor += 1&lt;br /&gt;
                poz = j&lt;br /&gt;
        if contor &amp;gt; maxim:&lt;br /&gt;
            maxim = contor&lt;br /&gt;
            pozfinala = poz&lt;br /&gt;
        if contor == maxim and poz &amp;lt; pozfinala:&lt;br /&gt;
            pozfinala = poz&lt;br /&gt;
    f.write(str(pozfinala + 1))&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def conform_restrictiilor():&lt;br /&gt;
    vector = list()&lt;br /&gt;
    with open(&#039;cifrazecmax.in&#039;) as f:&lt;br /&gt;
        lines = f.readlines()&lt;br /&gt;
        for line in lines:&lt;br /&gt;
            for c in line.split():&lt;br /&gt;
                if c.isdigit() == True:&lt;br /&gt;
                    vector.append(int(c))&lt;br /&gt;
    if len(vector) &amp;gt; 10000 or len(vector) &amp;lt; 11:&lt;br /&gt;
        print(&amp;quot;Datele nu sunt comform restricțiilor impuse.&amp;quot;)&lt;br /&gt;
        exit()&lt;br /&gt;
    for x in vector:&lt;br /&gt;
        if x &amp;lt; 10 or x &amp;gt; 1000000000:&lt;br /&gt;
            print(&amp;quot;Datele nu sunt comform restricțiilor impuse.&amp;quot;)&lt;br /&gt;
            exit()&lt;br /&gt;
    print(&amp;quot;Datele sunt corecte.&amp;quot;)&lt;br /&gt;
    return vector&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    vector = conform_restrictiilor()&lt;br /&gt;
    cifrazecmax(vector)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
==Explicaţie cod==&lt;br /&gt;
&lt;br /&gt;
Funcția &#039;&#039;&#039;conform_restrictiilor()&#039;&#039;&#039; verifică dacă datele de intrare sunt conforme cu cerințele problemei. Mai precis, programul verifică dacă vectorul are între 11 și 10000 de elemente, iar fiecare element este între 10 și 10^9. Dacă aceste condiții nu sunt îndeplinite, programul va afișa un mesaj de eroare și va ieși din program. Dacă datele sunt conforme, funcția va returna vectorul.&lt;br /&gt;
&lt;br /&gt;
Funcția &#039;&#039;&#039;cifrazecmax(vector)&#039;&#039;&#039; primește vectorul ca parametru și găsește poziția primei cifre zecimale care apare cel mai des în numerele vectorului. Pentru aceasta, se parcurge fiecare element al vectorului și se extrage cifra zecimală corespunzătoare (adică a doua cifră de la dreapta). Aceste cifre sunt stocate într-un alt vector numit &#039;&#039;&#039;cifre&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Se parcurg apoi cifrele de la 0 la 9 și se numără câte elemente din cifre au cifra zecimală egală cu cifra rezultata. Dacă numărul de apariții este mai mare decât valoarea maximă găsită până în acel moment, atunci se actualizează valoarea maximă și poziția din &#039;&#039;&#039;vector&#039;&#039;&#039; corespunzătoare. Dacă numărul de apariții este egal cu valoarea maximă și poziția curentă este mai mică decât poziția anterioară, atunci se actualizează poziția anterioară.&lt;br /&gt;
&lt;br /&gt;
Funcția va scrie poziția primei cifre zecimale care apare cel mai des în fișierul &#039;&#039;&#039;cifrazecmax.out&#039;&#039;&#039;.&lt;/div&gt;</summary>
		<author><name>Csula Beatrice</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=2843_-_Puteri6&amp;diff=5667</id>
		<title>2843 - Puteri6</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=2843_-_Puteri6&amp;diff=5667"/>
		<updated>2023-04-30T13:48:22Z</updated>

		<summary type="html">&lt;p&gt;Csula Beatrice: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Sursa: [https://www.pbinfo.ro/probleme/2843/puteri6 -Puteri6]&lt;br /&gt;
----&lt;br /&gt;
== Cerinţa ==&lt;br /&gt;
Se dă un număr natural &#039;&#039;&#039;numar&#039;&#039;&#039; (1≤n≤106 ), și un șir cu cel mult 1000000 de elemente, numere naturale de forma 10^p (0≤p≤9). Se cere să se afișeze numărul care ar apărea pe poziția &#039;&#039;&#039;numar&#039;&#039;&#039; în șirul ordonat crescător. Dacă șirul are mai puțin de &#039;&#039;&#039;numar&#039;&#039;&#039; termeni, se afișează mesajul Nu exista.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Fișierul de intrare &#039;&#039;&#039;puteri6.in&#039;&#039;&#039; conține pe prima linie numărul &#039;&#039;&#039;numar&#039;&#039;&#039;, iar pe a doua linie elementele șirului dat, 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: &lt;br /&gt;
&amp;quot;Datele sunt corecte.&amp;quot;, iar apoi in fişierul de ieșire &#039;&#039;&#039;puteri6.out&#039;&#039;&#039; va conține pe prima linie numărul care ar apărea pe poziția &#039;&#039;&#039;numar&#039;&#039;&#039; în șirul ordonat crescător sau mesajul &#039;&#039;&#039;Nu exista&#039;&#039;&#039;, dacă șirul are mai puțin de &#039;&#039;&#039;numar&#039;&#039;&#039; termeni. În caz contrar, se va afișa pe ecran: &amp;quot;Datele nu sunt comform restricțiilor impuse.&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Restricţii şi precizări ==&lt;br /&gt;
* Pentru determinarea numărului cerut se utilizează un algoritm eficient din punctul de vedere al timpului de executare. Se recomandă evitarea memorării valorilor elementelor din șir într-un tablou sau în altă structură de date similară.&lt;br /&gt;
== Exemple ==&lt;br /&gt;
===Exemplul 1===&lt;br /&gt;
; puteri6.in&lt;br /&gt;
: 5&lt;br /&gt;
: 100 100000 1 100000 1000 100 10&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele sunt corecte.&lt;br /&gt;
; puteri6.out&lt;br /&gt;
: 1000&lt;br /&gt;
===Exemplul 2===&lt;br /&gt;
; puteri6.in&lt;br /&gt;
: 4&lt;br /&gt;
: 100 1000 10&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele sunt corecte.&lt;br /&gt;
; puteri6.out&lt;br /&gt;
: Nu exista&lt;br /&gt;
===Exemplul 3===&lt;br /&gt;
; puteri6.in&lt;br /&gt;
: 5&lt;br /&gt;
: 2 3 4 5 6&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele nu sunt comform restricțiilor impuse.&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;
# 0239 Puteri6&lt;br /&gt;
&lt;br /&gt;
def puteri6(vector, numar):&lt;br /&gt;
    vector_elemente = vector[1:]&lt;br /&gt;
    vector_elemente.sort()&lt;br /&gt;
    f = open(&amp;quot;puteri6.out&amp;quot;, &amp;quot;w&amp;quot;)&lt;br /&gt;
    if len(vector_elemente) &amp;lt; numar:&lt;br /&gt;
        f.write(&amp;quot;nu exista&amp;quot;)&lt;br /&gt;
    else:&lt;br /&gt;
        f.write(str(vector_elemente[numar - 1]))&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def conform_restrictiilor():&lt;br /&gt;
    vector = list()&lt;br /&gt;
    puteri10 = [1, 10, 100, 1000, 10000, 100000, 1000000, 10000000, 100000000, 1000000000]&lt;br /&gt;
    with open(&#039;puteri6.in&#039;) as f:&lt;br /&gt;
        lines = f.readlines()&lt;br /&gt;
        for line in lines:&lt;br /&gt;
            for c in line.split():&lt;br /&gt;
                if c.isdigit() is True:&lt;br /&gt;
                    vector.append(int(c))&lt;br /&gt;
    numar = vector[0]&lt;br /&gt;
    for i in range(1, len(vector)):&lt;br /&gt;
        element = vector[i]&lt;br /&gt;
        repetare_element = puteri10.count(element)&lt;br /&gt;
        if repetare_element == 0:&lt;br /&gt;
            print(&amp;quot;Datele nu sunt comform restricțiilor impuse.&amp;quot;)&lt;br /&gt;
            exit()&lt;br /&gt;
    print(&amp;quot;Datele sunt corecte.&amp;quot;)&lt;br /&gt;
    return vector, numar&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    vector, numar = conform_restrictiilor()&lt;br /&gt;
    puteri6(vector, numar)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
==Explicaţie cod==&lt;br /&gt;
&lt;br /&gt;
Acest cod citește un fișier de intrare numit &#039;&#039;&#039;puteri6.in&#039;&#039;&#039; care conține un număr întreg &#039;&#039;&#039;N&#039;&#039;&#039; și &#039;&#039;&#039;N&#039;&#039;&#039; numere întregi, și verifică dacă toate numerele din intrare sunt puteri ale lui 10. Dacă datele sunt conforme cu restricțiile impuse, se afișează al &#039;&#039;&#039;N&#039;&#039;&#039;-lea cel mai mare număr care este o putere a lui 10 din lista numerelor întregi citite din fișierul de intrare. În caz contrar, se afișează un mesaj de eroare.&lt;br /&gt;
&lt;br /&gt;
Mai precis, funcția &#039;&#039;&#039;conform_restrictiilor&#039;&#039;&#039; citește fișierul de intrare și verifică dacă fiecare număr este o putere a lui 10. Funcția returnează vectorul de numere citite și numar care este primul număr din fișier, reprezentând numărul de elemente din vector. Funcția &#039;&#039;&#039;puteri6&#039;&#039;&#039; sortează vectorul și verifică dacă există suficiente elemente în &#039;&#039;&#039;vector&#039;&#039;&#039; pentru a afișa cel de-al &#039;&#039;&#039;N&#039;&#039;&#039;-lea cel mai mare număr care este o putere a lui 10. Dacă există, afișează acest număr, altfel afișează &#039;&#039;&#039;nu exista&#039;&#039;&#039;.&lt;/div&gt;</summary>
		<author><name>Csula Beatrice</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=0809_-_NrLipsa1&amp;diff=5665</id>
		<title>0809 - NrLipsa1</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=0809_-_NrLipsa1&amp;diff=5665"/>
		<updated>2023-04-30T13:44:52Z</updated>

		<summary type="html">&lt;p&gt;Csula Beatrice: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Sursa: [https://www.pbinfo.ro/probleme/809/nrlipsa1 - NrLipsa1]&lt;br /&gt;
----&lt;br /&gt;
== Cerinţa ==&lt;br /&gt;
Fișierul de intrare &#039;&#039;&#039;nrlipsa1.in&#039;&#039;&#039; conține cel puțin 3 și cel mult 1.000.000 de numere naturale. Se cere să se afișeze în fișierul de ieșire &#039;&#039;&#039;nrlipsa1.out&#039;&#039;&#039;, separate printr-un spaţiu, două numere distincte, anume cel mai mic număr par cu două cifre și cel mai mare număr par cu două cifre care &#039;&#039;&#039;NU&#039;&#039;&#039; fac parte din şir.&lt;br /&gt;
&lt;br /&gt;
Dacă nu există două astfel de valori, în fișierul de ieșire se afişează mesajul &#039;&#039;&#039;nu exista&#039;&#039;&#039;.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Fișierul de intrare &#039;&#039;&#039;nrlipsa1.in&#039;&#039;&#039; conține cel puțin 3 și cel mult 1.000.000 de numere naturale, separate prin câte un spațiu, dispuse pe mai multe linii.&lt;br /&gt;
== Date de ieșire == &lt;br /&gt;
Dacă datele sunt introduse corect, pe ecran se va afișa: &lt;br /&gt;
&amp;quot;Datele sunt corecte.&amp;quot;, iar apoi in fişierul de ieșire &#039;&#039;&#039;nrlipsa1.out&#039;&#039;&#039; va conține pe prima linie valorile cerute, separate prin câte un spațiu, sau mesajul &#039;&#039;&#039;nu exista&#039;&#039;&#039;. În caz contrar, se va afișa pe ecran: &amp;quot;Datele nu sunt comform restricțiilor impuse.&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Restricţii şi precizări ==&lt;br /&gt;
* numerele din fișierul de intrare vor fi din intervalul (0, 1.000.000.000)&lt;br /&gt;
== Exemple ==&lt;br /&gt;
===Exemplul 1===&lt;br /&gt;
; nrlipsa1.in&lt;br /&gt;
: 7 2 40 5 10 15 11 12 18 350&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele sunt corecte.&lt;br /&gt;
; nrlipsa1.out&lt;br /&gt;
: 14 98&lt;br /&gt;
===Exemplul 2===&lt;br /&gt;
; nrlipsa1.in&lt;br /&gt;
: 10 12 14 16 18&lt;br /&gt;
: 20 22 24 26 28&lt;br /&gt;
: 30 32 34 36 38&lt;br /&gt;
: 40 42 44 46 48&lt;br /&gt;
: 50 52 54 56 58&lt;br /&gt;
: 60 62 64 66 68&lt;br /&gt;
: 70 72 74 76 78&lt;br /&gt;
: 80 82 84 86 88&lt;br /&gt;
: 90 92 94 96 98&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele sunt corecte.&lt;br /&gt;
; nrlipsa1.out&lt;br /&gt;
: nu exista&lt;br /&gt;
===Exemplul 3===&lt;br /&gt;
; nrlipsa1.in&lt;br /&gt;
: 12614862418561826 121241 14241 191294&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele nu sunt comform restricțiilor impuse.&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;
# 0809 NrLipsa1&lt;br /&gt;
&lt;br /&gt;
def nrlipsa(vector_verificare):&lt;br /&gt;
    prima_valoare = 0&lt;br /&gt;
    a_doua_valoare = 0&lt;br /&gt;
    for k in range(98, 10, -2):&lt;br /&gt;
        if vector_verificare[k] == 0:&lt;br /&gt;
            if a_doua_valoare == 0:&lt;br /&gt;
                a_doua_valoare = k&lt;br /&gt;
            else:&lt;br /&gt;
                break&lt;br /&gt;
    for k in range(10, 98, +2):&lt;br /&gt;
        if vector_verificare[k] == 0:&lt;br /&gt;
            if prima_valoare == 0:&lt;br /&gt;
                prima_valoare = k&lt;br /&gt;
            else:&lt;br /&gt;
                break&lt;br /&gt;
    f = open(&amp;quot;nrlipsa1.out&amp;quot;, &amp;quot;w&amp;quot;)&lt;br /&gt;
    if prima_valoare != 0 and a_doua_valoare != 0:&lt;br /&gt;
        line = [str(prima_valoare), &amp;quot; &amp;quot;, str(a_doua_valoare)]&lt;br /&gt;
        f.writelines(line)&lt;br /&gt;
    else:&lt;br /&gt;
        f.write(&amp;quot;nu exista&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def conform_restrictiilor():&lt;br /&gt;
    vector = list()&lt;br /&gt;
    vector_verificare = [0] * 100&lt;br /&gt;
    with open(&#039;nrlipsa1.in&#039;) as f:&lt;br /&gt;
        lines = f.readlines()&lt;br /&gt;
        for line in lines:&lt;br /&gt;
            for c in line.split():&lt;br /&gt;
                if c.isdigit() is True:&lt;br /&gt;
                    vector.append(int(c))&lt;br /&gt;
    if len(vector) &amp;gt; 1000000 or len(vector) &amp;lt; 3:&lt;br /&gt;
        print(&amp;quot;Datele nu sunt comform restricțiilor impuse.&amp;quot;)&lt;br /&gt;
        exit()&lt;br /&gt;
    for x in vector:&lt;br /&gt;
        if x &amp;lt; 0 or x &amp;gt;= 1000000000:&lt;br /&gt;
            print(&amp;quot;Datele nu sunt comform restricțiilor impuse.&amp;quot;)&lt;br /&gt;
            exit()&lt;br /&gt;
        if 10 &amp;lt;= x &amp;lt;= 99:&lt;br /&gt;
            vector_verificare[x] = 1&lt;br /&gt;
&lt;br /&gt;
    print(&amp;quot;Datele sunt corecte.&amp;quot;)&lt;br /&gt;
    return vector_verificare&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    vector_verificare = conform_restrictiilor()&lt;br /&gt;
    nrlipsa(vector_verificare)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Explicaţie cod==&lt;br /&gt;
&lt;br /&gt;
Funcția &#039;&#039;&#039;conform_restrictiilor&#039;&#039;&#039; verifică dacă datele din fișierul de intrare sunt conforme cu restricțiile impuse și returnează un &#039;&#039;&#039;vector&#039;&#039;&#039; care conține numerele de la 10 la 99 din fișierul de intrare cu valoarea 1, iar restul elementelor vor avea valoarea 0.&lt;br /&gt;
&lt;br /&gt;
Funcția &#039;&#039;&#039;nrlipsa&#039;&#039;&#039; primește vectorul de verificare și caută două numere lipsă în lista de numere. În primul &#039;&#039;&#039;for&#039;&#039;&#039;, caută un număr impar lipsă în intervalul [98, 10] în vectorul de verificare. Dacă un astfel de număr este găsit, îl salvează în variabila &#039;&#039;&#039;a_doua_valoare&#039;&#039;&#039;. Apoi, în al doilea &#039;&#039;&#039;for&#039;&#039;&#039;, caută un număr par lipsă în intervalul [10, 98] în vectorul de verificare. Dacă un astfel de număr este găsit, îl salvează în variabila &#039;&#039;&#039;prima_valoare&#039;&#039;&#039;. În final, dacă ambele numere lipsă au fost găsite, programul scrie numerele respective într-un fișier de ieșire &#039;&#039;&#039;nrlipsa1.out&#039;&#039;&#039;. Dacă cel puțin unul dintre aceste numere nu este găsit, programul scrie &#039;&#039;&#039;nu exista&#039;&#039;&#039; în fișierul de ieșire.&lt;br /&gt;
&lt;br /&gt;
În funcția principală, programul citește numărul de elemente din fișierul de intrare și o listă de numere utilizând &#039;&#039;&#039;input()&#039;&#039;&#039;, apoi verifică dacă datele sunt conforme restricțiilor cu ajutorul funcției conform_restrictiilor și apoi calculează numerele lipsă cu ajutorul funcției &#039;&#039;&#039;nrlipsa&#039;&#039;&#039;.&lt;/div&gt;</summary>
		<author><name>Csula Beatrice</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=4147_-_NumarareCifre&amp;diff=5664</id>
		<title>4147 - NumarareCifre</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=4147_-_NumarareCifre&amp;diff=5664"/>
		<updated>2023-04-30T13:41:52Z</updated>

		<summary type="html">&lt;p&gt;Csula Beatrice: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Sursa: [https://www.pbinfo.ro/probleme/4147/numararecifre - NumarareCifre]&lt;br /&gt;
----&lt;br /&gt;
== Cerinţa ==&lt;br /&gt;
Se dă un &#039;&#039;&#039;vector&#039;&#039;&#039; cu &#039;&#039;&#039;numar&#039;&#039;&#039; numere naturale. Să se determine câte dintre perechile de elemente din vector au același număr de cifre.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Programul citește de la tastatură numărul &#039;&#039;&#039;numar&#039;&#039;&#039;, iar apoi &#039;&#039;&#039;numar&#039;&#039;&#039; numere naturale, separate prin spaţii, reprezentând elementele vectorului.&lt;br /&gt;
== Date de ieșire == &lt;br /&gt;
Dacă datele sunt introduse corect, pe ecran se va afișa: &lt;br /&gt;
&amp;quot;Datele sunt corecte.&amp;quot;, iar apoi se afișează pe ecran numărul &#039;&#039;&#039;c&#039;&#039;&#039;, reprezentând valoarea cerută. În caz contrar, se va afișa pe ecran: &amp;quot;Datele nu sunt comform restricțiilor impuse.&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Restricţii şi precizări ==&lt;br /&gt;
* 1 &amp;amp;les; &#039;&#039;&#039;numar&#039;&#039;&#039; &amp;amp;les; 100.000&lt;br /&gt;
* cele &#039;&#039;&#039;numar&#039;&#039;&#039; numere citite vor fi mai mici decât 1.000.000.000&lt;br /&gt;
== Exemple ==&lt;br /&gt;
===Exemplul 1===&lt;br /&gt;
; Intrare&lt;br /&gt;
: 6&lt;br /&gt;
: 13 3 8 700 9 25&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele sunt corecte.&lt;br /&gt;
: 4 &lt;br /&gt;
===Exemplul 2===&lt;br /&gt;
; Intrare&lt;br /&gt;
: 10&lt;br /&gt;
: 100 10000 100 20 1 20 30 10 98 999999999999999&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele nu corespund restricțiilor impuse.&lt;br /&gt;
===Exemplul 3===&lt;br /&gt;
; Intrare&lt;br /&gt;
: 5&lt;br /&gt;
: 1 11 111 1111 11111&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele sunt corecte.&lt;br /&gt;
: 0&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;
# 4147 NumarareCifre&lt;br /&gt;
&lt;br /&gt;
def numarare(vector, numar):&lt;br /&gt;
    vector.sort()&lt;br /&gt;
    c = 0&lt;br /&gt;
    for i in range(numar - 1):&lt;br /&gt;
        for j in range(i + 1, numar):&lt;br /&gt;
            element = str(vector[i])&lt;br /&gt;
            urmatorul_element = str(vector[j])&lt;br /&gt;
            if len(element) == len(urmatorul_element):&lt;br /&gt;
                c += 1&lt;br /&gt;
    print(c)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def conform_restrictiilor(numar, vector):&lt;br /&gt;
    if numar &amp;lt; 1 or numar &amp;gt; 1000:&lt;br /&gt;
        print(&amp;quot;Datele nu sunt comform restricțiilor impuse.&amp;quot;)&lt;br /&gt;
        return False&lt;br /&gt;
    for x in vector:&lt;br /&gt;
        if x &amp;gt; 100000000 or x &amp;lt; 1:&lt;br /&gt;
            print(&amp;quot;Datele nu sunt comform restricțiilor impuse.&amp;quot;)&lt;br /&gt;
            return False&lt;br /&gt;
    print(&amp;quot;Datele sunt corecte.&amp;quot;)&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    numar = int(input())&lt;br /&gt;
    vector = list(map(int, input().split()))&lt;br /&gt;
    if conform_restrictiilor(numar, vector) is True:&lt;br /&gt;
        numarare(vector, numar)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Explicaţie cod==&lt;br /&gt;
&lt;br /&gt;
Funcția &#039;&#039;&#039;conform_restrictiilor(numar, vector)&#039;&#039;&#039; primește numărul de elemente și lista de elemente și verifică dacă acestea îndeplinesc anumite restricții: numărul de elemente trebuie să fie între 1 și 1000, iar fiecare element trebuie să fie între 1 și 100000000. Dacă datele sunt conforme restricțiilor, funcția returnează True, altfel afișează un mesaj de eroare și returnează False.&lt;br /&gt;
&lt;br /&gt;
Funcția &#039;&#039;&#039;numarare(vector, numar)&#039;&#039;&#039; sortează lista de elemente primite, apoi parcurge lista și numără numărul de perechi de elemente care au aceeași lungime, adăugându-le la variabila &#039;&#039;&#039;c&#039;&#039;&#039;. La final, funcția afișează valoarea lui &#039;&#039;&#039;c&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
În funcția principală &#039;&#039;&#039;if __name__ == &#039;__main__&#039;&#039;&#039;&#039;, se citește numărul de elemente și lista de elemente, apoi se verifică dacă datele sunt conforme restricțiilor cu ajutorul funcției conform_restrictiilor. Dacă datele sunt conforme, se apelează funcția &#039;&#039;&#039;numarare&#039;&#039;&#039; pentru a număra perechile de elemente cu aceeași lungime.&lt;/div&gt;</summary>
		<author><name>Csula Beatrice</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=2837_-_Intervale5&amp;diff=5663</id>
		<title>2837 - Intervale5</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=2837_-_Intervale5&amp;diff=5663"/>
		<updated>2023-04-30T13:39:19Z</updated>

		<summary type="html">&lt;p&gt;Csula Beatrice: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Sursa: [https://www.pbinfo.ro/probleme/2837/intervale5 - Intervale5]&lt;br /&gt;
----&lt;br /&gt;
== Cerinţa ==&lt;br /&gt;
Se dă un șir de cel mult &#039;&#039;&#039;1.000.000&#039;&#039;&#039; de numere naturale din intervalul &#039;&#039;&#039;[0,100]&#039;&#039;&#039;. Se cere să se determine toate perechile distincte formate din termeni ai șirului dat, x și y (y-x≥2), astfel încât să nu existe niciun termen al șirului care să aparțină intervalului (x,y). Dacă nu există nicio astfel de pereche, se afișează mesajul &amp;quot;nu exista&amp;quot;.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Fișierul de intrare &#039;&#039;&#039;intervale5.in&#039;&#039;&#039; conține pe prima linie elementele șirului, 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: &lt;br /&gt;
&amp;quot;Datele sunt corecte.&amp;quot;, iar apoi in fişierul de ieșire &#039;&#039;&#039;intervale5.out&#039;&#039;&#039; va conține perechile găsite, câte una pe linie, în ordine strict crescătoare, separate printr-un spațiu, iar dacă nu există nicio astfel de pereche, se afișează mesajul &#039;&#039;&#039;nu exista&#039;&#039;&#039;. În caz contrar, se va afișa pe ecran: &amp;quot;Datele nu sunt comform restricțiilor impuse.&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Restricţii şi precizări ==&lt;br /&gt;
* pentru determinarea numerelor cerute utilizați un algoritm eficient din punctul de vedere al timpului de executare: recomandă evitarea memorării elementelor șirului într-un tablou sau în altă structură de date similară&lt;br /&gt;
== Exemple ==&lt;br /&gt;
===Exemplul 1===&lt;br /&gt;
; intervale5.in&lt;br /&gt;
: 5 9 0 8 10 11 12 13 15 14 6 7 40 10 0 0 5 41 95 7&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele sunt corecte.&lt;br /&gt;
; intervale5.out&lt;br /&gt;
: 0 5&lt;br /&gt;
: 15 40&lt;br /&gt;
: 41 95&lt;br /&gt;
===Exemplul 2===&lt;br /&gt;
; intervale5.in&lt;br /&gt;
: 1 2 3 4 5 6&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele sunt corecte.&lt;br /&gt;
; intervale5.out&lt;br /&gt;
: nu exista&lt;br /&gt;
===Exemplul 3===&lt;br /&gt;
; intervale5.in&lt;br /&gt;
: 101 100 102 3000&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele nu sunt comform restricțiilor impuse.&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;
# 2837 Intervale5&lt;br /&gt;
&lt;br /&gt;
def intervale5(vector):&lt;br /&gt;
    maxi = -1&lt;br /&gt;
    v = [0] * 101&lt;br /&gt;
    for x in vector:&lt;br /&gt;
        v[x] = 1&lt;br /&gt;
        if x &amp;gt; maxi:&lt;br /&gt;
            maxi = x&lt;br /&gt;
    contor = 0&lt;br /&gt;
    f = open(&amp;quot;intervale5.out&amp;quot;, &amp;quot;w&amp;quot;)&lt;br /&gt;
    for i in range(0, maxi - 1):&lt;br /&gt;
        for j in range(i + 2, maxi + 1):&lt;br /&gt;
            ok = True&lt;br /&gt;
            for k in range(i + 1, j):&lt;br /&gt;
                if v[k] == 1:&lt;br /&gt;
                    ok = False&lt;br /&gt;
            if ok and v[i] == 1 and v[j] == 1:&lt;br /&gt;
                line = [str(i), &amp;quot; &amp;quot;, str(j), &amp;quot;\n&amp;quot;]&lt;br /&gt;
                f.writelines(line)&lt;br /&gt;
                contor += 1&lt;br /&gt;
    if contor == 0:&lt;br /&gt;
        f.write(&amp;quot;nu exista&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def conform_restrictiilor():&lt;br /&gt;
    vector = list()&lt;br /&gt;
    with open(&#039;intervale5.in&#039;) as f:&lt;br /&gt;
        lines = f.readlines()&lt;br /&gt;
        for line in lines:&lt;br /&gt;
            for c in line.split():&lt;br /&gt;
                if c.isdigit() == True:&lt;br /&gt;
                    vector.append(int(c))&lt;br /&gt;
    if len(vector) &amp;gt; 1000000:&lt;br /&gt;
        print(&amp;quot;Datele nu sunt comform restricțiilor impuse.&amp;quot;)&lt;br /&gt;
        exit()&lt;br /&gt;
    for x in vector:&lt;br /&gt;
        if x &amp;lt; 0 or x &amp;gt; 100:&lt;br /&gt;
            print(&amp;quot;Datele nu sunt comform restricțiilor impuse.&amp;quot;)&lt;br /&gt;
            exit()&lt;br /&gt;
    print(&amp;quot;Datele sunt corecte.&amp;quot;)&lt;br /&gt;
    return vector&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    vector = conform_restrictiilor()&lt;br /&gt;
    intervale5(vector)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Explicaţie cod==&lt;br /&gt;
&lt;br /&gt;
Funcția &#039;&#039;&#039;conform_restrictiilor()&#039;&#039;&#039; citește datele din fișierul &#039;&#039;&#039;intervale5.in&#039;&#039;&#039; și verifică dacă acestea sunt în concordanță cu cerințele problemei. Dacă datele nu sunt conforme, se afișează un mesaj corespunzător și se oprește execuția programului. Dacă datele sunt conforme, funcția returnează vectorul de valori citite din fișier.&lt;br /&gt;
&lt;br /&gt;
Funcția &#039;&#039;&#039;intervale5(vector)&#039;&#039;&#039; primește ca parametru vectorul de valori citite din fișier și determină intervalele de lungime minimă 5 care nu conțin alte valori între ele decât cele din vector. Aceste intervale sunt afișate în fișierul &#039;&#039;&#039;intervale5.out&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Pentru a determina aceste intervale, se construiește un vector &#039;&#039;&#039;v&#039;&#039;&#039; în care valoarea &#039;&#039;&#039;1&#039;&#039;&#039; se asociază fiecărei valori din vectorul citit din fișier, iar valoarea &#039;&#039;&#039;0&#039;&#039;&#039; se asociază celorlalte valori. Se caută apoi toate perechile de indici &#039;&#039;&#039;i&#039;&#039;&#039; și &#039;&#039;&#039;j&#039;&#039;&#039;, cu proprietatea că între acești indici nu se găsesc alte valori decât cele din vectorul inițial, iar &#039;&#039;&#039;j-i&#039;&#039;&#039; este cel puțin 4. Pentru a verifica dacă între &#039;&#039;&#039;i&#039;&#039;&#039; și &#039;&#039;&#039;j&#039;&#039;&#039; se găsesc alte valori decât cele din vectorul inițial, se parcurge vectorul &#039;&#039;&#039;v&#039;&#039;&#039; între indicii &#039;&#039;&#039;i&#039;&#039;&#039; și &#039;&#039;&#039;j&#039;&#039;&#039; și se verifică dacă toate valorile sunt zero. Dacă condiția este satisfăcută, intervalul &#039;&#039;&#039;i&#039;&#039;&#039;-&#039;&#039;&#039;j&#039;&#039;&#039; este afișat în fișierul &#039;&#039;&#039;intervale5.out&#039;&#039;&#039;.&lt;/div&gt;</summary>
		<author><name>Csula Beatrice</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=0797_-_SubNumar&amp;diff=5662</id>
		<title>0797 - SubNumar</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=0797_-_SubNumar&amp;diff=5662"/>
		<updated>2023-04-30T13:35:20Z</updated>

		<summary type="html">&lt;p&gt;Csula Beatrice: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Sursa: [https://www.pbinfo.ro/probleme/797/subnumar - SubNumar]&lt;br /&gt;
----&lt;br /&gt;
== Explicatie ==&lt;br /&gt;
Un număr natural &#039;&#039;&#039;x&#039;&#039;&#039;, format din exact două cifre, este numit &#039;&#039;&#039;sub-număr&#039;&#039;&#039; al unui număr natural y dacă cifrele lui x apar, în aceeași ordine, pe ranguri consecutive, în numărul y.&lt;br /&gt;
Exemplu: 21 este sub-număr al lui 12145, al lui 213, al lui 21, dar nu și al lui 123 sau al lui 231.&lt;br /&gt;
== Cerinţa ==&lt;br /&gt;
Fișierul de intrare &#039;&#039;&#039;subnumar.in&#039;&#039;&#039; conține cel mult 1.000.000 de numere naturale. Se cere să se afișeze în fișierul de ieșire &#039;&#039;&#039;subnumar.out&#039;&#039;&#039;, în ordine descrescătoare, sub-numerele care apar de cele mai multe ori în scrierea numerelor date.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Fișierul de intrare &#039;&#039;&#039;subnumar.in&#039;&#039;&#039; conține cel mult &#039;&#039;&#039;1.000.000&#039;&#039;&#039; de numere naturale cu cel puțin &#039;&#039;&#039;2&#039;&#039;&#039; cifre, separate prin câte un spațiu, dispuse pe mai multe linii.&lt;br /&gt;
== Date de ieșire == &lt;br /&gt;
Dacă datele sunt introduse corect, pe ecran se va afișa: &lt;br /&gt;
&amp;quot;Datele sunt corecte.&amp;quot;, iar apoi in fişierul de ieșire &#039;&#039;&#039;subnumar.out&#039;&#039;&#039; va conține pe prima linie valorile cerute, separate prin câte un spațiu. În caz contrar, se va afișa pe ecran: &amp;quot;Datele nu sunt comform restricțiilor impuse.&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Restricţii şi precizări ==&lt;br /&gt;
* numerele din fișierul de intrare vor fi din intervalul &#039;&#039;&#039;[10, 1.000.000.000]&#039;&#039;&#039;&lt;br /&gt;
== Exemple ==&lt;br /&gt;
===Exemplul 1===&lt;br /&gt;
; subnumar.in&lt;br /&gt;
: 393 17775787 72194942 12121774&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele sunt corecte.&lt;br /&gt;
; subnumar.out&lt;br /&gt;
: 77 21&lt;br /&gt;
===Exemplul 2===&lt;br /&gt;
; subnumar.in&lt;br /&gt;
: 14214 1241 1241 421 514 142312&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele sunt corecte.&lt;br /&gt;
; subnumar.out&lt;br /&gt;
: 14&lt;br /&gt;
===Exemplul 3===&lt;br /&gt;
; subnumar.in&lt;br /&gt;
: 9 8 7 1&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele nu sunt comform restricțiilor impuse.&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;
#0797 SubNumar&lt;br /&gt;
&lt;br /&gt;
def subnumar(vector):&lt;br /&gt;
    subnr = [0] * 100&lt;br /&gt;
    for i in range(len(vector)):&lt;br /&gt;
        element = vector[i]&lt;br /&gt;
        while element &amp;gt; 9:&lt;br /&gt;
            subnr[element % 100] += 1&lt;br /&gt;
            element //= 10&lt;br /&gt;
    max = 0&lt;br /&gt;
    f = open(&amp;quot;subnumar.out&amp;quot;, &amp;quot;w&amp;quot;)&lt;br /&gt;
    for i in range(10, 99):&lt;br /&gt;
        element = subnr[i]&lt;br /&gt;
        if element &amp;gt; max:&lt;br /&gt;
            max = element&lt;br /&gt;
    for i in range(99, 9, -1):&lt;br /&gt;
        element = subnr[i]&lt;br /&gt;
        if element == max:&lt;br /&gt;
            f.write(str(i))&lt;br /&gt;
            f.write(&amp;quot; &amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def conform_restrictiilor():&lt;br /&gt;
    vector = list()&lt;br /&gt;
    vector_verificare = [0] * 1000&lt;br /&gt;
    with open(&#039;subnumar.in&#039;) as f:&lt;br /&gt;
        lines = f.readlines()&lt;br /&gt;
        for line in lines:&lt;br /&gt;
            for c in line.split():&lt;br /&gt;
                if c.isdigit() == True:&lt;br /&gt;
                    vector.append(int(c))&lt;br /&gt;
    if len(vector) &amp;gt; 1000000:&lt;br /&gt;
        print(&amp;quot;Datele nu sunt comform restricțiilor impuse.&amp;quot;)&lt;br /&gt;
        exit()&lt;br /&gt;
    for x in vector:&lt;br /&gt;
        if x &amp;lt; 10 or x &amp;gt; 1000000000:&lt;br /&gt;
            print(&amp;quot;Datele nu sunt comform restricțiilor impuse.&amp;quot;)&lt;br /&gt;
            exit()&lt;br /&gt;
    print(&amp;quot;Datele sunt corecte.&amp;quot;)&lt;br /&gt;
    return vector&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    vector = conform_restrictiilor()&lt;br /&gt;
    subnumar(vector)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Explicaţie cod==&lt;br /&gt;
&lt;br /&gt;
In functia &#039;&#039;&#039;conform_restrictiilor()&#039;&#039;&#039; se citesc datele din fisierul de intrare &#039;&#039;&#039;subnumar.in&#039;&#039;&#039;, se verifica daca sunt conform restricțiilor impuse, apoi se returneaza vectorul de numere.&lt;br /&gt;
&lt;br /&gt;
In functia &#039;&#039;&#039;subnumar(vector)&#039;&#039;&#039; se parcurge vectorul de numere, iar pentru fiecare numar se calculeaza subsecventele de doua cifre. Aceste subsecvente se adauga la o lista &#039;&#039;&#039;subnr&#039;&#039;&#039; ce contine numarul de aparitii pentru fiecare subsecventa posibila (10-99). Se cauta apoi cea mai mare valoare din &#039;&#039;&#039;subnr&#039;&#039;&#039;, se afiseaza toate subsecventele care apar de atatea ori si se scriu in fisierul de iesire &#039;&#039;&#039;subnumar.out&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
In cazul in care datele nu sunt conforme, se afiseaza un mesaj de eroare si programul se incheie.&lt;br /&gt;
&lt;br /&gt;
In final, programul afiseaza cele mai frecvente doua cifre din subsecventele de doua cifre din numerele din vector.&lt;/div&gt;</summary>
		<author><name>Csula Beatrice</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=1306_-_SumChef&amp;diff=5661</id>
		<title>1306 - SumChef</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=1306_-_SumChef&amp;diff=5661"/>
		<updated>2023-04-30T13:31:24Z</updated>

		<summary type="html">&lt;p&gt;Csula Beatrice: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Sursa: [https://www.pbinfo.ro/probleme/1306/sumchef - SumChef]&lt;br /&gt;
----&lt;br /&gt;
== Cerinţa ==&lt;br /&gt;
Fiind dat un şir cu &#039;&#039;&#039;numar&#039;&#039;&#039; elemente numere naturale, să se calculeze suma &#039;&#039;&#039;s&#039;&#039;&#039; cuburilor cifrelor tuturor numerelor din şir.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Programul citește de la tastatură numărul &#039;&#039;&#039;numar&#039;&#039;&#039;, iar apoi &#039;&#039;&#039;numar&#039;&#039;&#039; numere naturale, separate prin spaţii, reprezentând elementele vectorului &#039;&#039;&#039;vector&#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;
&amp;quot;Datele sunt corecte.&amp;quot;, iar apoi se afișează pe ecran numărul &#039;&#039;&#039;s&#039;&#039;&#039;, reprezentând suma cuburilor cifrelor tuturor numerelor din şir. În caz contrar, se va afișa pe ecran: &amp;quot;Datele nu sunt comform restricțiilor impuse.&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Restricţii şi precizări ==&lt;br /&gt;
* 1 &amp;amp;les; &#039;&#039;&#039;numar&#039;&#039;&#039; &amp;amp;les; 2.000.000&lt;br /&gt;
* numerele din şir au cel mult 4 cifre&lt;br /&gt;
== Exemple ==&lt;br /&gt;
===Exemplul 1===&lt;br /&gt;
; Intrare&lt;br /&gt;
: 3&lt;br /&gt;
: 24 120 51&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele sunt corecte.&lt;br /&gt;
: 207&lt;br /&gt;
===Exemplul 2===&lt;br /&gt;
; Intrare&lt;br /&gt;
: 10&lt;br /&gt;
: 100 1000 100 20 1 20 30 10 98 99999&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele nu corespund restricțiilor impuse.&lt;br /&gt;
===Exemplul 3===&lt;br /&gt;
; Intrare&lt;br /&gt;
: 5&lt;br /&gt;
: 1 11 111 1111 101&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele sunt corecte.&lt;br /&gt;
: 12&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;
# 1306 SumChef&lt;br /&gt;
&lt;br /&gt;
def numere(vector, numar):&lt;br /&gt;
    suma = 0&lt;br /&gt;
    for i in range(numar):&lt;br /&gt;
        element = vector[i]&lt;br /&gt;
        while element != 0:&lt;br /&gt;
            suma += (element % 10) ** 3&lt;br /&gt;
            element //= 10&lt;br /&gt;
    print(suma)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def conform_restrictiilor(numar, vector):&lt;br /&gt;
    if numar &amp;lt; 1 or numar &amp;gt; 2000000:&lt;br /&gt;
        print(&amp;quot;Datele nu sunt comform restricțiilor impuse.&amp;quot;)&lt;br /&gt;
        return False&lt;br /&gt;
    for x in vector:&lt;br /&gt;
        if x &amp;gt; 9999 or x &amp;lt; 1:&lt;br /&gt;
            print(&amp;quot;Datele nu sunt comform restricțiilor impuse.&amp;quot;)&lt;br /&gt;
            return False&lt;br /&gt;
    print(&amp;quot;Datele sunt corecte.&amp;quot;)&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    numar = int(input())&lt;br /&gt;
    vector = list(map(int, input().split()))&lt;br /&gt;
    if conform_restrictiilor(numar, vector) is True:&lt;br /&gt;
        numere(vector, numar)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Explicaţie cod==&lt;br /&gt;
&lt;br /&gt;
Acest cod are rolul de a calcula suma cuburilor cifrelor fiecarui element dintr-un &#039;&#039;&#039;vector dat&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Funcția &#039;&#039;&#039;numere(vector, numar)&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
Parametrii de intrare: &#039;&#039;&#039;vector&#039;&#039;&#039; este un vector de numere întregi și numar este numărul de elemente din &#039;&#039;&#039;vector&#039;&#039;&#039;.&lt;br /&gt;
Funcționare: Parcurge fiecare element din &#039;&#039;&#039;vector&#039;&#039;&#039; și calculează suma cuburilor cifrelor fiecărui element. Apoi, adaugă această sumă la &#039;&#039;&#039;suma totală&#039;&#039;&#039; și o afișează la final.&lt;br /&gt;
Rezultatul returnat: Funcția nu returnează nicio valoare, ci afișează direct suma cuburilor cifrelor.&lt;br /&gt;
Funcția &#039;&#039;&#039;conform_restrictiilor(numar, vector)&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
Parametrii de intrare: &#039;&#039;&#039;numar&#039;&#039;&#039; este numărul de elemente din &#039;&#039;&#039;vector&#039;&#039;&#039; și &#039;&#039;&#039;vector&#039;&#039;&#039; este vectorul de numere întregi.&lt;br /&gt;
Funcționare: Verifică dacă datele intră în restricțiile impuse în enunț, adică numar trebuie să fie între 1 și 2.000.000 și fiecare element din vector trebuie să fie între 1 și 9999.&lt;br /&gt;
Rezultatul returnat: Dacă datele sunt conforme restricțiilor, funcția afișează &amp;quot;Datele sunt corecte.&amp;quot; și returnează True. În caz contrar, afișează &amp;quot;Datele nu sunt conforme restricțiilor impuse.&amp;quot; și returnează False.&lt;br /&gt;
Blocul principal:&lt;br /&gt;
&lt;br /&gt;
Citim numărul de elemente din &#039;&#039;&#039;vector&#039;&#039;&#039; și apoi vectorul în sine.&lt;br /&gt;
Apelăm funcția &#039;&#039;&#039;conform_restrictiilor&#039;&#039;&#039; pentru a verifica datele.&lt;br /&gt;
Dacă datele sunt corecte, apelăm funcția numere pentru a calcula suma cuburilor cifrelor.&lt;/div&gt;</summary>
		<author><name>Csula Beatrice</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=2669_-_Count5&amp;diff=5660</id>
		<title>2669 - Count5</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=2669_-_Count5&amp;diff=5660"/>
		<updated>2023-04-30T13:27:40Z</updated>

		<summary type="html">&lt;p&gt;Csula Beatrice: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Sursa: [https://www.pbinfo.ro/probleme/2669/count5 - Count5]&lt;br /&gt;
----&lt;br /&gt;
== Cerinţa ==&lt;br /&gt;
Se dă un &#039;&#039;&#039;vector&#039;&#039;&#039; cu &#039;&#039;&#039;numar&#039;&#039;&#039; numere naturale. Să se determine câte dintre perechile de elemente din &#039;&#039;&#039;vector&#039;&#039;&#039; sunt formate din valori cu aceeași sumă a cifrelor.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Programul citește de la tastatură numărul &#039;&#039;&#039;numar&#039;&#039;&#039;, iar apoi &#039;&#039;&#039;numar&#039;&#039;&#039; numere naturale, separate prin spaţii, reprezentând elementele vectorului.&lt;br /&gt;
== Date de ieșire == &lt;br /&gt;
Dacă datele sunt introduse corect, pe ecran se va afișa: &lt;br /&gt;
&amp;quot;Datele sunt corecte.&amp;quot;, iar apoi se afișează pe ecran numărul &#039;&#039;&#039;C&#039;&#039;&#039;, reprezentând valoarea cerută. În caz contrar, se va afișa pe ecran: &amp;quot;Datele nu sunt comform restricțiilor impuse.&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Restricţii şi precizări ==&lt;br /&gt;
* 1 &amp;amp;les; &#039;&#039;&#039;numar&#039;&#039;&#039; &amp;amp;les; 100.000&lt;br /&gt;
* cele &#039;&#039;&#039;numar&#039;&#039;&#039; numere citite vor fi mai mici decât 1.000.000.000&lt;br /&gt;
== Exemple ==&lt;br /&gt;
===Exemplul 1===&lt;br /&gt;
; Intrare&lt;br /&gt;
: 6&lt;br /&gt;
: 51 842 15 28 77 132&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele sunt corecte.&lt;br /&gt;
: 4 &lt;br /&gt;
===Exemplul 2===&lt;br /&gt;
; Intrare&lt;br /&gt;
: 10&lt;br /&gt;
: 100 10000 100 20 1 20 30 10 98 999999999999999&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele nu corespund restricțiilor impuse.&lt;br /&gt;
===Exemplul 3===&lt;br /&gt;
; Intrare&lt;br /&gt;
: 5&lt;br /&gt;
: 1 11 111 1111 11111&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele sunt corecte.&lt;br /&gt;
: 0&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;
#2669 Count5&lt;br /&gt;
&lt;br /&gt;
def numere(vector, numar):&lt;br /&gt;
    suma = list()&lt;br /&gt;
    for i in range(numar):&lt;br /&gt;
        element = vector[i]&lt;br /&gt;
        suma_cifre = 0&lt;br /&gt;
        while element != 0:&lt;br /&gt;
            suma_cifre += element % 10&lt;br /&gt;
            element //= 10&lt;br /&gt;
        suma.append(suma_cifre)&lt;br /&gt;
    C = 0&lt;br /&gt;
    for i in range(numar):&lt;br /&gt;
        for j in range(i + 1, numar):&lt;br /&gt;
            if suma[i] == suma[j]:&lt;br /&gt;
                C += 1&lt;br /&gt;
    print(C)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def conform_restrictiilor(numar, vector):&lt;br /&gt;
    if numar &amp;lt; 1 or numar &amp;gt; 100000:&lt;br /&gt;
        print(&amp;quot;Datele nu sunt comform restricțiilor impuse.&amp;quot;)&lt;br /&gt;
        return False&lt;br /&gt;
    for x in vector:&lt;br /&gt;
        if x &amp;gt; 1000000000 or x &amp;lt; 1:&lt;br /&gt;
            print(&amp;quot;Datele nu sunt comform restricțiilor impuse.&amp;quot;)&lt;br /&gt;
            return False&lt;br /&gt;
    print(&amp;quot;Datele sunt corecte.&amp;quot;)&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    numar = int(input())&lt;br /&gt;
    vector = list(map(int, input().split()))&lt;br /&gt;
    if conform_restrictiilor(numar, vector) is True:&lt;br /&gt;
        numere(vector, numar)&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 cod==&lt;br /&gt;
&lt;br /&gt;
Acest cod are ca scop determinarea numarului de perechi de numere dintr-un vector care au aceeasi suma a cifrelor.&lt;br /&gt;
&lt;br /&gt;
La inceput, functia &#039;&#039;&#039;numere(vector, numar)&#039;&#039;&#039; calculeaza suma cifrelor fiecarui element din &#039;&#039;&#039;vector&#039;&#039;&#039; si salveaza valorile in lista &#039;&#039;&#039;suma&#039;&#039;&#039;. Apoi, se parcurge lista &#039;&#039;&#039;suma&#039;&#039;&#039; si se compara fiecare element cu toate elementele din dreapta sa. Daca doua elemente au aceeasi valoare, se incrementeaza un contor &#039;&#039;&#039;C&#039;&#039;&#039;. La final, functia afiseaza valoarea contorului.&lt;br /&gt;
&lt;br /&gt;
Functia &#039;&#039;&#039;conform_restrictiilor(numar, vector)&#039;&#039;&#039; verifica daca datele de intrare respecta restrictiile impuse. Aceasta verifica daca numarul de elemente din &#039;&#039;&#039;vector&#039;&#039;&#039; este cuprins intre 1 si 100000, si daca fiecare element din &#039;&#039;&#039;vector&#039;&#039;&#039; este cuprins intre 1 si 1000000000. Daca datele sunt in regula, functia returneaza True, altfel returneaza False.&lt;br /&gt;
&lt;br /&gt;
In programul principal, se citeste numarul de elemente din &#039;&#039;&#039;vector&#039;&#039;&#039; si vectorul de la intrare, iar apoi se verifica daca datele respecta restrictiile. Daca datele sunt in regula, se apeleaza functia &#039;&#039;&#039;numere(vector, numar)&#039;&#039;&#039; pentru a calcula numarul de perechi cu aceeasi suma a cifrelor.&lt;/div&gt;</summary>
		<author><name>Csula Beatrice</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=0247_-_CifreOrd1&amp;diff=5659</id>
		<title>0247 - CifreOrd1</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=0247_-_CifreOrd1&amp;diff=5659"/>
		<updated>2023-04-30T13:24:04Z</updated>

		<summary type="html">&lt;p&gt;Csula Beatrice: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Sursa: [https://www.pbinfo.ro/probleme/247/cifreord1 - CifreOrd1]&lt;br /&gt;
----&lt;br /&gt;
== Cerinţa ==&lt;br /&gt;
Se dau mai multe numere naturale, fiecare cu cel mult &#039;&#039;&#039;9&#039;&#039;&#039; cifre. Să se afişeze, în ordine descrescătoare, toate cifrele care apar în numerele date.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Fişierul de intrare &#039;&#039;&#039;cifreord1.in&#039;&#039;&#039; conţine cel mult &#039;&#039;&#039;10.000&#039;&#039;&#039; numere naturale, dispuse pe mai multe linii.&lt;br /&gt;
== Date de ieșire == &lt;br /&gt;
Dacă datele sunt introduse corect, pe ecran se va afișa: &lt;br /&gt;
&amp;quot;Datele sunt corecte.&amp;quot;, iar apoi in fişierul de ieşire &#039;&#039;&#039;cifreord1.out&#039;&#039;&#039; va conţine cifrele determinate, ordonate descrescător, câte &#039;&#039;&#039;20&#039;&#039;&#039; pe o linie, valorile de pe fiecare linie fiind separate prin spaţii. Ultima linie a fişierului poate conţine mai puţin de &#039;&#039;&#039;20&#039;&#039;&#039; de cifre. În caz contrar, se va afișa pe ecran: &amp;quot;Datele nu sunt comform restricțiilor impuse.&amp;quot;.&lt;br /&gt;
== Exemple ==&lt;br /&gt;
===Exemplul 1===&lt;br /&gt;
; cifreord1.in&lt;br /&gt;
: 301941 81912 83392&lt;br /&gt;
: 776996 431446&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele sunt corecte.&lt;br /&gt;
; cifreord1.out&lt;br /&gt;
: 9 9 9 9 9 8 8 7 7 6 6 6 4 4 4 4 3 3 3 3 &lt;br /&gt;
: 2 2 1 1 1 1 1 0 &lt;br /&gt;
===Exemplul 2===&lt;br /&gt;
; nrlipsa.in&lt;br /&gt;
: 100 1001 900&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele sunt corecte.&lt;br /&gt;
; nrlipsa.out&lt;br /&gt;
: 9 1 1 1 0 0 0 0 0 0&lt;br /&gt;
===Exemplul 3===&lt;br /&gt;
; nrlipsa.in&lt;br /&gt;
: 489127491479 4198749127591 100&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele nu sunt comform restricțiilor impuse.&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;
# 0247 CifreOrd1&lt;br /&gt;
&lt;br /&gt;
def numere(vector):&lt;br /&gt;
    vector = str(vector)&lt;br /&gt;
    counter = list()&lt;br /&gt;
    for i in range(10):&lt;br /&gt;
        counter.append([vector.count(str(i))])&lt;br /&gt;
        counter[i].append(i)&lt;br /&gt;
    f = open(&amp;quot;cifreord1.out&amp;quot;, &amp;quot;w&amp;quot;)&lt;br /&gt;
    elemente_pe_linie = 0&lt;br /&gt;
    for i in range(9, -1, -1):&lt;br /&gt;
        numar_repetitie_cifra = int(counter[i][0])&lt;br /&gt;
        for j in range(numar_repetitie_cifra):&lt;br /&gt;
            elemente_pe_linie += 1&lt;br /&gt;
            if elemente_pe_linie % 20 == 0:&lt;br /&gt;
                f.write(&amp;quot;\n&amp;quot;)&lt;br /&gt;
            else:&lt;br /&gt;
                f.write(str(counter[i][1]))&lt;br /&gt;
                f.write(&amp;quot; &amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def conform_restrictiilor():&lt;br /&gt;
    vector = list()&lt;br /&gt;
    with open(&#039;cifreord1.in&#039;) as f:&lt;br /&gt;
        lines = f.readlines()&lt;br /&gt;
        for line in lines:&lt;br /&gt;
            for c in line.split():&lt;br /&gt;
                if c.isdigit() is True:&lt;br /&gt;
                    vector.append(int(c))&lt;br /&gt;
    if len(vector) &amp;gt; 10000:&lt;br /&gt;
        print(&amp;quot;Datele nu sunt comform restricțiilor impuse.&amp;quot;)&lt;br /&gt;
        exit()&lt;br /&gt;
    for x in vector:&lt;br /&gt;
        if x &amp;lt; 0 or x &amp;gt;= 1000000:&lt;br /&gt;
            print(&amp;quot;Datele nu sunt comform restricțiilor impuse.&amp;quot;)&lt;br /&gt;
            exit()&lt;br /&gt;
    print(&amp;quot;Datele sunt corecte.&amp;quot;)&lt;br /&gt;
    return vector&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    vector = conform_restrictiilor()&lt;br /&gt;
    numere(vector)&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 cod==&lt;br /&gt;
&lt;br /&gt;
Funcția &#039;&#039;&#039;conform_restrictiilor()&#039;&#039;&#039; citește datele din fișierul &#039;&#039;&#039;cifreord1.in&#039;&#039;&#039; și verifică dacă acestea respectă restricțiile impuse (numărul de elemente din vector trebuie să fie mai mic sau egal cu 10000 și fiecare element trebuie să fie un număr natural mai mic decât 1000000). Dacă datele sunt valide, funcția returnează &#039;&#039;&#039;vector&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Funcția &#039;&#039;&#039;numere()&#039;&#039;&#039; primește vectorul ca parametru și numără aparițiile fiecărei cifre în &#039;&#039;&#039;vector&#039;&#039;&#039;. Apoi, ordonează cifrele descrescător după numărul lor de apariții și le scrie în fișierul &#039;&#039;&#039;cifreord1.out&#039;&#039;&#039;, cu maximum &#039;&#039;&#039;20&#039;&#039;&#039; de cifre pe linie.&lt;br /&gt;
&lt;br /&gt;
În funcția principală, se apelează cele două funcții pentru a rezolva problema.&lt;/div&gt;</summary>
		<author><name>Csula Beatrice</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=0239_-_NrLipsa&amp;diff=5658</id>
		<title>0239 - NrLipsa</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=0239_-_NrLipsa&amp;diff=5658"/>
		<updated>2023-04-30T13:18:12Z</updated>

		<summary type="html">&lt;p&gt;Csula Beatrice: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Sursa: [https://www.pbinfo.ro/probleme/239/nrlipsa - NrLipsa]&lt;br /&gt;
----&lt;br /&gt;
== Cerinţa ==&lt;br /&gt;
Se dau mai multe numere naturale cu cel mult &#039;&#039;&#039;9&#039;&#039;&#039; cifre fiecare. Să se determine cele mai mari două numere de &#039;&#039;&#039;3&#039;&#039;&#039; cifre care nu se găsesc printre numerele date.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Fişierul de intrare &#039;&#039;&#039;nrlipsa.in&#039;&#039;&#039; conţine cel mult &#039;&#039;&#039;100.000&#039;&#039;&#039; de numere, dispuse pe mai multe linii, numerele de pe fiecare linie fiind separate prin unul sau mai multe spaţii.&lt;br /&gt;
== Date de ieșire == &lt;br /&gt;
Dacă datele sunt introduse corect, pe ecran se va afișa: &lt;br /&gt;
&amp;quot;Datele sunt corecte.&amp;quot;, iar apoi in fişierul de ieşire &#039;&#039;&#039;nrlipsa.out&#039;&#039;&#039; va conţine pe prima linie cele mai mari două numere de trei cifre care nu apar în fişierul de intrare, ordonate descrescător, separate prin exact un spaţiu. În caz contrar, se va afișa pe ecran: &amp;quot;Datele nu sunt comform restricțiilor impuse.&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Restricţii şi precizări ==&lt;br /&gt;
* Dacă nu există două numere de trei cifre care să nu se afle în fişierul de intrare atunci se va afişa mesajul &#039;&#039;&#039;NU&#039;&#039;&#039;.&lt;br /&gt;
== Exemple ==&lt;br /&gt;
===Exemplul 1===&lt;br /&gt;
; nrlipsa.in&lt;br /&gt;
: 12 2345 123 67 989 6 999&lt;br /&gt;
: 123 67 989 999&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele sunt corecte.&lt;br /&gt;
; nrlipsa.out&lt;br /&gt;
: 998 997&lt;br /&gt;
===Exemplul 2===&lt;br /&gt;
; nrlipsa.in&lt;br /&gt;
: 100 101 102 (...) 997 998 999&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele sunt corecte.&lt;br /&gt;
; nrlipsa.out&lt;br /&gt;
: NU&lt;br /&gt;
===Exemplul 3===&lt;br /&gt;
; nrlipsa.in&lt;br /&gt;
: 1 1 1 1 1 1... (de 100001 ori)&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele nu sunt comform restricțiilor impuse.&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;
# 0239 NrLipsa&lt;br /&gt;
&lt;br /&gt;
def nrlipsa(vector_verificare):&lt;br /&gt;
    i = 0;&lt;br /&gt;
    j = 0&lt;br /&gt;
    for k in range(999, 100, -1):&lt;br /&gt;
        if vector_verificare[k] == 0:&lt;br /&gt;
            if i == 0:&lt;br /&gt;
                i = k&lt;br /&gt;
            elif j == 0:&lt;br /&gt;
                j = k&lt;br /&gt;
            else:&lt;br /&gt;
                break&lt;br /&gt;
    f = open(&amp;quot;nrlipsa.out&amp;quot;, &amp;quot;w&amp;quot;)&lt;br /&gt;
    if i != 0 and j != 0:&lt;br /&gt;
        line = [str(i), &amp;quot; &amp;quot;, str(j)]&lt;br /&gt;
        f.writelines(line)&lt;br /&gt;
    else:&lt;br /&gt;
        f.write(&amp;quot;NU&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
def conform_restrictiilor():&lt;br /&gt;
    vector = list()&lt;br /&gt;
    vector_verificare = [0] * 1000&lt;br /&gt;
    with open(&#039;nrlipsa.in&#039;) as f:&lt;br /&gt;
        lines = f.readlines()&lt;br /&gt;
        for line in lines:&lt;br /&gt;
            for c in line.split():&lt;br /&gt;
                if c.isdigit() == True:&lt;br /&gt;
                    vector.append(int(c))&lt;br /&gt;
    if len(vector) &amp;gt; 100000:&lt;br /&gt;
        print(&amp;quot;Datele nu sunt comform restricțiilor impuse.&amp;quot;)&lt;br /&gt;
        exit()&lt;br /&gt;
    for x in vector:&lt;br /&gt;
        if x &amp;lt; 0 or x &amp;gt;= 1000000:&lt;br /&gt;
            print(&amp;quot;Datele nu sunt comform restricțiilor impuse.&amp;quot;)&lt;br /&gt;
            exit()&lt;br /&gt;
        if x &amp;gt;= 100 and x &amp;lt;= 999:&lt;br /&gt;
            vector_verificare[x] = 1&lt;br /&gt;
&lt;br /&gt;
    print(&amp;quot;Datele sunt corecte.&amp;quot;)&lt;br /&gt;
    return vector_verificare&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    vector_verificare = conform_restrictiilor()&lt;br /&gt;
    nrlipsa(vector_verificare)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Explicaţie cod==&lt;br /&gt;
&lt;br /&gt;
Da, acesta este un program care verifică dacă există două numere lipsă între 100 și 999 într-un vector dat și afișează aceste numere într-un fișier de ieșire. &lt;br /&gt;
&lt;br /&gt;
Iată o explicație detaliată a codului:&lt;br /&gt;
&lt;br /&gt;
- Funcția &#039;&#039;&#039;nrlipsa(vector_verificare)&#039;&#039;&#039; primește vectorul verificat de conformitate cu restricțiile și verifică dacă există două numere lipsă între 100 și 999 în vector. &lt;br /&gt;
    - Inițial, variabilele &#039;&#039;&#039;i&#039;&#039;&#039; și &#039;&#039;&#039;j&#039;&#039;&#039; sunt setate la 0. Acestea vor fi folosite pentru a stoca numerele lipsă. &lt;br /&gt;
    - Apoi, un buclă &#039;&#039;&#039;for&#039;&#039;&#039; rulează invers de la 999 la 100 și verifică dacă elementul de pe acea poziție din vectorul verificat este 0. Dacă este așa, înseamnă că acel număr nu există în vectorul dat și trebuie stocat în &#039;&#039;&#039;i&#039;&#039;&#039; sau &#039;&#039;&#039;j&#039;&#039;&#039;.&lt;br /&gt;
    - Dacă două numere lipsă sunt găsite, funcția va scrie aceste numere în fișierul de ieșire. În caz contrar, va scrie &amp;quot;NU&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
- Funcția &#039;&#039;&#039;conform_restrictiilor()&#039;&#039;&#039; citeste datele din fișierul de intrare și verifica daca sunt conforme cu restricțiile impuse. &lt;br /&gt;
    - În primul rând, variabilele &#039;&#039;&#039;vector&#039;&#039;&#039; și &#039;&#039;&#039;vector_verificare&#039;&#039;&#039; sunt inițializate. &#039;&#039;&#039;vector&#039;&#039;&#039; va fi folosit pentru a stoca datele din fișierul de intrare și &#039;&#039;&#039;vector_verificare&#039;&#039;&#039; va fi folosit pentru a verifica daca numerele între 100 și 999 există în vectorul dat.&lt;br /&gt;
    - Apoi, fișierul de intrare este deschis și datele sunt citite și stocate în variabila &#039;&#039;&#039;vector&#039;&#039;&#039;.&lt;br /&gt;
    - Dacă numărul de elemente din &#039;&#039;&#039;vector&#039;&#039;&#039; depășește 100000, funcția va afișa un mesaj de eroare și se va opri.&lt;br /&gt;
    - Pentru fiecare element din &#039;&#039;&#039;vector&#039;&#039;&#039;, funcția verifică dacă acesta este negativ, sau dacă depășește valoarea maximă admisă de 1000000. De asemenea, dacă un element este între 100 și 999, variabila &#039;&#039;&#039;vector_verificare&#039;&#039;&#039; va fi actualizată la poziția respectivă pentru a indica faptul că acel număr există în vectorul dat.&lt;br /&gt;
    - Dacă datele sunt conforme, funcția va returna vectorul &#039;&#039;&#039;vector_verificare&#039;&#039;&#039; pentru a fi folosit de funcția &#039;&#039;&#039;nrlipsa()&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
- În blocul principal, mai întâi se apelează funcția &#039;&#039;&#039;conform_restrictiilor()&#039;&#039;&#039; pentru a verifica datele din fișierul de intrare. Dacă datele sunt conforme, se va apela funcția `nrlipsa()` pentru a căuta două numere lipsă și a le scrie în fișierul de ieșire.&lt;/div&gt;</summary>
		<author><name>Csula Beatrice</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=0529_-_Cifre4&amp;diff=5657</id>
		<title>0529 - Cifre4</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=0529_-_Cifre4&amp;diff=5657"/>
		<updated>2023-04-30T13:12:37Z</updated>

		<summary type="html">&lt;p&gt;Csula Beatrice: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Sursa: [https://www.pbinfo.ro/probleme/529/cifre4 - Cifre4]&lt;br /&gt;
----&lt;br /&gt;
== Cerinţa ==&lt;br /&gt;
Se dau &#039;&#039;&#039;numar&#039;&#039;&#039; numere naturale. Afișați cifrele care apar în scrierea zecimală a acestor numere, în ordinea crescătoare a numărului de apariții. Dacă două cifre au același număr de apariții, se va afișa mai întâi cifra mai mică,&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Programul citește de la tastatură numărul &#039;&#039;&#039;numar&#039;&#039;&#039;, iar apoi &#039;&#039;&#039;numar&#039;&#039;&#039; numere naturale.&lt;br /&gt;
== Date de ieșire == &lt;br /&gt;
Dacă datele sunt introduse corect, pe ecran se va afișa: &lt;br /&gt;
&amp;quot;Datele sunt corecte.&amp;quot;, iar apoi se va afișa pe ecran numărul cifrele care apar în scrierea zecimală a numerelor citite, în ordinea cerută, separate prin exact un spațiu. În caz contrar, se va afișa pe ecran: &amp;quot;Datele nu sunt comform restricțiilor impuse.&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Restricţii şi precizări ==&lt;br /&gt;
* 1 &amp;amp;les; &#039;&#039;&#039;numar&#039;&#039;&#039; &amp;amp;les; 1000&lt;br /&gt;
* cele &#039;&#039;&#039;numar&#039;&#039;&#039; numere citite vor fi mai mici decât 1.000.000.000&lt;br /&gt;
== Exemple ==&lt;br /&gt;
===Exemplul 1===&lt;br /&gt;
; Intrare&lt;br /&gt;
: 5&lt;br /&gt;
: 124 229 1322 4 534&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele sunt corecte.&lt;br /&gt;
: 5 9 1 3 4 2 &lt;br /&gt;
===Exemplul 2===&lt;br /&gt;
; Intrare&lt;br /&gt;
: 4&lt;br /&gt;
: 1000001 214141251521 20 20&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele nu corespund restricțiilor impuse.&lt;br /&gt;
===Exemplul 3===&lt;br /&gt;
; Intrare&lt;br /&gt;
: 5&lt;br /&gt;
: 11 12 13 14 15&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele sunt corecte.&lt;br /&gt;
: 2 3 4 5 1&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;
# 0529 Cifre4&lt;br /&gt;
&lt;br /&gt;
def numere(vector, numar):&lt;br /&gt;
    vector = str(vector)&lt;br /&gt;
    counter = list()&lt;br /&gt;
    for i in range(10):&lt;br /&gt;
        counter.append([vector.count(str(i))])&lt;br /&gt;
        counter[i].append(i)&lt;br /&gt;
    counter.sort()&lt;br /&gt;
    for i in range(10):&lt;br /&gt;
        if counter[i][0] &amp;gt; 0:&lt;br /&gt;
            print(counter[i][1], end=&amp;quot; &amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def conform_restrictiilor(numar, vector):&lt;br /&gt;
    if numar &amp;lt; 1 or numar &amp;gt; 1000:&lt;br /&gt;
        print(&amp;quot;Datele nu sunt comform restricțiilor impuse.&amp;quot;)&lt;br /&gt;
        return False&lt;br /&gt;
    for x in vector:&lt;br /&gt;
        if x &amp;gt; 100000000 or x &amp;lt; 1:&lt;br /&gt;
            print(&amp;quot;Datele nu sunt comform restricțiilor impuse.&amp;quot;)&lt;br /&gt;
            return False&lt;br /&gt;
    print(&amp;quot;Datele sunt corecte.&amp;quot;)&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    numar = int(input())&lt;br /&gt;
    vector = list(map(int, input().split()))&lt;br /&gt;
    if conform_restrictiilor(numar, vector) is True:&lt;br /&gt;
        numere(vector, numar)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Explicaţie cod==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Acest cod primește ca input un număr și un vector de numere întregi. Scopul codului este de a număra câte apariții are fiecare cifră în numerele din vector și de a le afișa în ordine crescătoare a numărului de apariții.&lt;br /&gt;
&lt;br /&gt;
Funcția &#039;&#039;&#039;numere(vector, numar)&#039;&#039;&#039; primește două argumente: &#039;&#039;&#039;vector&#039;&#039;&#039; - vectorul de numere întregi și &#039;&#039;&#039;numar&#039;&#039;&#039; - numărul de elemente din vector. Ea transformă vectorul într-un șir de caractere și apoi numără câte apariții are fiecare cifră. Pentru aceasta, se parcurg cifrele de la 0 la 9 și se numără câte apariții are fiecare cifră în șirul de caractere. Aceste valori sunt adăugate într-o listă &#039;&#039;&#039;counter&#039;&#039;&#039;, împreună cu cifra corespunzătoare. Lista este sortată în ordine crescătoare a numărului de apariții și apoi se afișează cifrele în ordine crescătoare a numărului de apariții.&lt;br /&gt;
&lt;br /&gt;
Funcția &#039;&#039;&#039;conform_restrictiilor(numar, vector)&#039;&#039;&#039; primește două argumente: &#039;&#039;&#039;numar&#039;&#039;&#039; - numărul de elemente din &#039;&#039;&#039;vector&#039;&#039;&#039; și &#039;&#039;&#039;vector&#039;&#039;&#039; - vectorul de numere întregi. Aceasta verifică dacă valorile primite sunt conforme cu restricțiile impuse. Restricțiile impuse sunt următoarele: numărul de elemente din &#039;&#039;&#039;vector&#039;&#039;&#039; trebuie să fie între 1 și 1000, iar fiecare element din vector trebuie să fie între 1 și 100000000. Dacă datele nu sunt conforme, se afișează un mesaj de eroare și se returnează False. În caz contrar, se afișează un mesaj de confirmare și se returnează True.&lt;br /&gt;
&lt;br /&gt;
În funcția principală &#039;&#039;&#039;if __name__ == &#039;__main__&#039;:&#039;&#039;&#039;, se citește numărul numar și vectorul vector din input. Se verifică dacă datele sunt conforme cu restricțiile impuse folosind funcția conform_restrictiilor. Dacă datele sunt conforme, se calculează și se afișează numărul de apariții ale fiecărei cifre în numerele din vector folosind funcția &#039;&#039;&#039;numere&#039;&#039;&#039;.&lt;/div&gt;</summary>
		<author><name>Csula Beatrice</name></author>
	</entry>
</feed>