<?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=1878_-_Nr_Asoc</id>
	<title>1878 - Nr Asoc - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.universitas.ro/index.php?action=history&amp;feed=atom&amp;title=1878_-_Nr_Asoc"/>
	<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=1878_-_Nr_Asoc&amp;action=history"/>
	<updated>2026-05-02T12:42:10Z</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=1878_-_Nr_Asoc&amp;diff=3974&amp;oldid=prev</id>
		<title>MiclausIoana: Pagină nouă: Sursă: [https://www.pbinfo.ro/probleme/1878/nrasoc] == Cerinţa == Se consideră un șir ai cărui termeni sunt numere naturale nenule, de o singură cifră. Numim &#039;&#039;&#039;număr asociat&#039;&#039;&#039; al acestui șir un număr natural format cu termenii șirului, în ordinea în care aceștia apar în șir. Se cere determinarea unui șir obținut prin eliminarea a doi termeni situați pe poziții consecutive în șirului dat, astfel încât numărul asociat șirului obținut să fie maxim....</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=1878_-_Nr_Asoc&amp;diff=3974&amp;oldid=prev"/>
		<updated>2023-04-22T08:05:47Z</updated>

		<summary type="html">&lt;p&gt;Pagină nouă: Sursă: [https://www.pbinfo.ro/probleme/1878/nrasoc] == Cerinţa == Se consideră un șir ai cărui termeni sunt numere naturale nenule, de o singură cifră. Numim &amp;#039;&amp;#039;&amp;#039;număr asociat&amp;#039;&amp;#039;&amp;#039; al acestui șir un număr natural format cu termenii șirului, în ordinea în care aceștia apar în șir. Se cere determinarea unui șir obținut prin eliminarea a doi termeni situați pe poziții consecutive în șirului dat, astfel încât numărul asociat șirului obținut să fie maxim....&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Sursă: [https://www.pbinfo.ro/probleme/1878/nrasoc]&lt;br /&gt;
== Cerinţa ==&lt;br /&gt;
Se consideră un șir ai cărui termeni sunt numere naturale nenule, de o singură cifră. Numim &amp;#039;&amp;#039;&amp;#039;număr asociat&amp;#039;&amp;#039;&amp;#039; al acestui șir un număr natural format cu termenii șirului, în ordinea în care aceștia apar în șir.&lt;br /&gt;
Se cere determinarea unui șir obținut prin eliminarea a doi termeni situați pe poziții consecutive în șirului dat, astfel încât numărul asociat șirului obținut să fie maxim.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Fișierul de intrare &amp;#039;&amp;#039;&amp;#039;nrasoc.in&amp;#039;&amp;#039;&amp;#039; conține pe prima linie o succesiune de cifre, separate prin câte un spațiu, reprezentând termenii șirului dat.&lt;br /&gt;
== Date de ieșire ==&lt;br /&gt;
Dacă datele sunt introduse corect, pe ecran se va afișa: &amp;quot;Datele sunt corecte.&amp;quot;. Fișierul de ieșire &amp;#039;&amp;#039;&amp;#039;nrasoc.out&amp;#039;&amp;#039;&amp;#039; va conține pe prima linie un șir de cifre, separate prin câte un spațiu, reprezentând șirul corespunzător numărului asociat maxim. În caz contrar, se va afișa pe ecran: &amp;quot;Datele nu sunt comform restricțiilor impuse.&amp;quot;. &lt;br /&gt;
== Restricții și precizări ==&lt;br /&gt;
* fișierul de intrare conține cel mult &amp;#039;&amp;#039;&amp;#039;80&amp;#039;&amp;#039;&amp;#039; de cifre.&lt;br /&gt;
== Exemple ==&lt;br /&gt;
=== Exemplu 1 ===&lt;br /&gt;
; &amp;#039;&amp;#039;&amp;#039;nrasoc.in&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
: 9 8 5 7 6 2 3 4&lt;br /&gt;
; &amp;#039;&amp;#039;&amp;#039;nrasoc.out&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
: 9 8 6 2 3 4&lt;br /&gt;
==== Explicatie ====&lt;br /&gt;
Numerele asociate șirurilor care se pot obține sunt &amp;#039;&amp;#039;&amp;#039;576234&amp;#039;&amp;#039;&amp;#039;, &amp;#039;&amp;#039;&amp;#039;976234&amp;#039;&amp;#039;&amp;#039;, &amp;#039;&amp;#039;&amp;#039;986234&amp;#039;&amp;#039;&amp;#039;, &amp;#039;&amp;#039;&amp;#039;2985234&amp;#039;&amp;#039;&amp;#039;, &amp;#039;&amp;#039;&amp;#039;985734&amp;#039;&amp;#039;&amp;#039;, &amp;#039;&amp;#039;&amp;#039;985764&amp;#039;&amp;#039;&amp;#039;, &amp;#039;&amp;#039;&amp;#039;985762&amp;#039;&amp;#039;&amp;#039;. Fișierul de ieșire va conține:&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;9 8 6 2 3 4&amp;#039;&amp;#039;&amp;#039;&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;
def citeste_șir():&lt;br /&gt;
    while True:&lt;br /&gt;
        try:&lt;br /&gt;
            with open(&amp;#039;nrasoc.in&amp;#039;) as fin:&lt;br /&gt;
                a = [int(x) for x in fin.read().split()]&lt;br /&gt;
                if len(a) &amp;lt;= 80:&lt;br /&gt;
                    print(&amp;quot;Datele sunt corecte.&amp;quot;)&lt;br /&gt;
                    return a&lt;br /&gt;
                else:&lt;br /&gt;
                    print(&amp;quot;Datele nu sunt conform restricțiilor impuse.&amp;quot;)&lt;br /&gt;
        except ValueError:&lt;br /&gt;
            print(&amp;quot;Trebuie introduse doar numere întregi.&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
def nrasoc():&lt;br /&gt;
    a = citeste_șir()&lt;br /&gt;
    n = len(a)&lt;br /&gt;
    max_numar = -1&lt;br /&gt;
    for i in range(1, n - 1):&lt;br /&gt;
        numar = int(str(a[i - 1]) + str(a[i + 1]))&lt;br /&gt;
        if numar &amp;gt; max_numar:&lt;br /&gt;
            max_numar = numar&lt;br /&gt;
            poz = i&lt;br /&gt;
    rezultat = [str(x) for i, x in enumerate(a) if i != poz and i != poz + 1]&lt;br /&gt;
    with open(&amp;#039;nrasoc.out&amp;#039;, &amp;#039;w&amp;#039;) as fout:&lt;br /&gt;
        fout.write(&amp;#039; &amp;#039;.join(rezultat))&lt;br /&gt;
&lt;br /&gt;
if _name_ == &amp;#039;_main_&amp;#039;:&lt;br /&gt;
    nrasoc()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Explicații ==&lt;br /&gt;
 Acest cod este o implementare în Python a problemei &amp;quot;Numărul asociat&amp;quot; (nrasoc). În esență, problema cere să se elimine două elemente consecutive dintr-un șir de cifre, astfel încât numărul format din restul cifrelor să fie maxim.&lt;br /&gt;
&lt;br /&gt;
 În primul rând, există două funcții definite în cod: citeste_k() și nrasoc().&lt;br /&gt;
&lt;br /&gt;
 Funcția citeste_k() este utilizată pentru a citi valoarea cifrei k din consolă și pentru a verifica dacă aceasta respectă restricțiile impuse (să fie între 0 și 9). Funcția returnează k doar dacă acesta este valid.&lt;br /&gt;
&lt;br /&gt;
 Funcția nrasoc() este funcția principală a programului și se ocupă de citirea datelor din fișierul de intrare (nrasoc.in), prelucrarea lor și scrierea rezultatelor în fișierul de ieșire (nrasoc.out).&lt;br /&gt;
&lt;br /&gt;
 În interiorul acestei funcții, se deschid fișierele de intrare și de ieșire utilizând o clauză with, ceea ce înseamnă că acestea vor fi automat închise la finalul blocului de cod. Datele din fișierul de intrare sunt citite și stocate într-un array numit a.&lt;br /&gt;
&lt;br /&gt;
 Apoi, se aplică algoritmul descris în enunț pentru a găsi șirul corespunzător numărului asociat maxim. Se parcurge șirul de la primul element până la penultimul și se calculează două numere p și q format din câte două cifre, începând de la elementul curent și următorul. Dacă p este mai mic decât q și acesta este primul astfel de caz întâlnit, se trece peste elementul următor și se memorează acest lucru în variabila cnt. În caz contrar, elementul curent este scris în fișierul de ieșire.&lt;br /&gt;
&lt;br /&gt;
 La final, se verifică dacă s-a ajuns la ultimele două elemente din șir (penultimul și ultimul). Dacă da și cnt este încă 0, atunci se scrie ultimul element în fișierul de ieșire.&lt;br /&gt;
&lt;br /&gt;
 În main, se apelează cele două funcții pentru a rezolva problema.&lt;br /&gt;
&lt;br /&gt;
 În general, acest cod respectă bunele practici de programare, cum ar fi folosirea de variabile cu denumiri sugestive, comentarea codului acolo unde este necesar, respectarea indentării și utilizarea unor funcții separate pentru a împărți sarcinile în codul mai mic.&lt;/div&gt;</summary>
		<author><name>MiclausIoana</name></author>
	</entry>
</feed>