<?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=2121_-_Tan</id>
	<title>2121 - Tan - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.universitas.ro/index.php?action=history&amp;feed=atom&amp;title=2121_-_Tan"/>
	<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=2121_-_Tan&amp;action=history"/>
	<updated>2026-05-02T04:17:39Z</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=2121_-_Tan&amp;diff=9045&amp;oldid=prev</id>
		<title>Miawinator: Pagină nouă: Petrică, tânăr licean în clasa a IX-a, a primit în dar de la părinţii săi un cont bancar pentru micile sale cheltuieli curente. El este pasionat de Internet Banking şi îşi verifică cu grijă toate tranzacţiile efectuate. Pentru creşterea securităţii tranzacţiilor online, banca îi furnizează lui Petrică un număr pe care el va trebui să îl modifice, obţinând un număr &lt;code&gt;TAN&lt;/code&gt; – număr de autentificare a tranzacţiei &lt;code&gt;(transaction authent...</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=2121_-_Tan&amp;diff=9045&amp;oldid=prev"/>
		<updated>2024-01-04T23:34:42Z</updated>

		<summary type="html">&lt;p&gt;Pagină nouă: Petrică, tânăr licean în clasa a IX-a, a primit în dar de la părinţii săi un cont bancar pentru micile sale cheltuieli curente. El este pasionat de Internet Banking şi îşi verifică cu grijă toate tranzacţiile efectuate. Pentru creşterea securităţii tranzacţiilor online, banca îi furnizează lui Petrică un număr pe care el va trebui să îl modifice, obţinând un număr &amp;lt;code&amp;gt;TAN&amp;lt;/code&amp;gt; – număr de autentificare a tranzacţiei &amp;lt;code&amp;gt;(transaction authent...&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Petrică, tânăr licean în clasa a IX-a, a primit în dar de la părinţii săi un cont bancar pentru micile sale cheltuieli curente. El este pasionat de Internet Banking şi îşi verifică cu grijă toate tranzacţiile efectuate. Pentru creşterea securităţii tranzacţiilor online, banca îi furnizează lui Petrică un număr pe care el va trebui să îl modifice, obţinând un număr &amp;lt;code&amp;gt;TAN&amp;lt;/code&amp;gt; – număr de autentificare a tranzacţiei &amp;lt;code&amp;gt;(transaction authentication number)&amp;lt;/code&amp;gt;. Regula de obţinere a numărului &amp;lt;code&amp;gt;TAN&amp;lt;/code&amp;gt; este următoarea: se formează cel mai mic număr par din toate cifrele numărului furnizat de bancă.&lt;br /&gt;
&lt;br /&gt;
= Cerința =&lt;br /&gt;
Cunoscând numărul &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; furnizat de bancă, să se determine numărul &amp;lt;code&amp;gt;TAN&amp;lt;/code&amp;gt; obţinut de Petrică.&lt;br /&gt;
&lt;br /&gt;
= Date de intrare =&lt;br /&gt;
Fişierul &amp;lt;code&amp;gt;input.txt&amp;lt;/code&amp;gt; conţine pe prima linie numărul natural &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; cu semnificaţia din enunţ.&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 o singură linie pe care va fi scris numărul &amp;lt;code&amp;gt;TAN&amp;lt;/code&amp;gt; cerut.&lt;br /&gt;
&lt;br /&gt;
= Restricții și precizări =&lt;br /&gt;
• &amp;lt;code&amp;gt;0 &amp;lt; n &amp;lt; 18*10**18&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
• numărul &amp;lt;code&amp;gt;TAN&amp;lt;/code&amp;gt; obţinut nu poate conţine zerouri nesemnificative&lt;br /&gt;
&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
input.txt:&lt;br /&gt;
&lt;br /&gt;
520&lt;br /&gt;
&lt;br /&gt;
output.txt:&lt;br /&gt;
&lt;br /&gt;
250&lt;br /&gt;
&lt;br /&gt;
Explicație:&lt;br /&gt;
&lt;br /&gt;
Cel mai mic număr par format cu cifrele &amp;lt;code&amp;gt;5, 2, 0&amp;lt;/code&amp;gt; este &amp;lt;code&amp;gt;250&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
input.txt:&lt;br /&gt;
&lt;br /&gt;
9999999999999999999999999999999999999999999&lt;br /&gt;
&lt;br /&gt;
Output:&lt;br /&gt;
&lt;br /&gt;
Input-ul nu convine conditiilor&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 verificare(n):&lt;br /&gt;
    if not(1&amp;lt;=n&amp;lt;18*(10**18)):&lt;br /&gt;
        print(&amp;quot;Input-ul nu convine conditiilor&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 cin, open(&amp;quot;output.txt&amp;quot;, &amp;quot;w&amp;quot;) as cout:&lt;br /&gt;
    n = int(cin.readline())&lt;br /&gt;
    verificare(n)&lt;br /&gt;
    fr = [0] * 10&lt;br /&gt;
    x = 0&lt;br /&gt;
    par = 0&lt;br /&gt;
    cif_min = 10&lt;br /&gt;
    pare = 0&lt;br /&gt;
&lt;br /&gt;
    while n:&lt;br /&gt;
        fr[n % 10] += 1&lt;br /&gt;
&lt;br /&gt;
        if cif_min &amp;gt; n % 10 and n % 10:&lt;br /&gt;
            cif_min = n % 10&lt;br /&gt;
&lt;br /&gt;
        if par &amp;lt; n % 10 and n % 10 % 2 == 0:&lt;br /&gt;
            par = n % 10&lt;br /&gt;
&lt;br /&gt;
        if n % 10 % 2 == 0:&lt;br /&gt;
            pare += 1&lt;br /&gt;
&lt;br /&gt;
        n //= 10&lt;br /&gt;
&lt;br /&gt;
    x = x * 10 + cif_min&lt;br /&gt;
    fr[cif_min] -= 1&lt;br /&gt;
&lt;br /&gt;
    if cif_min % 2 == 0:&lt;br /&gt;
        pare -= 1&lt;br /&gt;
&lt;br /&gt;
    if not pare:&lt;br /&gt;
        x = 0&lt;br /&gt;
        fr[cif_min] += 1&lt;br /&gt;
&lt;br /&gt;
    if cif_min == par and not fr[par]:&lt;br /&gt;
        for i in range(0, 9, 2):&lt;br /&gt;
            if fr[i]:&lt;br /&gt;
                par = i&lt;br /&gt;
                break&lt;br /&gt;
&lt;br /&gt;
    for i in range(10):&lt;br /&gt;
        if i == par:&lt;br /&gt;
            while fr[i] &amp;gt; 1:&lt;br /&gt;
                x = x * 10 + i&lt;br /&gt;
                fr[i] -= 1&lt;br /&gt;
        else:&lt;br /&gt;
            while fr[i]:&lt;br /&gt;
                x = x * 10 + i&lt;br /&gt;
                fr[i] -= 1&lt;br /&gt;
&lt;br /&gt;
    if fr[par]:&lt;br /&gt;
        x = x * 10 + par&lt;br /&gt;
&lt;br /&gt;
    cout.write(str(x))&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Miawinator</name></author>
	</entry>
</feed>