<?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=2179_-_Max_3</id>
	<title>2179 - Max 3 - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.universitas.ro/index.php?action=history&amp;feed=atom&amp;title=2179_-_Max_3"/>
	<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=2179_-_Max_3&amp;action=history"/>
	<updated>2026-05-01T04:37:44Z</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=2179_-_Max_3&amp;diff=9016&amp;oldid=prev</id>
		<title>Corjuc Eunice: Pagină nouă: Fie &lt;code&gt;n&lt;/code&gt; un număr natural nenul şi un şir de &lt;code&gt;n&lt;/code&gt; numere naturale nenule, fiecare număr din şir având cel mult &lt;code&gt;3&lt;/code&gt; cifre. Şirul dat se &lt;code&gt;„maximizează”&lt;/code&gt; prin aplicarea următoarelor transformări:  T1: Fiecare număr &lt;code&gt;y&lt;/code&gt; din şir este înlocuit cu cel mai mare număr care se poate obţine prin aranjarea tuturor cifrelor lui &lt;code&gt;y&lt;/code&gt;. De exemplu, pentru &lt;code&gt;y=102&lt;/code&gt;, prin aranjarea cifrelor, se obţin n...</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=2179_-_Max_3&amp;diff=9016&amp;oldid=prev"/>
		<updated>2024-01-04T20:28:11Z</updated>

		<summary type="html">&lt;p&gt;Pagină nouă: Fie &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; un număr natural nenul şi un şir de &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; numere naturale nenule, fiecare număr din şir având cel mult &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt; cifre. Şirul dat se &amp;lt;code&amp;gt;„maximizează”&amp;lt;/code&amp;gt; prin aplicarea următoarelor transformări:  T1: Fiecare număr &amp;lt;code&amp;gt;y&amp;lt;/code&amp;gt; din şir este înlocuit cu cel mai mare număr care se poate obţine prin aranjarea tuturor cifrelor lui &amp;lt;code&amp;gt;y&amp;lt;/code&amp;gt;. De exemplu, pentru &amp;lt;code&amp;gt;y=102&amp;lt;/code&amp;gt;, prin aranjarea cifrelor, se obţin n...&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Fie &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; un număr natural nenul şi un şir de &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; numere naturale nenule, fiecare număr din şir având cel mult &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt; cifre. Şirul dat se &amp;lt;code&amp;gt;„maximizează”&amp;lt;/code&amp;gt; prin aplicarea următoarelor transformări:&lt;br /&gt;
