<?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=1730_-_S_Stabil</id>
	<title>1730 - S Stabil - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.universitas.ro/index.php?action=history&amp;feed=atom&amp;title=1730_-_S_Stabil"/>
	<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=1730_-_S_Stabil&amp;action=history"/>
	<updated>2026-05-02T11:45:54Z</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=1730_-_S_Stabil&amp;diff=9025&amp;oldid=prev</id>
		<title>Corjuc Eunice: Pagină nouă: Numim număr sstabil orice număr natural care este format dintr-o singură cifră sau care are suma oricăror două cifre vecine strict mai mare decât nouă.  Asupra oricărui număr care nu este sstabil se pot efectua operaţii de înlocuire a oricăror două cifre vecine care au suma strict mai mică decât zece cu o cifră egală cu suma lor.  Operaţiile de înlocuire pot fi aplicate, în acelaşi condiţii, şi asupra numerelor rezultate după fiecare înlocuire, de c...</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=1730_-_S_Stabil&amp;diff=9025&amp;oldid=prev"/>
		<updated>2024-01-04T21:18:58Z</updated>

		<summary type="html">&lt;p&gt;Pagină nouă: Numim număr sstabil orice număr natural care este format dintr-o singură cifră sau care are suma oricăror două cifre vecine strict mai mare decât nouă.  Asupra oricărui număr care nu este sstabil se pot efectua operaţii de înlocuire a oricăror două cifre vecine care au suma strict mai mică decât zece cu o cifră egală cu suma lor.  Operaţiile de înlocuire pot fi aplicate, în acelaşi condiţii, şi asupra numerelor rezultate după fiecare înlocuire, de c...&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Numim număr sstabil orice număr natural care este format dintr-o singură cifră sau care are suma oricăror două cifre vecine strict mai mare decât nouă.&lt;br /&gt;
&lt;br /&gt;
Asupra oricărui număr care nu este sstabil se pot efectua operaţii de înlocuire a oricăror două cifre vecine care au suma strict mai mică decât zece cu o cifră egală cu suma lor.&lt;br /&gt;
&lt;br /&gt;
Operaţiile de înlocuire pot fi aplicate, în acelaşi condiţii, şi asupra numerelor rezultate după fiecare înlocuire, de câte ori este nevoie, până când se obţine un număr sstabil.&lt;br /&gt;
&lt;br /&gt;
De exemplu, &amp;lt;code&amp;gt;291&amp;lt;/code&amp;gt; este număr sstabil deoarece &amp;lt;code&amp;gt;2+9&amp;gt;9&amp;lt;/code&amp;gt; şi &amp;lt;code&amp;gt;9+1&amp;gt;9&amp;lt;/code&amp;gt;, iar &amp;lt;code&amp;gt;183&amp;lt;/code&amp;gt; nu este sstabil pentru că &amp;lt;code&amp;gt;1+8&amp;lt;10&amp;lt;/code&amp;gt;. Din numărul &amp;lt;code&amp;gt;2453&amp;lt;/code&amp;gt;, efectuând o singură înlocuire, putem obţine &amp;lt;code&amp;gt;653&amp;lt;/code&amp;gt; sau &amp;lt;code&amp;gt;293&amp;lt;/code&amp;gt; (număr sstabil) sau &amp;lt;code&amp;gt;248&amp;lt;/code&amp;gt;. Numărul &amp;lt;code&amp;gt;653&amp;lt;/code&amp;gt;, nefiind sstabil, permite o nouă operaţie de înlocuire, obţinând astfel numărul &amp;lt;code&amp;gt;68&amp;lt;/code&amp;gt;, care este sstabil. Analog, din numărul &amp;lt;code&amp;gt;248&amp;lt;/code&amp;gt; se poate obţine numărul sstabil &amp;lt;code&amp;gt;68&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= Cerința =&lt;br /&gt;
Scrieţi un program care să determine cel mai mare număr natural sstabil care se poate obţine dintr-un număr natural dat, aplicând una sau mai multe operaţii de înlocuire de tipul menţionat.&lt;br /&gt;
&lt;br /&gt;
= Date de intrare =&lt;br /&gt;
Fişierul de intrare &amp;lt;code&amp;gt;input.txt&amp;lt;/code&amp;gt; conţine pe prima linie un număr natural &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;, reprezentând numărul de cifre al numărului dat, iar pe linia a doua, separate prin câte un spaţiu, cifrele acestui număr.&lt;br /&gt;
&lt;br /&gt;
= Date de ieșire =&lt;br /&gt;
Fişierul de ieşire &amp;lt;code&amp;gt;output.txt&amp;lt;/code&amp;gt; va conţine pe o linie numărul sstabil maxim obţinut.&lt;br /&gt;
&lt;br /&gt;
= Restricții și precizări =&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;1 ≤ n ≤ 1000000&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
input.txt:&lt;br /&gt;
&lt;br /&gt;
5&lt;br /&gt;
&lt;br /&gt;
1 0 4 5 1&lt;br /&gt;
&lt;br /&gt;
output.txt:&lt;br /&gt;
&lt;br /&gt;
191&lt;br /&gt;
&lt;br /&gt;
Explicație:&lt;br /&gt;
&lt;br /&gt;
10451 → 1091 → 191.&lt;br /&gt;
&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
input.txt:&lt;br /&gt;
&lt;br /&gt;
5&lt;br /&gt;
&lt;br /&gt;
5 2 8 3 2&lt;br /&gt;
&lt;br /&gt;
output.txt:&lt;br /&gt;
&lt;br /&gt;
785&lt;br /&gt;
&lt;br /&gt;
Explicație:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;52832 → 7832 → 785&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Exemplul 3 ==&lt;br /&gt;
input.txt:&lt;br /&gt;
&lt;br /&gt;
9999999999999&lt;br /&gt;
&lt;br /&gt;
1 2 3 4 5&lt;br /&gt;
&lt;br /&gt;
Output:&lt;br /&gt;
&lt;br /&gt;
Constrangeri neindeplinite&lt;br /&gt;
&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python3&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
def ver(n):&lt;br /&gt;
    if not(1&amp;lt;=n&amp;lt;=1000000):&lt;br /&gt;
        print(&amp;quot;Constrangeri neindeplinite&amp;quot;)&lt;br /&gt;
        exit()&lt;br /&gt;
