<?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=3146_-_Sort_4</id>
	<title>3146 - Sort 4 - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.universitas.ro/index.php?action=history&amp;feed=atom&amp;title=3146_-_Sort_4"/>
	<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=3146_-_Sort_4&amp;action=history"/>
	<updated>2026-05-01T04:41:14Z</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=3146_-_Sort_4&amp;diff=8828&amp;oldid=prev</id>
		<title>Codrut Borcutean: Pagină nouă: == Cerinţa == &#039;&#039;&#039;Laurențiu&#039;&#039;&#039; este un copil pasionat de teoria numerelor, dar și de informatică. Astfel, în timp ce își savura limonada după o zi obositoare de scoală alături de prietenii săi, acestuia i-a venit în minte o problemă interesantă: dându-se un șir de &#039;&#039;&#039;n&#039;&#039;&#039; numere naturale, sortați-l &#039;&#039;&#039;descrescător&#039;&#039;&#039; după numărul de cifre distincte, la număr de cifre distincte egal sortați-l &#039;&#039;&#039;crescător&#039;&#039;&#039; după suma cifrelor, la suma cifrelor egală so...</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=3146_-_Sort_4&amp;diff=8828&amp;oldid=prev"/>
		<updated>2024-01-03T09:28:45Z</updated>

		<summary type="html">&lt;p&gt;Pagină nouă: == Cerinţa == &amp;#039;&amp;#039;&amp;#039;Laurențiu&amp;#039;&amp;#039;&amp;#039; este un copil pasionat de teoria numerelor, dar și de informatică. Astfel, în timp ce își savura limonada după o zi obositoare de scoală alături de prietenii săi, acestuia i-a venit în minte o problemă interesantă: dându-se un șir de &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039; numere naturale, sortați-l &amp;#039;&amp;#039;&amp;#039;descrescător&amp;#039;&amp;#039;&amp;#039; după numărul de cifre distincte, la număr de cifre distincte egal sortați-l &amp;#039;&amp;#039;&amp;#039;crescător&amp;#039;&amp;#039;&amp;#039; după suma cifrelor, la suma cifrelor egală so...&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== Cerinţa ==&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Laurențiu&amp;#039;&amp;#039;&amp;#039; este un copil pasionat de teoria numerelor, dar și de informatică. Astfel, în timp ce își savura limonada după o zi obositoare de scoală alături de prietenii săi, acestuia i-a venit în minte o problemă interesantă: dându-se un șir de &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039; numere naturale, sortați-l &amp;#039;&amp;#039;&amp;#039;descrescător&amp;#039;&amp;#039;&amp;#039; după numărul de cifre distincte, la număr de cifre distincte egal sortați-l &amp;#039;&amp;#039;&amp;#039;crescător&amp;#039;&amp;#039;&amp;#039; după suma cifrelor, la suma cifrelor egală sortați-l &amp;#039;&amp;#039;&amp;#039;crescător&amp;#039;&amp;#039;&amp;#039; după produsul cifrelor, iar dacă și produsul cifrelor este egal, atunci numerele se vor sorta &amp;#039;&amp;#039;&amp;#039;crescător&amp;#039;&amp;#039;&amp;#039; după valorile lor.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Fișierul de intrare &amp;#039;&amp;#039;&amp;#039;sort4in.txt&amp;#039;&amp;#039;&amp;#039; conține pe prima linie numărul &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039;, iar pe a două linie &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039; numere naturale separate prin spații.&lt;br /&gt;
== Date de ieșire ==&lt;br /&gt;
Fișierul de ieșire &amp;#039;&amp;#039;&amp;#039;sort4out.txt&amp;#039;&amp;#039;&amp;#039; vă conține șirul sortat.&lt;br /&gt;
== Restricţii şi precizări ==&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;1 &amp;amp;les; n &amp;amp;les; 1.000.000&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* numerele de pe a două linie a fișierului de intrare vor fi mai mici decât &amp;#039;&amp;#039;&amp;#039;2.000.000.000&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
== Exemplu 1 ==&lt;br /&gt;
; sort4in.txt&lt;br /&gt;
 5&lt;br /&gt;
 111 19 223 51 37&lt;br /&gt;
; sort4out.txt&lt;br /&gt;
 Datele de intrare corespund restrictiilor impuse&lt;br /&gt;
 51 223 19 37 111&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
== Exemplu 2 ==&lt;br /&gt;
; sort4in.txt&lt;br /&gt;
 5&lt;br /&gt;
 111 19 223 51 20000000001&lt;br /&gt;
; sort4out.txt&lt;br /&gt;
 Datele de intrare nu corespund restrictiilor 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;
def cifre_distincte(n):&lt;br /&gt;
    return len(set(str(n)))&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def suma_cifrelor(n):&lt;br /&gt;
    return sum(int(c) for c in str(n))&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def produs_cifrelor(n):&lt;br /&gt;
    produs = 1&lt;br /&gt;
    for c in str(n):&lt;br /&gt;
        produs *= int(c)&lt;br /&gt;
    return produs&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
    # Deschiderea fișierelor de intrare și ieșire&lt;br /&gt;
    with open(&amp;#039;sort4in.txt&amp;#039;, &amp;#039;r&amp;#039;) as fin, open(&amp;#039;sort4out.txt&amp;#039;, &amp;#039;w&amp;#039;) as fout:&lt;br /&gt;
        # Citirea numărului de elemente din fișierul de intrare&lt;br /&gt;
        int(fin.readline().strip())&lt;br /&gt;
&lt;br /&gt;
        # Citirea numerelor și verificarea restricțiilor&lt;br /&gt;
        numere = list(map(int, fin.readline().strip().split()))&lt;br /&gt;
        if any(numar &amp;lt; 1 or numar &amp;gt;= 2000000000 for numar in numere):&lt;br /&gt;
            fout.write(&amp;quot;Datele de intrare nu corespund restrictiilor impuse\n&amp;quot;)&lt;br /&gt;
            return&lt;br /&gt;
        else:&lt;br /&gt;
            fout.write(&amp;quot;Datele de intrare corespund restrictiilor impuse\n&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
        # Sortarea numerelor&lt;br /&gt;
        numere.sort(key=lambda x: (-cifre_distincte(x), suma_cifrelor(x), produs_cifrelor(x), x))&lt;br /&gt;
&lt;br /&gt;
        # Scrierea numerelor sortate în fișierul de ieșire&lt;br /&gt;
        fout.write(&amp;#039; &amp;#039;.join(map(str, numere)) + &amp;#039;\n&amp;#039;)&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>Codrut Borcutean</name></author>
	</entry>
</feed>