<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.universitas.ro/index.php?action=history&amp;feed=atom&amp;title=2812_-_Progresie3</id>
	<title>2812 - Progresie3 - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.universitas.ro/index.php?action=history&amp;feed=atom&amp;title=2812_-_Progresie3"/>
	<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=2812_-_Progresie3&amp;action=history"/>
	<updated>2026-05-01T06:31:18Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.42.1</generator>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=2812_-_Progresie3&amp;diff=5669&amp;oldid=prev</id>
		<title>Csula Beatrice at 13:54, 30 April 2023</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=2812_-_Progresie3&amp;diff=5669&amp;oldid=prev"/>
		<updated>2023-04-30T13:54:17Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 13:54, 30 April 2023&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l83&quot;&gt;Line 83:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 83:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;==Explicaţie cod==&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&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;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&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;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&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;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&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;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Csula Beatrice</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=2812_-_Progresie3&amp;diff=1819&amp;oldid=prev</id>
		<title>Csula Beatrice: Pagină nouă: Sursa: [https://www.pbinfo.ro/probleme/2812/progresie3 - Progresie3] ---- == Cerinţa == 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.  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...</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=2812_-_Progresie3&amp;diff=1819&amp;oldid=prev"/>
		<updated>2023-03-26T14:11:51Z</updated>

		<summary type="html">&lt;p&gt;Pagină nouă: Sursa: [https://www.pbinfo.ro/probleme/2812/progresie3 - Progresie3] ---- == Cerinţa == Un șir de numere este o &amp;#039;&amp;#039;&amp;#039;progresie aritmetică de rație r&amp;#039;&amp;#039;&amp;#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. &amp;#039;&amp;#039;&amp;#039;Exemplu&amp;#039;&amp;#039;&amp;#039;: șirul 12, 14, 16, 18, 20 este o progresie de rație 2.  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...&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&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 &amp;#039;&amp;#039;&amp;#039;progresie aritmetică de rație r&amp;#039;&amp;#039;&amp;#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. &amp;#039;&amp;#039;&amp;#039;Exemplu&amp;#039;&amp;#039;&amp;#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 &amp;#039;&amp;#039;&amp;#039;r&amp;#039;&amp;#039;&amp;#039;, astfel încât toate numerele distincte din șir să poată fi rearanjate, pentru a forma o progresie aritmetică de rație &amp;#039;&amp;#039;&amp;#039;r&amp;#039;&amp;#039;&amp;#039;. Se afișează numărul &amp;#039;&amp;#039;&amp;#039;r&amp;#039;&amp;#039;&amp;#039;, sau mesajul &amp;#039;&amp;#039;&amp;#039;NU&amp;#039;&amp;#039;&amp;#039;, dacă nu există un astfel de număr.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Fișierul de intrare &amp;#039;&amp;#039;&amp;#039;progresie3.in&amp;#039;&amp;#039;&amp;#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 &amp;#039;&amp;#039;&amp;#039;progresie3.out&amp;#039;&amp;#039;&amp;#039; va conține pe prima linie numărul &amp;#039;&amp;#039;&amp;#039;r&amp;#039;&amp;#039;&amp;#039;, sau mesajul &amp;#039;&amp;#039;&amp;#039;NU&amp;#039;&amp;#039;&amp;#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(&amp;#039;progresie3.in&amp;#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__ == &amp;#039;__main__&amp;#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;/div&gt;</summary>
		<author><name>Csula Beatrice</name></author>
	</entry>
</feed>