&lt;br /&gt;
T1: Fiecare număr &amp;lt;code&amp;gt;y&amp;lt;/code&amp;gt; din şir este înlocuit cu cel mai mare număr care se poate obţine prin aranjarea tuturor cifrelor lui &amp;lt;code&amp;gt;y&amp;lt;/code&amp;gt;. De exemplu, pentru &amp;lt;code&amp;gt;y=102&amp;lt;/code&amp;gt;, prin aranjarea cifrelor, se obţin numerele: &amp;lt;code&amp;gt;12, 21, 102, 120, 201, 210,&amp;lt;/code&amp;gt; cel mai mare număr fiind &amp;lt;code&amp;gt;210&amp;lt;/code&amp;gt;. Astfel, &amp;lt;code&amp;gt;y&amp;lt;/code&amp;gt; se va înlocui în şir cu numărul &amp;lt;code&amp;gt;210&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
T2: Se schimbă ordinea numerelor din şirul obţinut după aplicarea transformării &amp;lt;code&amp;gt;T1&amp;lt;/code&amp;gt; astfel încât numărul &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; obţinut prin alipirea tuturor numerelor din şir, în ordinea în care apar după schimbare, să fie cel mai mare posibil.&lt;br /&gt;
&lt;br /&gt;
De exemplu,pentru &amp;lt;code&amp;gt;n=3&amp;lt;/code&amp;gt; şi şirul: &amp;lt;code&amp;gt;12, 132, 102,&amp;lt;/code&amp;gt;după aplicarea transformării &amp;lt;code&amp;gt;T1&amp;lt;/code&amp;gt; noul şir este format din numerele: &amp;lt;code&amp;gt;21, 321, 210&amp;lt;/code&amp;gt;. Din acest şir, se pot obţine, prin schimbarea ordinii numerelor, următoarele &amp;lt;code&amp;gt;6&amp;lt;/code&amp;gt; şiruri:&lt;br /&gt;
&lt;br /&gt;
1) &amp;lt;code&amp;gt;21, 321, 210&amp;lt;/code&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
2) &amp;lt;code&amp;gt;21, 210, 321&amp;lt;/code&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
3) &amp;lt;code&amp;gt;321, 21, 210&amp;lt;/code&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
4) &amp;lt;code&amp;gt;321, 210, 21&amp;lt;/code&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
5) &amp;lt;code&amp;gt;210, 21, 321&amp;lt;/code&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
6) &amp;lt;code&amp;gt;210, 321, 21&amp;lt;/code&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
Numerele care rezultă prin alipirea numerelor din fiecare şir obţinut sunt:&lt;br /&gt;
&lt;br /&gt;
1) &amp;lt;code&amp;gt;21321210&amp;lt;/code&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
2) &amp;lt;code&amp;gt;21210321&amp;lt;/code&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
3) &amp;lt;code&amp;gt;32121210&amp;lt;/code&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
4) &amp;lt;code&amp;gt;32121021&amp;lt;/code&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
5) &amp;lt;code&amp;gt;21021321&amp;lt;/code&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
6) &amp;lt;code&amp;gt;21032121&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
După aplicarea transformării &amp;lt;code&amp;gt;T2&amp;lt;/code&amp;gt;, şirul „maximizat” este: &amp;lt;code&amp;gt;321, 21, 210&amp;lt;/code&amp;gt; deoarece cel mai mare număr dintre cele &amp;lt;code&amp;gt;6&amp;lt;/code&amp;gt; obţinute este &amp;lt;code&amp;gt;x=32121210&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= Cerința =&lt;br /&gt;
Scrieţi un program care să citească numărul natural nenul &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; şi cele &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; numere naturale nenule din şir şi care să determine:&lt;br /&gt;
&lt;br /&gt;
a) cel mai mare număr &amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt; din şirul de numere obţinut în urma aplicării transformării &amp;lt;code&amp;gt;T1&amp;lt;/code&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
b) numărul &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; obţinut prin alipirea numerele din şirul „maximizat” rezultat în urma aplicării transformării &amp;lt;code&amp;gt;T2&amp;lt;/code&amp;gt;.&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 două linii. Pe prima linie este scris numărul natural nenul &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;, iar pe a doua linie sunt scrise cele &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; numere naturale nenule din şir, separate prin câte un spaţiu.&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:&lt;br /&gt;
&lt;br /&gt;
− pe prima linie numărul natural &amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt;, reprezentând cel mai mare număr din şirul de numere obţinut în urma aplicării transformării &amp;lt;code&amp;gt;T1&amp;lt;/code&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
− pe a doua linie numărul natural &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt;, reprezentând numărul obţinut prin alipirea numerelor din şirul „maximizat”, rezultat în urma aplicării transformării &amp;lt;code&amp;gt;T2&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= Restricții și precizări =&lt;br /&gt;
• Numărul &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; este număr natural &amp;lt;code&amp;gt;2 ≤ n ≤ 3500&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
input.txt:&lt;br /&gt;
&lt;br /&gt;
9&lt;br /&gt;
&lt;br /&gt;
34 23 9 43 21 67 121 79 213&lt;br /&gt;
&lt;br /&gt;
output.txt:&lt;br /&gt;
&lt;br /&gt;
321&lt;br /&gt;
&lt;br /&gt;
9977643433232121211&lt;br /&gt;
&lt;br /&gt;
Explicație:&lt;br /&gt;
&lt;br /&gt;
După aplicarea transformării &amp;lt;code&amp;gt;T1&amp;lt;/code&amp;gt;, şirul devine: &amp;lt;code&amp;gt;43, 32, 9, 43, 21, 76, 211, 97, 321&amp;lt;/code&amp;gt;. Cel mai mare număr din acest şir este &amp;lt;code&amp;gt;m=321&amp;lt;/code&amp;gt;. După aplicarea transformării &amp;lt;code&amp;gt;T2&amp;lt;/code&amp;gt;, şirul maximizat este: &amp;lt;code&amp;gt;9, 97, 76, 43, 43, 32, 321, 21, 211&amp;lt;/code&amp;gt; iar numărul &amp;lt;code&amp;gt;x=9977643433232121211&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
input.txt:&lt;br /&gt;
&lt;br /&gt;
9999999&lt;br /&gt;
&lt;br /&gt;
34 23 9 43 21 67 121 79 213&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(2&amp;lt;=n&amp;lt;=3500):&lt;br /&gt;
        print(&amp;quot;Constrangeri neindeplinite&amp;quot;)&lt;br /&gt;
        exit()&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
    with open(&amp;quot;input.txt&amp;quot;, &amp;quot;r&amp;quot;) as f:&lt;br /&gt;
        n = int(f.readline().strip())&lt;br /&gt;
        ver(n)&lt;br /&gt;
        v = [0] * 3502&lt;br /&gt;
        maxi = -1&lt;br /&gt;
        freq = [0] * 1000&lt;br /&gt;
