<?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=1050_-_TCIF</id>
	<title>1050 - TCIF - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.universitas.ro/index.php?action=history&amp;feed=atom&amp;title=1050_-_TCIF"/>
	<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=1050_-_TCIF&amp;action=history"/>
	<updated>2026-05-01T06:48:03Z</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=1050_-_TCIF&amp;diff=9931&amp;oldid=prev</id>
		<title>Benzar Ioan: Pagină nouă: == Cerința == Avem la dispoziţie patru numere naturale N, A, B, C, precum şi trei cifre c1, c2, c3 distincte două câte două. Să se determine numărul natural minim, strict mai mare decât N, care are exact A cifre c1, B cifre c2, C cifre c3 şi nu conţine alte cifre. == Date de intrare == Fișierul de intrare tcif.in conține pe prima linie, separate prin câte un spaţiu, numerele naturale A B C c1 c2 c3. Pe linia a doua se află numărul natural N. == Date de ieșir...</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=1050_-_TCIF&amp;diff=9931&amp;oldid=prev"/>
		<updated>2024-06-03T13:10:01Z</updated>

		<summary type="html">&lt;p&gt;Pagină nouă: == Cerința == Avem la dispoziţie patru numere naturale N, A, B, C, precum şi trei cifre c1, c2, c3 distincte două câte două. Să se determine numărul natural minim, strict mai mare decât N, care are exact A cifre c1, B cifre c2, C cifre c3 şi nu conţine alte cifre. == Date de intrare == Fișierul de intrare tcif.in conține pe prima linie, separate prin câte un spaţiu, numerele naturale A B C c1 c2 c3. Pe linia a doua se află numărul natural N. == Date de ieșir...&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;
Avem la dispoziţie patru numere naturale N, A, B, C, precum şi trei cifre c1, c2, c3 distincte două câte două.&lt;br /&gt;
Să se determine numărul natural minim, strict mai mare decât N, care are exact A cifre c1, B cifre c2, C cifre c3 şi nu conţine alte cifre.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Fișierul de intrare tcif.in conține pe prima linie, separate prin câte un spaţiu, numerele naturale A B C c1 c2 c3. Pe linia a doua se află numărul natural N.&lt;br /&gt;
== Date de ieșire ==&lt;br /&gt;
Fișierul de ieșire tcif.out va conține o singură linie pe care va fi scris cel mai mic număr natural strict mai mare decât N care conţine exact A cifre c1, exact B cifre c2 şi exact C cifre c3 şi nu conţine alte cifre.&lt;br /&gt;
== Restricții și precizări ==&lt;br /&gt;
*N va avea cel puţin o cifră şi cel mult 1000 de cifre.&lt;br /&gt;
*Pentru 10% dintre teste, N ≤ 30 000&lt;br /&gt;
*Pentru alte 40% dintre teste, N va avea cel mult 14 cifre&lt;br /&gt;
*0 ≤ c1, c2, c3 ≤ 9; c1, c2 şi c3 sunt distincte două câte două&lt;br /&gt;
*1 ≤ A, 1 ≤ B, 1 ≤ C, A+B+C ≤ 1000&lt;br /&gt;
*Datele de intrare sunt alese astfel încât va exista o soluţie.&lt;br /&gt;
== Exemplu 1 ==&lt;br /&gt;
;Intrare&lt;br /&gt;
2 2 2 3 2 4&amp;lt;br&amp;gt;&lt;br /&gt;
293187&lt;br /&gt;
;Iesire&lt;br /&gt;
322344&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
from itertools import permutations&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def generate_number(A, B, C, c1, c2, c3):&lt;br /&gt;
    number_str = c1 * A + c2 * B + c3 * C&lt;br /&gt;
    for perm in permutations(number_str):&lt;br /&gt;
        yield int(&amp;#039;&amp;#039;.join(perm))&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
    # Citirea datelor de intrare&lt;br /&gt;
    with open(&amp;quot;tcif.in&amp;quot;, &amp;quot;r&amp;quot;) as f:&lt;br /&gt;
        A, B, C, c1, c2, c3 = f.readline().strip().split()&lt;br /&gt;
        A, B, C = int(A), int(B), int(C)&lt;br /&gt;
        N = int(f.readline().strip())&lt;br /&gt;
&lt;br /&gt;
    assert 1 &amp;lt;= A &amp;lt;= 1000, &amp;quot;A trebuie să fie între 1 și 1000.&amp;quot;&lt;br /&gt;
    assert 1 &amp;lt;= B &amp;lt;= 1000, &amp;quot;B trebuie să fie între 1 și 1000.&amp;quot;&lt;br /&gt;
    assert 1 &amp;lt;= C &amp;lt;= 1000, &amp;quot;C trebuie să fie între 1 și 1000.&amp;quot;&lt;br /&gt;
    assert len(str(N)) &amp;lt;= 1000, &amp;quot;N trebuie să aibă cel puțin o cifră și cel mult 1000 de cifre.&amp;quot;&lt;br /&gt;
    assert 0 &amp;lt;= int(c1) &amp;lt;= 9 and 0 &amp;lt;= int(c2) &amp;lt;= 9 and 0 &amp;lt;= int(c3) &amp;lt;= 9, &amp;quot;c1, c2 și c3 trebuie să fie cifre distincte.&amp;quot;&lt;br /&gt;
    assert c1 != c2 and c1 != c3 and c2 != c3, &amp;quot;c1, c2 și c3 trebuie să fie cifre distincte.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    # Generarea și verificarea numerelor&lt;br /&gt;
    found = False&lt;br /&gt;
    result = None&lt;br /&gt;
    for num in sorted(generate_number(A, B, C, c1, c2, c3)):&lt;br /&gt;
        if num &amp;gt; N:&lt;br /&gt;
            result = num&lt;br /&gt;
            found = True&lt;br /&gt;
            break&lt;br /&gt;
&lt;br /&gt;
    # Afișarea rezultatului&lt;br /&gt;
    with open(&amp;quot;tcif.out&amp;quot;, &amp;quot;w&amp;quot;) as f:&lt;br /&gt;
        if found:&lt;br /&gt;
            f.write(f&amp;quot;{result}\n&amp;quot;)&lt;br /&gt;
        else:&lt;br /&gt;
            f.write(&amp;quot;Nu exista solutie\n&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    main()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Benzar Ioan</name></author>
	</entry>
</feed>