&lt;br /&gt;
with open(&amp;quot;input.txt&amp;quot;, &amp;quot;r&amp;quot;) as input_file, open(&amp;quot;output.txt&amp;quot;, &amp;quot;w&amp;quot;) as output_file:&lt;br /&gt;
    n = int(input_file.readline())&lt;br /&gt;
    ver(n)&lt;br /&gt;
    a = list(map(int, input_file.readline().split()))&lt;br /&gt;
    b = [0] * 1000005&lt;br /&gt;
&lt;br /&gt;
    k = 0&lt;br /&gt;
    r = n&lt;br /&gt;
&lt;br /&gt;
    while r &amp;gt; 0:&lt;br /&gt;
        j = r&lt;br /&gt;
        s = 0&lt;br /&gt;
&lt;br /&gt;
        while j &amp;gt; 0 and s &amp;lt; 10:&lt;br /&gt;
            s += a[j - 1]&lt;br /&gt;
            j -= 1&lt;br /&gt;
&lt;br /&gt;
        k += 1&lt;br /&gt;
&lt;br /&gt;
        if s &amp;lt; 10:&lt;br /&gt;
            b[k] = s&lt;br /&gt;
            r = j&lt;br /&gt;
        else:&lt;br /&gt;
            if k == 1:&lt;br /&gt;
                p = r&lt;br /&gt;
                t = a[p - 1]&lt;br /&gt;
&lt;br /&gt;
                while s - t &amp;gt;= 10:&lt;br /&gt;
                    p -= 1&lt;br /&gt;
                    t += a[p - 1]&lt;br /&gt;
&lt;br /&gt;
                b[k] = t&lt;br /&gt;
                r = p - 1&lt;br /&gt;
            else:&lt;br /&gt;
                p = r&lt;br /&gt;
                t = a[p - 1]&lt;br /&gt;
&lt;br /&gt;
                while s - t &amp;gt; 9 or t + b[k - 1] &amp;lt; 10:&lt;br /&gt;
                    p -= 1&lt;br /&gt;
                    t += a[p - 1]&lt;br /&gt;
&lt;br /&gt;
                b[k] = t&lt;br /&gt;
                r = p - 1&lt;br /&gt;
&lt;br /&gt;
    for i in range(k, 0, -1):&lt;br /&gt;
        print(b[i], end=&amp;quot;&amp;quot;, file=output_file)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Corjuc Eunice</name></author>
	</entry>
</feed>