&lt;br /&gt;
        for line in f:&lt;br /&gt;
            v = list(map(int, line.split()))&lt;br /&gt;
&lt;br /&gt;
        for i in range(0, n):&lt;br /&gt;
            aux = v[i]&lt;br /&gt;
            nrc = 0&lt;br /&gt;
            nr = 0&lt;br /&gt;
&lt;br /&gt;
            while aux:&lt;br /&gt;
                nrc += 1&lt;br /&gt;
                aux //= 10&lt;br /&gt;
&lt;br /&gt;
            cif = [0] * (nrc + 1)&lt;br /&gt;
            cnt = 0&lt;br /&gt;
            aux = v[i]&lt;br /&gt;
&lt;br /&gt;
            while aux:&lt;br /&gt;
                cnt += 1&lt;br /&gt;
                cif[cnt] = aux % 10&lt;br /&gt;
                aux //= 10&lt;br /&gt;
&lt;br /&gt;
            cif[1:cnt+1] = sorted(cif[1:cnt+1])&lt;br /&gt;
&lt;br /&gt;
            while cnt:&lt;br /&gt;
                nr *= 10&lt;br /&gt;
                nr += cif[cnt]&lt;br /&gt;
                cnt -= 1&lt;br /&gt;
&lt;br /&gt;
            v[i] = nr&lt;br /&gt;
&lt;br /&gt;
            if v[i] &amp;gt; maxi:&lt;br /&gt;
                maxi = v[i]&lt;br /&gt;
&lt;br /&gt;
        for i in range(0, n):&lt;br /&gt;
            freq[v[i]] += 1&lt;br /&gt;
&lt;br /&gt;
        with open(&amp;quot;output.txt&amp;quot;, &amp;quot;w&amp;quot;) as g:&lt;br /&gt;
            g.write(str(maxi) + &amp;quot;\n&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
            for i in range(9, -1, -1):&lt;br /&gt;
                while freq[i]:&lt;br /&gt;
                    g.write(str(i))&lt;br /&gt;
                    freq[i] -= 1&lt;br /&gt;
&lt;br /&gt;
                for j in range(i * 10 + 9, i * 10, -1):&lt;br /&gt;
                    while freq[j]:&lt;br /&gt;
                        g.write(str(j))&lt;br /&gt;
                        freq[j] -= 1&lt;br /&gt;
&lt;br /&gt;
                    for k in range(j * 10 + 9, j * 10, -1):&lt;br /&gt;
                        while freq[k]:&lt;br /&gt;
                            g.write(str(k))&lt;br /&gt;
                            freq[k] -= 1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    main()&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Corjuc Eunice</name></author>
	</entry>
</feed>