<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.universitas.ro/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=VanceaGabriel</id>
	<title>Bitnami MediaWiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.universitas.ro/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=VanceaGabriel"/>
	<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/wiki/Special:Contributions/VanceaGabriel"/>
	<updated>2026-05-01T04:29:58Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.42.1</generator>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=3641_-_Xorstanta&amp;diff=9468</id>
		<title>3641 - Xorstanta</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=3641_-_Xorstanta&amp;diff=9468"/>
		<updated>2024-01-15T10:19:35Z</updated>

		<summary type="html">&lt;p&gt;VanceaGabriel: sc&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Cerința =&lt;br /&gt;
&#039;&#039;Totuși, combatanții au și ei regretele lor, regrete pe care vor să le depășească&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
În anul &amp;lt;code&amp;gt;2018&amp;lt;/code&amp;gt;, Olimpiada Națională de Informatică s-a ținut în Constanța, iar concurenții au fost triști că nicio problemă nu s-a numit Xorstanța.&lt;br /&gt;
&lt;br /&gt;
Se dă un număr &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;. De asemenea, ai două variabile &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt; și &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt;, inițial egale cu &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt;. Apoi, pentru fiecare număr &amp;lt;code&amp;gt;i&amp;lt;/code&amp;gt; de la &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; la &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;, trebuie să alegem între &amp;lt;code&amp;gt;a = a ^ i&amp;lt;/code&amp;gt; și &amp;lt;code&amp;gt;b = b ^ i&amp;lt;/code&amp;gt;, unde cu &amp;lt;code&amp;gt;^&amp;lt;/code&amp;gt; notăm operația &amp;lt;code&amp;gt;XOR&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Calculați suma maximă ce se poate obține între &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt; și &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= Date de intrare =&lt;br /&gt;
Programul citește de la tastatură numărul &amp;lt;code&amp;gt;t&amp;lt;/code&amp;gt;, reprezentând numărul de teste ce trebuie rezolvate.&lt;br /&gt;
&lt;br /&gt;
Pe fiecare dintre următoarele &amp;lt;code&amp;gt;t&amp;lt;/code&amp;gt; linii se va afla numărul &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= Date de ieșire =&lt;br /&gt;
Programul va afișa pe fiecare dintre cele &amp;lt;code&amp;gt;t&amp;lt;/code&amp;gt; linii răspunsul pentru inputul de pe linia &amp;lt;code&amp;gt;i+1&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= Restricții și precizări =&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;1 ≤ t ≤ 100000&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;1 ≤ n ≤ 1.000.000.000&amp;lt;/code&amp;gt;&lt;br /&gt;
* Pentru &amp;lt;code&amp;gt;10&amp;lt;/code&amp;gt; puncte, &amp;lt;code&amp;gt;1 ≤ n ≤ 20&amp;lt;/code&amp;gt; și &amp;lt;code&amp;gt;t = 1&amp;lt;/code&amp;gt;&lt;br /&gt;
* Pentru &amp;lt;code&amp;gt;30&amp;lt;/code&amp;gt; de puncte, &amp;lt;code&amp;gt;1 ≤ n ≤ 100000&amp;lt;/code&amp;gt; și &amp;lt;code&amp;gt;t = 1&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Exemplu: =&lt;br /&gt;
Intrare&lt;br /&gt;
 4&lt;br /&gt;
 6&lt;br /&gt;
 30&lt;br /&gt;
 15&lt;br /&gt;
 18&lt;br /&gt;
Ieșire&lt;br /&gt;
 7&lt;br /&gt;
 31&lt;br /&gt;
 30&lt;br /&gt;
 43&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python3&amp;quot;&amp;gt;&lt;br /&gt;
def calculeaza_suma_maxima_xor(n):&lt;br /&gt;
    # Setăm suma_max la 29, valoare constantă folosită în bucla for.&lt;br /&gt;
    suma_max = 29&lt;br /&gt;
    numar_a, numar_b = 0, 0&lt;br /&gt;
&lt;br /&gt;
    # Calculăm valoarea lui a în funcție de restul împărțirii lui n la 4.&lt;br /&gt;
    if n % 4 == 1:&lt;br /&gt;
        numar_a = 1&lt;br /&gt;
    elif n % 4 == 2:&lt;br /&gt;
        numar_a = n + 1&lt;br /&gt;
    elif n % 4 == 3:&lt;br /&gt;
        numar_a = 0&lt;br /&gt;
    else:&lt;br /&gt;
        numar_a = n&lt;br /&gt;
&lt;br /&gt;
    # Calculăm valoarea numarului b în funcție de puterile lui 2 până la 2^29 care sunt mai mici sau egale cu n.&lt;br /&gt;
    for j in range(suma_max, -1, -1):&lt;br /&gt;
        if (1 &amp;lt;&amp;lt; j) &amp;lt;= n:&lt;br /&gt;
            numar_b += (1 &amp;lt;&amp;lt; j)&lt;br /&gt;
&lt;br /&gt;
    # Efectuăm operația XOR între a și b și returnăm suma rezultată.&lt;br /&gt;
    numar_a = numar_a ^ numar_b&lt;br /&gt;
    return numar_a + numar_b&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
    # Citim numărul de teste.&lt;br /&gt;
    numarul_t = int(input(&amp;quot;T: &amp;quot;))&lt;br /&gt;
&lt;br /&gt;
    # Parcurgem fiecare test.&lt;br /&gt;
    for _ in range(numarul_t):&lt;br /&gt;
        # Citim valoarea n pentru testul curent.&lt;br /&gt;
        numarul_n = int(input(&amp;quot;n: &amp;quot;))&lt;br /&gt;
&lt;br /&gt;
        # Calculăm și afișăm suma maximă XOR pentru valoarea n dată.&lt;br /&gt;
        suma_maxima_xor = calculeaza_suma_maxima_xor(numarul_n)&lt;br /&gt;
        print(suma_maxima_xor)&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>VanceaGabriel</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=2102_-_Robot_3&amp;diff=9467</id>
		<title>2102 - Robot 3</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=2102_-_Robot_3&amp;diff=9467"/>
		<updated>2024-01-13T20:39:38Z</updated>

		<summary type="html">&lt;p&gt;VanceaGabriel: Pagină nouă: Paul dorește să învețe cum să programeze un robot. Pentru început s-a gândit să construiască un robot format dintr-un mâner, &amp;lt;code&amp;gt;10&amp;lt;/code&amp;gt; butoane aranjate circular şi un ecran. Pe butoane sunt scrise, în ordine crescătoare, cifrele de la &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; la &amp;lt;code&amp;gt;9&amp;lt;/code&amp;gt;, ca în figură. miniatura Un roboprogram va fi format dintr-o secvenţă de instrucţiuni. Instrucțiunile pot fi:  Iniţial mânerul robotului este plasat în dre...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Paul dorește să învețe cum să programeze un robot. Pentru început s-a gândit să construiască un robot format dintr-un mâner, &amp;lt;code&amp;gt;10&amp;lt;/code&amp;gt; butoane aranjate circular şi un ecran. Pe butoane sunt scrise, în ordine crescătoare, cifrele de la &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; la &amp;lt;code&amp;gt;9&amp;lt;/code&amp;gt;, ca în figură.&lt;br /&gt;
[[Fișier:Image.png|stanga|miniatura]]&lt;br /&gt;
Un roboprogram va fi format dintr-o secvenţă de instrucţiuni. Instrucțiunile pot fi:&lt;br /&gt;
&lt;br /&gt;
Iniţial mânerul robotului este plasat în dreptul butonului &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt;, iar ecranul este gol.&lt;br /&gt;
&lt;br /&gt;
De exemplu, în urma executării roboprogramului &amp;lt;code&amp;gt;D4AS1AAD6AT&amp;lt;/code&amp;gt; robotul apasă butoanele pe care sunt scrise cifrele &amp;lt;code&amp;gt;4, 3, 3, 9,&amp;lt;/code&amp;gt; iar pe ecran va apărea &amp;lt;code&amp;gt;4339&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Cerințe ===&lt;br /&gt;
Să se scrie un program care rezolvă următoarele cerinţe:&lt;br /&gt;
&lt;br /&gt;
=== Date de intrare ===&lt;br /&gt;
Fişierul de intrare &amp;lt;code&amp;gt;robot3.in&amp;lt;/code&amp;gt; conţine pe prima linie un număr natural &amp;lt;code&amp;gt;C&amp;lt;/code&amp;gt;, reprezentând cerinţa care urmează să fie rezolvată &amp;lt;code&amp;gt;(1, 2 sau 3)&amp;lt;/code&amp;gt;. Dacă &amp;lt;code&amp;gt;C=1&amp;lt;/code&amp;gt; sau &amp;lt;code&amp;gt;C=2&amp;lt;/code&amp;gt;, pe a doua linie a fişierului se află un roboprogram. Dacă &amp;lt;code&amp;gt;C=3&amp;lt;/code&amp;gt;, pe a doua linie a fişierului de intrare se află numărul natural &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Date de ieșire ===&lt;br /&gt;
Fişierul de ieşire &amp;lt;code&amp;gt;robot3.out&amp;lt;/code&amp;gt; va conţine o singură linie. Dacă &amp;lt;code&amp;gt;C=1&amp;lt;/code&amp;gt;, pe prima linie se va scrie un număr natural reprezentând numărul de cifre afişate pe ecran după executarea roboprogramului din fişierul de intrare.&lt;br /&gt;
&lt;br /&gt;
Dacă &amp;lt;code&amp;gt;C=2&amp;lt;/code&amp;gt;, pe prima linie vor fi scrise cifrele afișate pe ecran în urma executării roboprogramului din fişierul de intrare. Dacă &amp;lt;code&amp;gt;C=3&amp;lt;/code&amp;gt;, pe prima linie va fi scris roboprogramul solicitat de cerinţa &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Restricții și precizări ===&lt;br /&gt;
• &amp;lt;code&amp;gt;0 ≤ N ≤ 1000000000&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
• Lungimea roboprogramului citit din fişierul de intrare sau scris în fişierul de ieşire este &amp;lt;code&amp;gt;cel mult 1000&amp;lt;/code&amp;gt; de caractere.&lt;br /&gt;
&lt;br /&gt;
• Dacă mânerul este plasat în dreptul butonului &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; şi se deplasează spre dreapta, se va îndrepta către butonul &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;; dacă deplasarea este spre stânga, se va îndrepta către butonul &amp;lt;code&amp;gt;9&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
• Pentru rezolvarea corectă a primei cerinţe se acordă 10 puncte, pentru rezolvarea corectă a celei de a doua cerințe se acordă 30 de puncte, iar pentru rezolvarea corectă a celei de a treia cerințe se acordă 50 de puncte. 10 puncte se acordă din oficiu.&lt;br /&gt;
&lt;br /&gt;
=== Exemplul 1: ===&lt;br /&gt;
&amp;lt;code&amp;gt;robot3.in&amp;lt;/code&amp;gt;&lt;br /&gt;
 1&lt;br /&gt;
 D1AD2AS1AT&lt;br /&gt;
&amp;lt;code&amp;gt;robot3.out&amp;lt;/code&amp;gt;&lt;br /&gt;
 3&lt;br /&gt;
&amp;lt;code&amp;gt;C=1&amp;lt;/code&amp;gt;, pentru acest test se rezolvă &amp;lt;code&amp;gt;cerința 1&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Se afişează pe ecran &amp;lt;code&amp;gt;3 cifre (132)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Exemplul 2: ===&lt;br /&gt;
&amp;lt;code&amp;gt;robot3.in&amp;lt;/code&amp;gt;&lt;br /&gt;
 2&lt;br /&gt;
 S0AD2AS1AT&lt;br /&gt;
&amp;lt;code&amp;gt;robot3.out&amp;lt;/code&amp;gt;&lt;br /&gt;
 021&lt;br /&gt;
&amp;lt;code&amp;gt;C=2&amp;lt;/code&amp;gt;, pentru acest test se rezolvă &amp;lt;code&amp;gt;cerința 2&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Mânerul robotului se deplasează cu &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; unități la stânga, deci rămâne în dreptul butonului &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; și apasă, apoi se deplasează &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt; unități spre dreapta şi ajunge în dreptul butonului &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt;, apasă, apoi se deplasează &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; unitate la stânga și ajunge în dreptul butonului &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; și apasă acest buton → &amp;lt;code&amp;gt;021&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Exemplul 3: ===&lt;br /&gt;
&amp;lt;code&amp;gt;robot3.in&amp;lt;/code&amp;gt;&lt;br /&gt;
 3&lt;br /&gt;
 19332&lt;br /&gt;
&amp;lt;code&amp;gt;robot3.out&amp;lt;/code&amp;gt;&lt;br /&gt;
 D1AS2AD4AAS1AT&lt;br /&gt;
&amp;lt;code&amp;gt;C=3&amp;lt;/code&amp;gt;, pentru acest test se rezolvă &amp;lt;code&amp;gt;cerința 3&amp;lt;/code&amp;gt;. Pentru a afișa cifra &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;, mânerul robotului se deplasează &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; unitate la dreapta după care apasă &amp;lt;code&amp;gt;(D1A)&amp;lt;/code&amp;gt;. Pentru a afișa cifra &amp;lt;code&amp;gt;9&amp;lt;/code&amp;gt;, din poziția curentă mânerul robotului se deplasează &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt; unități la stânga şi apasă &amp;lt;code&amp;gt;(S2A)&amp;lt;/code&amp;gt;. Pentru a afișa cifra &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt;, din poziția curentă mânerul robotului se deplasează &amp;lt;code&amp;gt;4&amp;lt;/code&amp;gt; unități la dreapta după care apasă &amp;lt;code&amp;gt;(D4A)&amp;lt;/code&amp;gt;. Pentru a afișa a doua cifra &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt;, mânerul robotului rămâne în poziția curentă și apasă butonul. Pentru a afișa cifra &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt;, din poziția curentă mânerul robotului se deplasează &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; unitate la stânga după care apasă &amp;lt;code&amp;gt;(S1A)&amp;lt;/code&amp;gt;. Programul se termină cu instrucțiunea &amp;lt;code&amp;gt;T → D1AS2AD4AAS1AT&amp;lt;/code&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;python3&amp;quot;&amp;gt;&lt;br /&gt;
def main():&lt;br /&gt;
    # Deschidem fisierul de intrare si iesire&lt;br /&gt;
    with open(&amp;quot;robot.in&amp;quot;, &amp;quot;r&amp;quot;) as fin, open(&amp;quot;robot.out&amp;quot;, &amp;quot;w&amp;quot;) as fout:&lt;br /&gt;
        # Citim numarul de cazuri de test &#039;numar_c&#039;.&lt;br /&gt;
        numar_c = int(fin.readline().strip())&lt;br /&gt;
&lt;br /&gt;
        # Citim sirul &#039;numar_a&#039; de caractere A, S, D.&lt;br /&gt;
        numar_a = fin.readline().strip()&lt;br /&gt;
&lt;br /&gt;
        # Definim functia &#039;rezultat&#039; care va scriem rezultatul in fisier in functie de diferenta dintre doua caractere.&lt;br /&gt;
        def rezultat(a, b):&lt;br /&gt;
            if a == b:&lt;br /&gt;
                fout.write(&#039;A&#039;)&lt;br /&gt;
            elif a &amp;lt; b:&lt;br /&gt;
                if b - a &amp;lt;= (a + 10 - b) % 10:&lt;br /&gt;
                    fout.write(f&#039;D{b - a}A&#039;)&lt;br /&gt;
                elif b - a &amp;gt; (a + 10 - b) % 10:&lt;br /&gt;
                    fout.write(f&#039;S{(a + 10 - b) % 10}A&#039;)&lt;br /&gt;
            else:&lt;br /&gt;
                if a - b &amp;lt; (b + 10 - a) % 10:&lt;br /&gt;
                    fout.write(f&#039;S{a - b}A&#039;)&lt;br /&gt;
                else:&lt;br /&gt;
                    fout.write(f&#039;D{(b + 10 - a) % 10}A&#039;)&lt;br /&gt;
&lt;br /&gt;
        # Verificam tipul de operatie specificat de &#039;numar_c&#039;.&lt;br /&gt;
        if numar_c == 1:&lt;br /&gt;
            # Calculam numarul de A-uri si il scriem in fisier.&lt;br /&gt;
            numar = numar_a.count(&#039;A&#039;)&lt;br /&gt;
            fout.write(str(numar))&lt;br /&gt;
        elif numar_c == 2:&lt;br /&gt;
            # Calculam pozitia finala in functie de operatiile S si D si o scriem in fisier.&lt;br /&gt;
            pozitie = 0&lt;br /&gt;
            for i in range(len(numar_a)):&lt;br /&gt;
                if numar_a[i] == &#039;S&#039;:&lt;br /&gt;
                    variabila = int(numar_a[i + 1])&lt;br /&gt;
                    pozitie = (pozitie + 10 - variabila) % 10&lt;br /&gt;
                elif numar_a[i] == &#039;D&#039;:&lt;br /&gt;
                    variabila = int(numar_a[i + 1])&lt;br /&gt;
                    pozitie = (pozitie + variabila) % 10&lt;br /&gt;
                elif numar_a[i] == &#039;A&#039;:&lt;br /&gt;
                    fout.write(str(pozitie))&lt;br /&gt;
        elif numar_c == 3:&lt;br /&gt;
            # Calculam rezultatul pentru fiecare pereche de caractere si scriem &#039;T&#039; la final.&lt;br /&gt;
            rezultat(0, int(numar_a[0]))&lt;br /&gt;
            for i in range(1, len(numar_a)):&lt;br /&gt;
                rezultat(int(numar_a[i - 1]), int(numar_a[i]))&lt;br /&gt;
            fout.write(&#039;T&#039;)&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>VanceaGabriel</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=File:Image.png&amp;diff=9466</id>
		<title>File:Image.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=File:Image.png&amp;diff=9466"/>
		<updated>2024-01-13T20:38:39Z</updated>

		<summary type="html">&lt;p&gt;VanceaGabriel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;figura&lt;/div&gt;</summary>
		<author><name>VanceaGabriel</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=3641_-_Xorstanta&amp;diff=9465</id>
		<title>3641 - Xorstanta</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=3641_-_Xorstanta&amp;diff=9465"/>
		<updated>2024-01-13T20:18:59Z</updated>

		<summary type="html">&lt;p&gt;VanceaGabriel: Pagină nouă: = Cerința = &amp;#039;&amp;#039;Totuși, combatanții au și ei regretele lor, regrete pe care vor să le depășească&amp;#039;&amp;#039;  În anul &amp;lt;code&amp;gt;2018&amp;lt;/code&amp;gt;, Olimpiada Națională de Informatică s-a ținut în Constanța, iar concurenții au fost triști că nicio problemă nu s-a numit Xorstanța.  Se dă un număr &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;. De asemenea, ai două variabile &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt; și &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt;, inițial egale cu &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt;. Apoi, pentru fiecare număr &amp;lt;code&amp;gt;i&amp;lt;/code&amp;gt; de la &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; la &amp;lt;...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Cerința =&lt;br /&gt;
&#039;&#039;Totuși, combatanții au și ei regretele lor, regrete pe care vor să le depășească&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
În anul &amp;lt;code&amp;gt;2018&amp;lt;/code&amp;gt;, Olimpiada Națională de Informatică s-a ținut în Constanța, iar concurenții au fost triști că nicio problemă nu s-a numit Xorstanța.&lt;br /&gt;
&lt;br /&gt;
Se dă un număr &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;. De asemenea, ai două variabile &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt; și &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt;, inițial egale cu &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt;. Apoi, pentru fiecare număr &amp;lt;code&amp;gt;i&amp;lt;/code&amp;gt; de la &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; la &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;, trebuie să alegem între &amp;lt;code&amp;gt;a = a ^ i&amp;lt;/code&amp;gt; și &amp;lt;code&amp;gt;b = b ^ i&amp;lt;/code&amp;gt;, unde cu &amp;lt;code&amp;gt;^&amp;lt;/code&amp;gt; notăm operația &amp;lt;code&amp;gt;XOR&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Calculați suma maximă ce se poate obține între &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt; și &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= Date de intrare =&lt;br /&gt;
Programul citește de la tastatură numărul &amp;lt;code&amp;gt;t&amp;lt;/code&amp;gt;, reprezentând numărul de teste ce trebuie rezolvate.&lt;br /&gt;
&lt;br /&gt;
Pe fiecare dintre următoarele &amp;lt;code&amp;gt;t&amp;lt;/code&amp;gt; linii se va afla numărul &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= Date de ieșire =&lt;br /&gt;
Programul va afișa pe fiecare dintre cele &amp;lt;code&amp;gt;t&amp;lt;/code&amp;gt; linii răspunsul pentru inputul de pe linia &amp;lt;code&amp;gt;i+1&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= Restricții și precizări =&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;1 ≤ t ≤ 100000&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;1 ≤ n ≤ 1.000.000.000&amp;lt;/code&amp;gt;&lt;br /&gt;
* Pentru &amp;lt;code&amp;gt;10&amp;lt;/code&amp;gt; puncte, &amp;lt;code&amp;gt;1 ≤ n ≤ 20&amp;lt;/code&amp;gt; și &amp;lt;code&amp;gt;t = 1&amp;lt;/code&amp;gt;&lt;br /&gt;
* Pentru &amp;lt;code&amp;gt;30&amp;lt;/code&amp;gt; de puncte, &amp;lt;code&amp;gt;1 ≤ n ≤ 100000&amp;lt;/code&amp;gt; și &amp;lt;code&amp;gt;t = 1&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Exemplu: =&lt;br /&gt;
Intrare&lt;br /&gt;
 4&lt;br /&gt;
 6&lt;br /&gt;
 30&lt;br /&gt;
 15&lt;br /&gt;
 18&lt;br /&gt;
Ieșire&lt;br /&gt;
 7&lt;br /&gt;
 31&lt;br /&gt;
 30&lt;br /&gt;
 43&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python3&amp;quot;&amp;gt;&lt;br /&gt;
def main():&lt;br /&gt;
    suma_max = 29&lt;br /&gt;
    numar_t = int(input(&amp;quot;T: &amp;quot;))&lt;br /&gt;
    while numar_t &amp;gt; 0:&lt;br /&gt;
        n = int(input(&amp;quot;&amp;quot;))&lt;br /&gt;
        numar_a, numar_b = 0, 0&lt;br /&gt;
&lt;br /&gt;
        # Calculează a în funcție de restul împărțirii lui n la 4.&lt;br /&gt;
        if n % 4 == 1:&lt;br /&gt;
            numar_a = 1&lt;br /&gt;
        elif n % 4 == 2:&lt;br /&gt;
            numar_a = n + 1&lt;br /&gt;
        elif n % 4 == 3:&lt;br /&gt;
            numar_a = 0&lt;br /&gt;
        else:&lt;br /&gt;
            numar_a = n&lt;br /&gt;
&lt;br /&gt;
        # Calculează b în funcție de puterile lui 2 până la 2^29 care sunt mai mici sau egale cu n.&lt;br /&gt;
        for j in range(suma_max, 0, -1):4&lt;br /&gt;
            if (1 &amp;lt;&amp;lt; j) &amp;lt;= n:&lt;br /&gt;
                numar_b += (1 &amp;lt;&amp;lt; j)&lt;br /&gt;
&lt;br /&gt;
        # Efectuam operația XOR între a și b și afișam rezultatul.&lt;br /&gt;
        numar_a = numar_a ^ numar_b&lt;br /&gt;
        print(str(numar_a + numar_b) + &amp;quot;\n&amp;quot;)&lt;br /&gt;
        numar_t -= 1&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>VanceaGabriel</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=4143_-_Ghicitoare&amp;diff=9464</id>
		<title>4143 - Ghicitoare</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=4143_-_Ghicitoare&amp;diff=9464"/>
		<updated>2024-01-13T19:39:00Z</updated>

		<summary type="html">&lt;p&gt;VanceaGabriel: Pagină nouă: = Cerința = Fie un număr natural nenul &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;, cunoscut. RAU-Gigel alege un număr oarecare din intervalul închis &amp;lt;code&amp;gt;[1,n]&amp;lt;/code&amp;gt;, fie acesta &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt;. Apoi calculează “suma XOR” &amp;lt;code&amp;gt;S = 1 ^ 2 ^ ... ^ (x-2)  ^ (x-1) ^ (x+1) ^ (x+2) ^ ... ^ n&amp;lt;/code&amp;gt; pe care v-o comunică. Puteți să-l ghiciți pe &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; ? RAU-Gigel nu prea are răbdare, el vrea repede un răspuns de la voi.  Am notat cu &amp;lt;code&amp;gt;^&amp;lt;/code&amp;gt; operația &amp;lt;code&amp;gt;XOR&amp;lt;/code&amp;gt; (operatorul d...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Cerința =&lt;br /&gt;
Fie un număr natural nenul &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;, cunoscut. RAU-Gigel alege un număr oarecare din intervalul închis &amp;lt;code&amp;gt;[1,n]&amp;lt;/code&amp;gt;, fie acesta &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt;. Apoi calculează “suma XOR” &amp;lt;code&amp;gt;S = 1 ^ 2 ^ ... ^ (x-2)  ^ (x-1) ^ (x+1) ^ (x+2) ^ ... ^ n&amp;lt;/code&amp;gt; pe care v-o comunică. Puteți să-l ghiciți pe &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; ? RAU-Gigel nu prea are răbdare, el vrea repede un răspuns de la voi.&lt;br /&gt;
&lt;br /&gt;
Am notat cu &amp;lt;code&amp;gt;^&amp;lt;/code&amp;gt; operația &amp;lt;code&amp;gt;XOR&amp;lt;/code&amp;gt; (operatorul de disjuncție exclusivă).&lt;br /&gt;
&lt;br /&gt;
Ca să fie sigur că nu nimeriți din întâmplare răspunsul, RAU-Gigel vă testează de mai multe ori.&lt;br /&gt;
&lt;br /&gt;
= Date de intrare =&lt;br /&gt;
Fișierul de intrare &amp;lt;code&amp;gt;ghicitoare.in&amp;lt;/code&amp;gt; conține pe prima linie un număr natural &amp;lt;code&amp;gt;T&amp;lt;/code&amp;gt; reprezentând numărul de teste / ghicitori pe care RAU-Gigel vi le propune, apoi &amp;lt;code&amp;gt;T&amp;lt;/code&amp;gt; linii care conțin perechi de forma &amp;lt;code&amp;gt;n S&amp;lt;/code&amp;gt;, separate printr-un spațiu, cu semnificația de mai sus.&lt;br /&gt;
&lt;br /&gt;
= Date de ieșire =&lt;br /&gt;
Fișierul de ieșire &amp;lt;code&amp;gt;ghicitoare.out&amp;lt;/code&amp;gt; va conține &amp;lt;code&amp;gt;T&amp;lt;/code&amp;gt; rânduri, cu răspunsurile &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt;, în ordinea solicitării, câte unul pe linie, la ghicitorile lui RAU-Gigel.&lt;br /&gt;
&lt;br /&gt;
= Restricții și precizări =&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;1 ≤ T ≤ 10&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;1 ≤ n ≤ 1.000.000.000&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;0 ≤ S ≤ 1.000.000.000&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;1 ≤ x ≤ n&amp;lt;/code&amp;gt;&lt;br /&gt;
* Pentru teste în valoare de &amp;lt;code&amp;gt;10&amp;lt;/code&amp;gt; de puncte: &amp;lt;code&amp;gt;T = 2&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;n  ≤ 100&amp;lt;/code&amp;gt;&lt;br /&gt;
* Pentru teste în valoare de alte &amp;lt;code&amp;gt;30&amp;lt;/code&amp;gt; de puncte: &amp;lt;code&amp;gt;n  ≤ 1.000.000&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Exemplu: =&lt;br /&gt;
&amp;lt;code&amp;gt;ghicitoare.in&amp;lt;/code&amp;gt;&lt;br /&gt;
 2&lt;br /&gt;
 5 2&lt;br /&gt;
 10 14&lt;br /&gt;
&amp;lt;code&amp;gt;ghicitoare.out&amp;lt;/code&amp;gt;&lt;br /&gt;
 3&lt;br /&gt;
 5&lt;br /&gt;
&lt;br /&gt;
=== Explicație ===&lt;br /&gt;
RAU-Gigel vă propune &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt; ghicitori.&lt;br /&gt;
&lt;br /&gt;
La prima ghicitoare avem: &amp;lt;code&amp;gt;n = 5, S = 2&amp;lt;/code&amp;gt;. Numărul căutat este &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt;. Intr-adevăr,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;S = 1 ^ 2 ^ 4 ^ 5 = |001| ^ |010| ^ |100| ^ |101| = |010| = 2&amp;lt;/code&amp;gt; (am notat cu &amp;lt;code&amp;gt;|a|&amp;lt;/code&amp;gt; reprezentarea binară a lui &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
La a doua ghicitoare avem: &amp;lt;code&amp;gt;n = 10, S = 14&amp;lt;/code&amp;gt;. Numărul căutat este &amp;lt;code&amp;gt;5&amp;lt;/code&amp;gt;. Intr-adevăr,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;S = 1 ^ 2 ^ 3 ^ 4 ^ 6 ^ 7 ^ 8 ^ 9 ^ 10&amp;lt;/code&amp;gt; are valoarea &amp;lt;code&amp;gt;14&amp;lt;/code&amp;gt;.&amp;lt;syntaxhighlight lang=&amp;quot;python3&amp;quot;&amp;gt;&lt;br /&gt;
def main():&lt;br /&gt;
    # Deschide fisierul de intrare si iesire&lt;br /&gt;
    fin = open(&amp;quot;ghicitoare.in&amp;quot;, &amp;quot;r&amp;quot;)&lt;br /&gt;
    fout = open(&amp;quot;ghicitoare.out&amp;quot;, &amp;quot;w&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    # Citim numarul de teste &#039;numar_t&#039; din prima linie a fisierului de intrare.&lt;br /&gt;
    numar_t = int(fin.readline())&lt;br /&gt;
&lt;br /&gt;
    # Parcurge fiecare test.&lt;br /&gt;
    for i in range(numar_t):&lt;br /&gt;
        # Citim linia de input și extragem cele două valori &#039;numar_n&#039; și &#039;numar_s&#039;.&lt;br /&gt;
        line = fin.readline().split()&lt;br /&gt;
        numar_n, numar_s = int(line[0]), int(line[1])&lt;br /&gt;
&lt;br /&gt;
        # Calculam xorrange pentru numar_n și adaugă rezultatul la numar_s.&lt;br /&gt;
        # Scriem rezultatul în fisierul de iesire.&lt;br /&gt;
        fout.write(str(xorrange(numar_n) ^ numar_s) + &amp;quot;\n&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    # Inchidem fisierele de intrare si iesire.&lt;br /&gt;
    fin.close()&lt;br /&gt;
    fout.close()&lt;br /&gt;
&lt;br /&gt;
def xorrange(numar_n):&lt;br /&gt;
    # Folosim // pentru impartire la intreg in Python.&lt;br /&gt;
    if (numar_n + 1) // 2 % 2 == 0:&lt;br /&gt;
        rezultat = 0&lt;br /&gt;
    else:&lt;br /&gt;
        rezultat = 1&lt;br /&gt;
&lt;br /&gt;
    # Initializam i la 4 pentru a evita bucla infinita.&lt;br /&gt;
    i = 4&lt;br /&gt;
&lt;br /&gt;
    # Parcurgem elementele în șir până la numar_n.&lt;br /&gt;
    while (i &amp;gt;&amp;gt; 1) &amp;lt;= numar_n:&lt;br /&gt;
        rest_impartire = numar_n % i&lt;br /&gt;
&lt;br /&gt;
        # Verificam daca restul impartirii este mai mic decat i / 2 si aplicam operatii.&lt;br /&gt;
        if rest_impartire &amp;lt; (i &amp;gt;&amp;gt; 1):&lt;br /&gt;
            pass&lt;br /&gt;
        elif rest_impartire == 1 or rest_impartire % 2 == 0:&lt;br /&gt;
            rezultat |= (i &amp;gt;&amp;gt; 1)&lt;br /&gt;
&lt;br /&gt;
        # Dublam valoarea lui i pentru a continua iteratia.&lt;br /&gt;
        i &amp;lt;&amp;lt;= 1&lt;br /&gt;
&lt;br /&gt;
    return rezultat&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>VanceaGabriel</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=2110_-_Vot&amp;diff=9463</id>
		<title>2110 - Vot</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=2110_-_Vot&amp;diff=9463"/>
		<updated>2024-01-13T19:05:48Z</updated>

		<summary type="html">&lt;p&gt;VanceaGabriel: Pagină nouă: În clasa lui Andrei sunt &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; elevi, codificaţi cu numerele &amp;lt;code&amp;gt;1, 2, …, n&amp;lt;/code&amp;gt;. Ei au fost rugaţi de către diriginta lor să propună un coleg de clasă care să devină liderul lor. Fiecare elev şi-a exprimat opţiunea scriind pe un bileţel codul său şi codul elevului ales de el pentru funcţia de şef de clasă. În acest fel diriginta a putut afla pe cine a votat fiecare elev. După studierea propunerilor venite din partea elevilor săi, diriginta...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;În clasa lui Andrei sunt &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; elevi, codificaţi cu numerele &amp;lt;code&amp;gt;1, 2, …, n&amp;lt;/code&amp;gt;. Ei au fost rugaţi de către diriginta lor să propună un coleg de clasă care să devină liderul lor. Fiecare elev şi-a exprimat opţiunea scriind pe un bileţel codul său şi codul elevului ales de el pentru funcţia de şef de clasă. În acest fel diriginta a putut afla pe cine a votat fiecare elev. După studierea propunerilor venite din partea elevilor săi, diriginta lui Andrei a dorit să determine un grup cât mai numeros de elevi care s-au votat unii pe alţii. Cu alte cuvinte, pentru fiecare elev din grup să existe un membru al grupului care să-l fi votat. Dacă de exemplu, sunt &amp;lt;code&amp;gt;5&amp;lt;/code&amp;gt; elevi şi elevul &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; îl votează pe &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt; îl votează pe &amp;lt;code&amp;gt;4&amp;lt;/code&amp;gt;, votul lui &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt; merge spre &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt;, al lui &amp;lt;code&amp;gt;4&amp;lt;/code&amp;gt;, spre &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt; iar &amp;lt;code&amp;gt;5&amp;lt;/code&amp;gt; se votează pe sine, grupul determinat va fi format din elevii &amp;lt;code&amp;gt;2, 4 şi 5&amp;lt;/code&amp;gt;. Să observăm că şi elevii din grupurile &amp;lt;code&amp;gt;{2, 4} şi {5}&amp;lt;/code&amp;gt; îşi exercită votul în cadrul grupului dar aceste grupuri nu sunt maximale.&lt;br /&gt;
&lt;br /&gt;
= Cerința =&lt;br /&gt;
Scrieţi un program care, pe baza voturilor elevilor clasei, să determine un grup cu un număr maxim de elevi pentru care voturile primite de ei provin de la elevi aparţinând aceluiaşi grup.&lt;br /&gt;
&lt;br /&gt;
= Date de intrare =&lt;br /&gt;
Pe prima linie a fişierului &amp;lt;code&amp;gt;vot.in&amp;lt;/code&amp;gt; se găseşte un număr natural &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;, reprezentând numărul de elevi din clasa lui Andrei. Pe linia a doua se dau &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; numere naturale din mulţimea &amp;lt;code&amp;gt;{1, 2, …, n}&amp;lt;/code&amp;gt;, separate prin câte un spaţiu, reprezentând voturile elevilor, astfel: numărul  de pe pozitia &amp;lt;code&amp;gt;i&amp;lt;/code&amp;gt; indică pe cine a votat elevul &amp;lt;code&amp;gt;i&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= Date de ieșire =&lt;br /&gt;
Pe prima linie din fişierul &amp;lt;code&amp;gt;vot.out&amp;lt;/code&amp;gt; se găseşte un număr natural &amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt; reprezentând numărul de elevi din grupul determinat. Pe linia a doua se găsesc, în ordine crescătoare, cele &amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt; coduri ale elevilor din grup.&lt;br /&gt;
&lt;br /&gt;
= Restricții și precizări =&lt;br /&gt;
• &amp;lt;code&amp;gt;1&amp;lt; n ≤ 1000&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
• Este posibil ca un elev să se voteze pe sine.&lt;br /&gt;
&lt;br /&gt;
= Exemplu: =&lt;br /&gt;
&amp;lt;code&amp;gt;vot.in&amp;lt;/code&amp;gt;&lt;br /&gt;
 10&lt;br /&gt;
 10 3 3 1 1 5 1 1 7 9&lt;br /&gt;
&amp;lt;code&amp;gt;vot.out&amp;lt;/code&amp;gt;&lt;br /&gt;
 5&lt;br /&gt;
 1 3 7 9 10&lt;br /&gt;
&lt;br /&gt;
=== Explicație ===&lt;br /&gt;
Se observă că &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; îl votează pe &amp;lt;code&amp;gt;10&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt; se votează pe el însuşi, votul lui &amp;lt;code&amp;gt;7&amp;lt;/code&amp;gt; merge spre &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;, al lui &amp;lt;code&amp;gt;9&amp;lt;/code&amp;gt; – spre &amp;lt;code&amp;gt;7&amp;lt;/code&amp;gt; iar &amp;lt;code&amp;gt;10&amp;lt;/code&amp;gt; îl votează pe &amp;lt;code&amp;gt;9&amp;lt;/code&amp;gt;, deci toti elevii din acest grup primesc voturi din partea unor elevi ai grupului şi acesta este maximal cu proprietatea cerută.&amp;lt;syntaxhighlight lang=&amp;quot;python3&amp;quot;&amp;gt;&lt;br /&gt;
import numpy as np&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
    # Deschidem fisierul de intrare &amp;quot;vot.in&amp;quot; pentru citire si fisierul de iesire &amp;quot;vot.out&amp;quot; pentru scriere.&lt;br /&gt;
    fin = open(&amp;quot;vot.in&amp;quot;, &amp;quot;r&amp;quot;)&lt;br /&gt;
    fout = open(&amp;quot;vot.out&amp;quot;, &amp;quot;w&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    # Initializam array-uri pentru stocarea datelor&lt;br /&gt;
    numar_a = np.zeros(1001, dtype=int)&lt;br /&gt;
    numar_b = np.zeros(1001, dtype=int)&lt;br /&gt;
    numar_c = np.zeros(1001, dtype=int)&lt;br /&gt;
&lt;br /&gt;
    # Citim numarul &#039;n&#039; din prima linie a fisierului de intrare.&lt;br /&gt;
    numar_n = int(fin.readline())&lt;br /&gt;
&lt;br /&gt;
    # Citim o linie de numere intregi separate prin spatiu si le stocheaza in array-ul &#039;a&#039;.&lt;br /&gt;
    line = fin.readline().split()&lt;br /&gt;
    for i in range(1, numar_n + 1):&lt;br /&gt;
        # Converteste valorile citite din fisier in intregi si le stocheaza in &#039;a&#039;.&lt;br /&gt;
        numar_a[i] = int(line[i - 1])&lt;br /&gt;
        # Incrementam contor pentru fiecare valoare din &#039;a&#039; in array-ul &#039;b&#039;.&lt;br /&gt;
        numar_b[numar_a[i]] += 1&lt;br /&gt;
&lt;br /&gt;
    # Initializam pointeri si array suplimentar pentru a retine anumite valori.&lt;br /&gt;
    numar_p, numar_u = 1, 0&lt;br /&gt;
&lt;br /&gt;
    # Identificam valorile care nu apar in &#039;a&#039;.&lt;br /&gt;
    for i in range(1, numar_n + 1):&lt;br /&gt;
        if numar_b[i] == 0:&lt;br /&gt;
            numar_u += 1&lt;br /&gt;
            numar_c[numar_u] = i&lt;br /&gt;
&lt;br /&gt;
    # Eliminam anumitor elemente din &#039;a&#039; bazat pe contorul din &#039;b&#039;.&lt;br /&gt;
    while numar_p &amp;lt;= numar_u:&lt;br /&gt;
        j = numar_c[numar_p]&lt;br /&gt;
        if numar_a[j] &amp;gt; 0 and numar_b[j] == 0:&lt;br /&gt;
            numar_b[numar_a[j]] -= 1&lt;br /&gt;
            if numar_b[numar_a[j]] == 0:&lt;br /&gt;
                numar_u += 1&lt;br /&gt;
                numar_c[numar_u] = numar_a[j]&lt;br /&gt;
            numar_a[j] = 0&lt;br /&gt;
        numar_p += 1&lt;br /&gt;
&lt;br /&gt;
    # Scriem rezultatul in fisierul de iesire&lt;br /&gt;
    fout.write(str(numar_n - numar_u) + &amp;quot;\n&amp;quot;)&lt;br /&gt;
    for i in range(1, numar_n + 1):&lt;br /&gt;
        if numar_a[i] &amp;gt; 0:&lt;br /&gt;
            fout.write(str(i) + &amp;quot; &amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    # Inchidem fisierele de intrare si iesire.&lt;br /&gt;
    fin.close()&lt;br /&gt;
    fout.close()&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>VanceaGabriel</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=4260_-_Nr_X_Div_Imp&amp;diff=9459</id>
		<title>4260 - Nr X Div Imp</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=4260_-_Nr_X_Div_Imp&amp;diff=9459"/>
		<updated>2024-01-13T01:22:37Z</updated>

		<summary type="html">&lt;p&gt;VanceaGabriel: Pagină nouă: = Cerința = Folosind metoda Divide et Impera, scrieți funcția recursivă cu antetul  int NrXDivImp(int a[], int st, int dr, int x) care primind ca parametri un vector &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt; de numere întregi și trei numere întregi &amp;lt;code&amp;gt;st&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;dr&amp;lt;/code&amp;gt; și &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt;, returnează numărul de apariții ale numărului &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; în vectorul secvența &amp;lt;code&amp;gt;a[st], a[st+1], ..., a[dr]&amp;lt;/code&amp;gt;.  = Restricții și precizări =  * &amp;lt;code&amp;gt;st ≤ dr&amp;lt;/code&amp;gt; * Numele fun...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Cerința =&lt;br /&gt;
Folosind metoda Divide et Impera, scrieți funcția recursivă cu antetul&lt;br /&gt;
 int NrXDivImp(int a[], int st, int dr, int x)&lt;br /&gt;
care primind ca parametri un vector &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt; de numere întregi și trei numere întregi &amp;lt;code&amp;gt;st&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;dr&amp;lt;/code&amp;gt; și &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt;, returnează numărul de apariții ale numărului &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; în vectorul secvența &amp;lt;code&amp;gt;a[st], a[st+1], ..., a[dr]&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= Restricții și precizări =&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;st ≤ dr&amp;lt;/code&amp;gt;&lt;br /&gt;
* Numele funcției este &amp;lt;code&amp;gt;NrXDivImp&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Vectorul &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt; este indexat de la &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;&lt;br /&gt;
* Se recomandă utilizarea metodei Divide et Impera în rezolvarea problemei.&lt;br /&gt;
&lt;br /&gt;
= Exemplu: =&lt;br /&gt;
Dacă &amp;lt;code&amp;gt;a = (2,5,1,5,3,5,5,5,7,6)&amp;lt;/code&amp;gt;, atunci &amp;lt;code&amp;gt;NrXDivImp(a, 1, 6, 5) = 3&amp;lt;/code&amp;gt;, deoarece în secvența &amp;lt;code&amp;gt;2,5,1,5,3,5&amp;lt;/code&amp;gt; numărul &amp;lt;code&amp;gt;5&amp;lt;/code&amp;gt; apare de &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt; ori. De asemenea, &amp;lt;code&amp;gt;NrXDivImp(a, 9, 10, 5) = 0&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= Important =&lt;br /&gt;
Soluția propusă va conține doar funcția cerută. Introducerea în soluție a altor instrucțiuni poate duce la erori de compilare sau de execuție, care vor duce la depunctarea soluției.&amp;lt;syntaxhighlight lang=&amp;quot;python3&amp;quot;&amp;gt;&lt;br /&gt;
def NrXDivImp(numar_a, stanga, dreapta, numar_x):&lt;br /&gt;
    # Caz de bază: intervalul are un singur element&lt;br /&gt;
    if stanga == dreapta:&lt;br /&gt;
        return int(numar_a[stanga] == numar_x)&lt;br /&gt;
&lt;br /&gt;
    # Împărțim intervalul în două jumătăți&lt;br /&gt;
    mijloc = (stanga + dreapta) // 2&lt;br /&gt;
&lt;br /&gt;
    # Apelăm funcția pentru fiecare jumătate și adunăm rezultatele&lt;br /&gt;
    return (NrXDivImp(numar_a, stanga, mijloc, numar_x) +&lt;br /&gt;
            NrXDivImp(numar_a, mijloc + 1, dreapta, numar_x))&lt;br /&gt;
&lt;br /&gt;
# Punct de intrare în program&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    # Vectorul de numere&lt;br /&gt;
    numar_a = [0, 2, 5, 1, 5, 3, 5, 5, 5, 7, 6]&lt;br /&gt;
&lt;br /&gt;
    # Apelăm funcția pentru intervalul [1, 6] și [9, 10]&lt;br /&gt;
    rezultat1 = NrXDivImp(numar_a, 1, 6, 5)&lt;br /&gt;
    rezultat2 = NrXDivImp(numar_a, 9, 10, 5)&lt;br /&gt;
&lt;br /&gt;
    # Afișăm rezultatele&lt;br /&gt;
    print(f&#039;NrXDivImp(a, 1, 6, 5) = {rezultat1}&#039;)&lt;br /&gt;
    print(f&#039;NrXDivImp(a, 9, 10, 5) = {rezultat2}&#039;)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>VanceaGabriel</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=2979_-_Cartele_1&amp;diff=9458</id>
		<title>2979 - Cartele 1</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=2979_-_Cartele_1&amp;diff=9458"/>
		<updated>2024-01-12T23:14:08Z</updated>

		<summary type="html">&lt;p&gt;VanceaGabriel: nume variabile&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Într-o școală există un sistem de acces cu ajutorul cartelelor, conectat la un calculator și o imprimantă. Fiecare elev al școlii are câte o cartelă. Într-o zi, la utilizarea fiecărei cartele, sistemul imprimă următoarele informații pe hârtie, pe câte o linie, după regula următoare:&lt;br /&gt;
&lt;br /&gt;
- Caracterul &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt; dacă elevul este băiat sau caracterul &amp;lt;code&amp;gt;f&amp;lt;/code&amp;gt; dacă este fată. Caracterul va fi urmat de un spațiu;&lt;br /&gt;
&lt;br /&gt;
- Caracterul &amp;lt;code&amp;gt;i&amp;lt;/code&amp;gt; dacă elevul a intrat în școală sau caracterul &amp;lt;code&amp;gt;e&amp;lt;/code&amp;gt; dacă a ieșit din școală. De asemenea, acest caracter va fi urmat de un spațiu;&lt;br /&gt;
&lt;br /&gt;
- Momentul utilizării cartelei, exprimat prin oră, minute și secunde. Acestea vor fi reprezentate în cadrul liniei, exact în această ordine, prin trei numere naturale, separate între ele prin câte un spațiu.&lt;br /&gt;
&lt;br /&gt;
= Cerința =&lt;br /&gt;
Cunoscându-se toate cele &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt; linii imprimate într-o zi determinați:&lt;br /&gt;
&lt;br /&gt;
1. Câți băieți și câte fete sunt la școală după cele &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt; acțiuni imprimate de sistem.&lt;br /&gt;
&lt;br /&gt;
2. Care este numărul total de secunde în care, în școală, s-au aflat un număr egal, nenul, de fete și băieți, până în momentul utilizării ultimei cartele. Dacă nu există această situație se afișează &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
3. Care este numărul maxim de secunde în care, în școală, până în momentul utilizării ultimei cartele, s-au aflat neîntrerupt un număr impar de băieți. Dacă nu există o astfel de situație se afișează &amp;lt;code&amp;gt;0&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;cartele.in&amp;lt;/code&amp;gt; conține pe prima linie un număr natural &amp;lt;code&amp;gt;C&amp;lt;/code&amp;gt; reprezentând numărul cerinței care poate avea valorile &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt; sau &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt;, pe a doua linie numărul natural &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt;, iar pe următoarele &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt; linii informațiile imprimate de sistem sub forma descrisă în enunț, în ordinea strict crescătoare a momentului folosirii cartelei.&lt;br /&gt;
&lt;br /&gt;
= Date de ieșire =&lt;br /&gt;
Dacă &amp;lt;code&amp;gt;C = 1&amp;lt;/code&amp;gt;, atunci fișierul de ieșire &amp;lt;code&amp;gt;cartele.out&amp;lt;/code&amp;gt; va conține, în această ordine, separate printr-un spațiu, numărul de băieți și numărul de fete determinat conform cerinței 1.&lt;br /&gt;
&lt;br /&gt;
Dacă &amp;lt;code&amp;gt;C = 2&amp;lt;/code&amp;gt; sau &amp;lt;code&amp;gt;C = 3&amp;lt;/code&amp;gt;, atunci fișierul de ieșire &amp;lt;code&amp;gt;cartele.out&amp;lt;/code&amp;gt; va conține pe prima linie un singur număr natural ce reprezintă rezultatul determinat conform cerinței.&lt;br /&gt;
&lt;br /&gt;
= Restricții și precizări =&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;1 ≤ N ≤ 10.000&amp;lt;/code&amp;gt;&lt;br /&gt;
* La momentul utilizării primei cartele, în școală nu se află niciun elev&lt;br /&gt;
* Sistemul de acces nu permite folosirea simultană a două cartele&lt;br /&gt;
* Pentru orice linie imprimată de sistem &amp;lt;code&amp;gt;0 ≤ ora ≤ 23&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;0 ≤ minute ≤ 59&amp;lt;/code&amp;gt; și &amp;lt;code&amp;gt;0 ≤ secunde ≤ 59&amp;lt;/code&amp;gt;&lt;br /&gt;
* Pe fiecare linie a fișierului de intrare, după ultimul număr, reprezentând secundele, nu există spațiu.&lt;br /&gt;
* Pentru rezolvarea corectă a primei cerințe se acordă &amp;lt;code&amp;gt;20&amp;lt;/code&amp;gt; de puncte, pentru rezolvarea corectă a celei de-a doua cerințe se acordă &amp;lt;code&amp;gt;30&amp;lt;/code&amp;gt; de puncte iar pentru rezolvarea corectă a celei de-a treia cerințe se acordă &amp;lt;code&amp;gt;40&amp;lt;/code&amp;gt; de puncte.&lt;br /&gt;
* În concurs s-au acordat &amp;lt;code&amp;gt;10&amp;lt;/code&amp;gt; puncte din oficiu. Aici se acordă pentru exemplele din enunț.&lt;br /&gt;
&lt;br /&gt;
= Exemplul 1: =&lt;br /&gt;
&amp;lt;code&amp;gt;cartele.in&amp;lt;/code&amp;gt;&lt;br /&gt;
 1&lt;br /&gt;
 3&lt;br /&gt;
 b i 0 0 24&lt;br /&gt;
 f i 0 0 26&lt;br /&gt;
 b e 0 0 29&lt;br /&gt;
&amp;lt;code&amp;gt;cartele.out&amp;lt;/code&amp;gt;&lt;br /&gt;
 0 1&lt;br /&gt;
&lt;br /&gt;
=== Explicație ===&lt;br /&gt;
Un băiat a intrat la momentul &amp;lt;code&amp;gt;0 0 24&amp;lt;/code&amp;gt; (adică ora &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt;, minutul &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; și secunda &amp;lt;code&amp;gt;24&amp;lt;/code&amp;gt;) și ieșit la momentul &amp;lt;code&amp;gt;0 0 29&amp;lt;/code&amp;gt;. O fată a intrat la momentul &amp;lt;code&amp;gt;0 0 26&amp;lt;/code&amp;gt;. După cele &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt; acțiuni, în școală a rămas o fată.&lt;br /&gt;
&lt;br /&gt;
= Exemplul 2: =&lt;br /&gt;
&amp;lt;code&amp;gt;cartele.in&amp;lt;/code&amp;gt;&lt;br /&gt;
 2&lt;br /&gt;
 3&lt;br /&gt;
 b i 0 0 24&lt;br /&gt;
 f i 0 0 26&lt;br /&gt;
 b e 0 0 29&lt;br /&gt;
&amp;lt;code&amp;gt;cartele.out&amp;lt;/code&amp;gt;&lt;br /&gt;
 3&lt;br /&gt;
&lt;br /&gt;
=== Explicație ===&lt;br /&gt;
Între momentul &amp;lt;code&amp;gt;0 0 24&amp;lt;/code&amp;gt; și &amp;lt;code&amp;gt;0 0 26&amp;lt;/code&amp;gt; în școală este doar un băiat. Între momentul &amp;lt;code&amp;gt;0 0 26&amp;lt;/code&amp;gt; și &amp;lt;code&amp;gt;0 0 29&amp;lt;/code&amp;gt; în școală se află un băiat și o fată adică un număr nenul egal de fete și băieți. Deci, numărul de secunde determinat este &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= Exemplul 3: =&lt;br /&gt;
&amp;lt;code&amp;gt;cartele.in&amp;lt;/code&amp;gt;&lt;br /&gt;
 2&lt;br /&gt;
 8&lt;br /&gt;
 f i 8 19 10&lt;br /&gt;
 b i 8 19 12&lt;br /&gt;
 b e 8 19 15&lt;br /&gt;
 b i 8 20 0&lt;br /&gt;
 b e 8 20 4&lt;br /&gt;
 b i 8 20 10&lt;br /&gt;
 b i 8 20 50&lt;br /&gt;
 b i 8 20 51&lt;br /&gt;
&amp;lt;code&amp;gt;cartele.out&amp;lt;/code&amp;gt;&lt;br /&gt;
 47&lt;br /&gt;
&lt;br /&gt;
=== Explicație ===&lt;br /&gt;
Între momentele &amp;lt;code&amp;gt;8 19 12&amp;lt;/code&amp;gt; și &amp;lt;code&amp;gt;8 19 15&amp;lt;/code&amp;gt; în școală se află &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; băiat și &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; fată, deci durata este &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt; secunde.&lt;br /&gt;
&lt;br /&gt;
Între momentele &amp;lt;code&amp;gt;8 20 0&amp;lt;/code&amp;gt; și &amp;lt;code&amp;gt;8 20 4&amp;lt;/code&amp;gt; în școală se află &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; băiat și &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; fată, deci durata este &amp;lt;code&amp;gt;4&amp;lt;/code&amp;gt; secunde.&lt;br /&gt;
&lt;br /&gt;
Între momentele &amp;lt;code&amp;gt;8 20 10&amp;lt;/code&amp;gt; și &amp;lt;code&amp;gt;8 20 50&amp;lt;/code&amp;gt; în școală se află &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; băiat și &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; fată, deci durata este &amp;lt;code&amp;gt;40&amp;lt;/code&amp;gt; de secunde.&lt;br /&gt;
&lt;br /&gt;
Durata totală este &amp;lt;code&amp;gt;3 + 4 + 40 = 47&amp;lt;/code&amp;gt; de secunde.&lt;br /&gt;
&lt;br /&gt;
= Exemplul 4: =&lt;br /&gt;
&amp;lt;code&amp;gt;cartele.in&amp;lt;/code&amp;gt;&lt;br /&gt;
 3&lt;br /&gt;
 9&lt;br /&gt;
 f i 8 19 10&lt;br /&gt;
 b i 8 19 12&lt;br /&gt;
 f e 8 19 13&lt;br /&gt;
 b e 8 19 15&lt;br /&gt;
 b i 8 20 0&lt;br /&gt;
 b i 8 20 1&lt;br /&gt;
 b i 8 20 10&lt;br /&gt;
 b i 8 20 12&lt;br /&gt;
 b i 8 20 13&lt;br /&gt;
&amp;lt;code&amp;gt;cartele.out&amp;lt;/code&amp;gt;&lt;br /&gt;
 3&lt;br /&gt;
&lt;br /&gt;
=== Explicație ===&lt;br /&gt;
Între momentele &amp;lt;code&amp;gt;8 19 12&amp;lt;/code&amp;gt; și &amp;lt;code&amp;gt;8 19 15&amp;lt;/code&amp;gt; în școală se află &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; băiat, deci durata este &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt; secunde.&lt;br /&gt;
&lt;br /&gt;
Între momentele &amp;lt;code&amp;gt;8 20 0&amp;lt;/code&amp;gt; și &amp;lt;code&amp;gt;8 20 1&amp;lt;/code&amp;gt; în școală se află &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; băiat, deci durata este &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; secundă.&lt;br /&gt;
&lt;br /&gt;
Între momentele &amp;lt;code&amp;gt;8 20 10&amp;lt;/code&amp;gt; și &amp;lt;code&amp;gt;8 20 12&amp;lt;/code&amp;gt; în școală se află &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt; băieți, deci durata este &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt; secunde.&lt;br /&gt;
&lt;br /&gt;
Durata maximă cerută este de &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt; secunde.&amp;lt;syntaxhighlight lang=&amp;quot;python3&amp;quot;&amp;gt;&lt;br /&gt;
def main():&lt;br /&gt;
    fin = open(&amp;quot;cartele.in&amp;quot;, &amp;quot;r&amp;quot;)&lt;br /&gt;
    fout = open(&amp;quot;cartele.out&amp;quot;, &amp;quot;w&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    # Citim valorile numerelor C și N din fișierul de intrare&lt;br /&gt;
    numar_C = int(fin.readline().strip())&lt;br /&gt;
    numar_N = int(fin.readline().strip())&lt;br /&gt;
&lt;br /&gt;
    baieti_in_scoala = 0&lt;br /&gt;
    fete_in_scoala = 0&lt;br /&gt;
    timp_egal_fete_baieti = 0&lt;br /&gt;
    timp_maxim_baieti = 0&lt;br /&gt;
    ultimul_timp_inregistrat = 0&lt;br /&gt;
&lt;br /&gt;
    for i in range(numar_N):&lt;br /&gt;
        # Citim o linie și extragem informațiile relevante&lt;br /&gt;
        line = fin.readline().split()&lt;br /&gt;
        gen, actiune, ora, minut, secunde = line[0], line[1], int(line[2]), int(line[3]), int(line[4])&lt;br /&gt;
&lt;br /&gt;
        timp_initial = ora * 3600 + minut * 60 + secunde&lt;br /&gt;
&lt;br /&gt;
        # Actualizăm numărul de băieți și fete în școală în funcție de acțiunea curentă&lt;br /&gt;
        if gen == &#039;b&#039;:&lt;br /&gt;
            baieti_in_scoala += 1 if actiune == &#039;i&#039; else -1&lt;br /&gt;
        else:&lt;br /&gt;
            fete_in_scoala += 1 if actiune == &#039;i&#039; else -1&lt;br /&gt;
&lt;br /&gt;
        # Verificăm dacă numărul de băieți și fete este egal și calculăm timpul&lt;br /&gt;
        # Verificăm timpul maxim cu un număr impar de băieți în școală&lt;br /&gt;
        if baieti_in_scoala == fete_in_scoala and fete_in_scoala &amp;gt; 0:&lt;br /&gt;
            timp_egal_fete_baieti += timp_initial - ultimul_timp_inregistrat&lt;br /&gt;
&lt;br /&gt;
        if baieti_in_scoala % 2 == 1:&lt;br /&gt;
            timp_maxim_baieti = max(timp_maxim_baieti, timp_initial - ultimul_timp_inregistrat)&lt;br /&gt;
&lt;br /&gt;
        # Actualizăm ultimul timp înregistrat&lt;br /&gt;
        ultimul_timp_inregistrat = timp_initial&lt;br /&gt;
&lt;br /&gt;
    # Scrie rezultatele în funcție de tipul cerinței&lt;br /&gt;
    if numar_C == 1:&lt;br /&gt;
        fout.write(f&amp;quot;{baieti_in_scoala} {fete_in_scoala}&amp;quot;)&lt;br /&gt;
    elif numar_C == 2:&lt;br /&gt;
        fout.write(str(timp_egal_fete_baieti))&lt;br /&gt;
    elif numar_C == 3:&lt;br /&gt;
        fout.write(str(timp_maxim_baieti))&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>VanceaGabriel</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=4287_-_Veverita_4&amp;diff=9457</id>
		<title>4287 - Veverita 4</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=4287_-_Veverita_4&amp;diff=9457"/>
		<updated>2024-01-12T22:28:09Z</updated>

		<summary type="html">&lt;p&gt;VanceaGabriel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
În parcul orașului există &amp;lt;code&amp;gt;4&amp;lt;/code&amp;gt; rânduri de câte &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; copaci perfect aliniați. Rândurile sunt notate A, B, C și D, iar copacii de pe fiecare rând sunt numerotați de la &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; la &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;, ca în imaginea de mai jos:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
O veveriță jucăușă sare prin copaci astfel:&lt;br /&gt;
&lt;br /&gt;
* pornește dintr-un copac numerotat cu &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;;&lt;br /&gt;
* la fiecare pas sare dintr-un copac numerotat cu &amp;lt;code&amp;gt;i&amp;lt;/code&amp;gt; într-un copac numerotat cu &amp;lt;code&amp;gt;i+1&amp;lt;/code&amp;gt;. Dacă se află într-un copac de pe rândul A, va sări în copacul de pe rândul B, dacă se află într-un copac de pe rândul D, va sări în copacul de pe rândul C, dacă se află în copacul de pe rândul B, va sări în copacul de pe rândul A sau în copacul de pe rândul C, iar dacă se află în copacul de pe rândul C, va sări în copacul de pe rândul B sau în copacul de pe rândul D;&lt;br /&gt;
* se oprește într-unul dintre copacii numerotați cu &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= Cerința =&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python3&amp;quot;&amp;gt;&lt;br /&gt;
Constanta_mod = 666013&lt;br /&gt;
# Constanta pentru operatia modulo&lt;br /&gt;
&lt;br /&gt;
numar_n = 0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Definim functie pentru inmultirea matricei&lt;br /&gt;
def inmultire_matrice(numar_a, numar_b):&lt;br /&gt;
    raspuns = [[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]]&lt;br /&gt;
    for i in range(4):&lt;br /&gt;
        for j in range(4):&lt;br /&gt;
            for k in range(4):&lt;br /&gt;
                raspuns[i][j] += numar_a[i][k] * numar_b[k][j]&lt;br /&gt;
            if numar_n &amp;gt; 1000:&lt;br /&gt;
                # Aplicam operatia modulo daca n &amp;gt; 1000&lt;br /&gt;
                raspuns[i][j] %= Constanta_mod&lt;br /&gt;
    return raspuns&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
    # Deschidem fisierele input si output&lt;br /&gt;
    fin = open(&amp;quot;veverita4.in&amp;quot;, &amp;quot;r&amp;quot;)&lt;br /&gt;
    fout = open(&amp;quot;veverita4.out&amp;quot;, &amp;quot;w&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    # Citim valoarea numarului &amp;quot;n&amp;quot; din fisierul input&lt;br /&gt;
    numar_n = int(fin.readline())&lt;br /&gt;
&lt;br /&gt;
    # Definim matricea initiala &amp;quot;matrice&amp;quot;&lt;br /&gt;
    matrice = [[0, 1, 0, 0], [1, 0, 1, 0], [0, 1, 0, 1], [0, 0, 1, 0]]&lt;br /&gt;
&lt;br /&gt;
    # Initializam rezultatul matricei &amp;quot;matrice_rezultata&amp;quot; ca matrice de identitate&lt;br /&gt;
    matrice_rezultata = [[1, 0, 0, 0], [0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1]]&lt;br /&gt;
&lt;br /&gt;
    # Efectuam exponentierea matricei folosind metoda exponentierei binare&lt;br /&gt;
    exponent = numar_n - 1&lt;br /&gt;
    while exponent:&lt;br /&gt;
        if exponent % 2 == 1:&lt;br /&gt;
            # Inmultim matricea_rezultata cu matricea&lt;br /&gt;
            matrice_rezultata = inmultire_matrice(matrice_rezultata, matrice)&lt;br /&gt;
            # Ridicam matricea la puterea 2&lt;br /&gt;
        matrice = inmultire_matrice(matrice, matrice)&lt;br /&gt;
        exponent = int(exponent / 2)&lt;br /&gt;
&lt;br /&gt;
        # Calculam rezultatul final apeland elementele din &amp;quot;matrice_rezultata&amp;quot;&lt;br /&gt;
    raspuns = 0&lt;br /&gt;
    for i in range(4):&lt;br /&gt;
        for j in range(4):&lt;br /&gt;
            raspuns += matrice_rezultata[i][j]&lt;br /&gt;
&lt;br /&gt;
            # Aplicam operatia modulo daca n &amp;gt; 1000&lt;br /&gt;
    if numar_n &amp;gt; 1000:&lt;br /&gt;
        raspuns %= Constanta_mod&lt;br /&gt;
&lt;br /&gt;
        # Scriem rezultatul final in fisierul output si inchidem fisierele&lt;br /&gt;
    fout.write(str(raspuns))&lt;br /&gt;
&lt;br /&gt;
    fin.close()&lt;br /&gt;
    fout.close()&lt;br /&gt;
&lt;br /&gt;
    # Verificam daca scriptul este rulat direct&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    # Apelam functia main()&lt;br /&gt;
    main()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Aflați numărul &amp;lt;code&amp;gt;M&amp;lt;/code&amp;gt; de modalități în care se poate deplasa veverița, respectând regulile de mai sus. Dacă &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; este mai mic sau egal cu &amp;lt;code&amp;gt;1000&amp;lt;/code&amp;gt;, atunci veți afișa chiar numărul &amp;lt;code&amp;gt;M&amp;lt;/code&amp;gt;, iar dacă &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; este mai mare decât &amp;lt;code&amp;gt;1000&amp;lt;/code&amp;gt;, veți afișa restul împărțirii lui &amp;lt;code&amp;gt;M&amp;lt;/code&amp;gt; la &amp;lt;code&amp;gt;666013&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;veverita4.in&amp;lt;/code&amp;gt; conține pe prima linie numărul &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= Date de ieșire =&lt;br /&gt;
Fișierul de ieșire &amp;lt;code&amp;gt;veverita4.out&amp;lt;/code&amp;gt; va conține pe prima linie valoarea cerută.&lt;br /&gt;
&lt;br /&gt;
= Restricții și precizări =&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;1 ≤ n ≤ 109&amp;lt;/code&amp;gt;&lt;br /&gt;
* pentru 60% din teste, &amp;lt;code&amp;gt;n ≤ 1000&amp;lt;/code&amp;gt;;&lt;br /&gt;
* pentru alte 40% din teste, &amp;lt;code&amp;gt;n ≤ 109&amp;lt;/code&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
= Exemplu =&lt;br /&gt;
&amp;lt;code&amp;gt;veverita4.in&amp;lt;/code&amp;gt;&lt;br /&gt;
 3&lt;br /&gt;
&amp;lt;code&amp;gt;veverita4.out&amp;lt;/code&amp;gt;&lt;br /&gt;
 10&lt;/div&gt;</summary>
		<author><name>VanceaGabriel</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=3646_-_Zoom_poza&amp;diff=9456</id>
		<title>3646 - Zoom poza</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=3646_-_Zoom_poza&amp;diff=9456"/>
		<updated>2024-01-12T22:01:13Z</updated>

		<summary type="html">&lt;p&gt;VanceaGabriel: nume variabile&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Cerința =&lt;br /&gt;
În orașul Detroit s-a produs o spargere la un magazin de bijuterii. Infractorii au fugit de la locul faptei, iar polițiștii au reusit să facă rost doar de o poză neclară cu infractorii.&lt;br /&gt;
&lt;br /&gt;
Cu ajutorul inteligenței artificiale reușesc să mărească acea imagine pentru a găsi niște detalii pentru a-i ajuta la rezolvarea cazului. Fii de partea binelui și ajută-i pe polițiști să rezolve acest caz!&lt;br /&gt;
&lt;br /&gt;
Poza este reprezentată printr-o matrice cu &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; linii și &amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt; coloane, alcătuită din numere naturale. Polițiștii te roagă să-i ajuți, răspunzând la următoarele întrebări:&lt;br /&gt;
&lt;br /&gt;
1) Dându-se o matrice reprezentând poza și un coeficient de mărire &amp;lt;code&amp;gt;z&amp;lt;/code&amp;gt;, construiește o altă matrice care să reprezinte poza mărită de &amp;lt;code&amp;gt;z&amp;lt;/code&amp;gt; ori.&lt;br /&gt;
&lt;br /&gt;
2) Dându-se o matrice reprezentând poza, coeficientul de mărire &amp;lt;code&amp;gt;z&amp;lt;/code&amp;gt; și un șir perechi de coordonate din poza mărită, determină pentru fiecare pereche de coordonate valoarea din poza mărită.&lt;br /&gt;
&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Fișierul de intrare &amp;lt;code&amp;gt;zoom_poza.in&amp;lt;/code&amp;gt; conține pe prima linie numărul &amp;lt;code&amp;gt;c&amp;lt;/code&amp;gt;, reprezentând întrebarea la care trebuie să răspunzi.&lt;br /&gt;
&lt;br /&gt;
Pentru &amp;lt;code&amp;gt;c=1&amp;lt;/code&amp;gt; pe a doua linie se află numărul de linii &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; și numărul de coloane &amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt;, pe a treia linie factorul de al imaginii &amp;lt;code&amp;gt;z&amp;lt;/code&amp;gt;, iar pe următoarele &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; linii și &amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt; coloane poza sub forma unei matrici.&lt;br /&gt;
&lt;br /&gt;
Pentru &amp;lt;code&amp;gt;c=2&amp;lt;/code&amp;gt; pe a doua linie se află numărul de linii &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; și numărul de coloane &amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt;, pe a treia linie factorul de al imaginii &amp;lt;code&amp;gt;z&amp;lt;/code&amp;gt;, iar pe următoarele &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; linii și &amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt; coloane poza sub forma unei matrici. Pe a patra linie se află &amp;lt;code&amp;gt;k&amp;lt;/code&amp;gt; – numărul de perchi de coordonate, iar pe următoarele &amp;lt;code&amp;gt;k&amp;lt;/code&amp;gt; linii câte două numere &amp;lt;code&amp;gt;l1 c1&amp;lt;/code&amp;gt;, reprezentând numărul de ordine al liniei, respectiv al coloanei pentru elementul cerut din matricea finală.&lt;br /&gt;
&lt;br /&gt;
== Date de ieșire ==&lt;br /&gt;
Fișierul de ieșire &amp;lt;code&amp;gt;zoom_poza.out&amp;lt;/code&amp;gt; va conține:&lt;br /&gt;
&lt;br /&gt;
* pentru &amp;lt;code&amp;gt;c=1&amp;lt;/code&amp;gt; imaginea mărită de către program, în dimensiune de &amp;lt;code&amp;gt;n*z&amp;lt;/code&amp;gt; linii și &amp;lt;code&amp;gt;m*z&amp;lt;/code&amp;gt; coloane.&lt;br /&gt;
* pentru &amp;lt;code&amp;gt;c=2&amp;lt;/code&amp;gt; se vor afișa numerele aflate pe pozițiile date în poza mărită, separate printr-un spațiu.&lt;br /&gt;
&lt;br /&gt;
=== Restricții și precizări ===&lt;br /&gt;
&lt;br /&gt;
* Pentru &amp;lt;code&amp;gt;c=1&amp;lt;/code&amp;gt;:&lt;br /&gt;
** &amp;lt;code&amp;gt;1 ≤ n ≤ m ≤ 70&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;1 ≤ a[i][j] ≤ 100.000&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;1 ≤ z ≤ 10&amp;lt;/code&amp;gt;&lt;br /&gt;
** Pentru teste în valoare de 40 de puncte, &amp;lt;code&amp;gt;c=1&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Pentru &amp;lt;code&amp;gt;c=2&amp;lt;/code&amp;gt;:&lt;br /&gt;
** Pentru 20 de puncte:&lt;br /&gt;
*** &amp;lt;code&amp;gt;1 ≤ n ≤ m ≤ 70&amp;lt;/code&amp;gt;&lt;br /&gt;
*** &amp;lt;code&amp;gt;1 ≤ a[i][j] ≤ 100.000&amp;lt;/code&amp;gt;&lt;br /&gt;
*** &amp;lt;code&amp;gt;1 ≤ z ≤ 10&amp;lt;/code&amp;gt;&lt;br /&gt;
*** &amp;lt;code&amp;gt;1 ≤ k ≤ 1000&amp;lt;/code&amp;gt;&lt;br /&gt;
*** &amp;lt;code&amp;gt;1 ≤ l1 ≤ c1 ≤ 2500&amp;lt;/code&amp;gt;&lt;br /&gt;
** Pentru 60 de puncte:&lt;br /&gt;
*** &amp;lt;code&amp;gt;1 ≤ n ≤ m ≤ 50&amp;lt;/code&amp;gt;&lt;br /&gt;
*** &amp;lt;code&amp;gt;1 ≤ a[i][j] ≤ 9•1018&amp;lt;/code&amp;gt;&lt;br /&gt;
*** &amp;lt;code&amp;gt;1 ≤ z ≤ 9•1014&amp;lt;/code&amp;gt;&lt;br /&gt;
*** &amp;lt;code&amp;gt;1 ≤ k ≤ 1.000&amp;lt;/code&amp;gt;&lt;br /&gt;
*** &amp;lt;code&amp;gt;1 ≤ l1 ≤ c1 ≤ 9•1018&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Se recomandă evitarea rezolvării din afișare!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python3&amp;quot;&amp;gt;&lt;br /&gt;
import numpy as np&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
    fin = open(&amp;quot;zoom_poza.in&amp;quot;, &amp;quot;r&amp;quot;)&lt;br /&gt;
    fout = open(&amp;quot;zoom_poza.out&amp;quot;, &amp;quot;w&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    numar_c = int(fin.readline())&lt;br /&gt;
&lt;br /&gt;
    if numar_c == 1:&lt;br /&gt;
        caz_1(fin, fout)&lt;br /&gt;
    elif numar_c == 2:&lt;br /&gt;
        caz_2(fin, fout)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def caz_1(fin, fout):&lt;br /&gt;
    numar_n, numar_m = map(int, fin.readline().split())  # citim numerele n, m&lt;br /&gt;
    numar_z = int(fin.readline())  # citim numar z&lt;br /&gt;
    numar_a = np.zeros((numar_n, numar_m), dtype=int)&lt;br /&gt;
    for i in range(numar_n):&lt;br /&gt;
        line = fin.readline().split()&lt;br /&gt;
        for j in range(numar_m):&lt;br /&gt;
            numar_a[i][j] = int(line[j])  # citim matricea initiala&lt;br /&gt;
    numar_b = np.zeros((numar_n * numar_z, numar_m * numar_z), dtype=int)&lt;br /&gt;
    for i in range(numar_n):&lt;br /&gt;
        constanta = 0&lt;br /&gt;
        for j in range(numar_m):&lt;br /&gt;
            for numar_x in range(numar_z):&lt;br /&gt;
                for numar_y in range(numar_z):&lt;br /&gt;
                    numar_b[i * numar_z + numar_y][&lt;br /&gt;
                        constanta * numar_z + numar_x&lt;br /&gt;
                    ] = numar_a[i][j]&lt;br /&gt;
                    # se creeaza matricea marita de z ori&lt;br /&gt;
            constanta += 1&lt;br /&gt;
    for i in range(0, numar_z * numar_n):&lt;br /&gt;
        for j in range(0, numar_z * numar_m):&lt;br /&gt;
            fout.write(str(numar_b[i][j]) + &amp;quot; &amp;quot;)  # scriem in fisier matricea rezultata&lt;br /&gt;
        fout.write(&amp;quot;\n&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def caz_2(fin, fout):&lt;br /&gt;
    numar_n, numar_m = map(int, fin.readline().split())  # citim numerele n, m&lt;br /&gt;
    numar_z = int(fin.readline())  # citim z&lt;br /&gt;
    numar_a = np.zeros((numar_n, numar_m), dtype=int)&lt;br /&gt;
    for i in range(numar_n):&lt;br /&gt;
        line = fin.readline().split()&lt;br /&gt;
        for j in range(numar_m):&lt;br /&gt;
            numar_a[i][j] = int(line[j])  # citim matricea initiala&lt;br /&gt;
    numar_k = int(fin.readline())  # citim numarul k&lt;br /&gt;
    for i in range(numar_k):&lt;br /&gt;
        linia1, coloana1 = map(int, fin.readline().split())  # citim linia 1, coloana 1&lt;br /&gt;
        line = linia1 / numar_z&lt;br /&gt;
        if linia1 % numar_z != 0:&lt;br /&gt;
            line += 1&lt;br /&gt;
        column = coloana1 / numar_z&lt;br /&gt;
        if coloana1 % numar_z != 0:&lt;br /&gt;
            column += 1&lt;br /&gt;
        fout.write(&lt;br /&gt;
            str(numar_a[int(line - 1)][int(column - 1)]) + &amp;quot; &amp;quot;&lt;br /&gt;
        )  # scriem in fisier valoarea de&lt;br /&gt;
        # pe pozitia ceruta&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>VanceaGabriel</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=2979_-_Cartele_1&amp;diff=9455</id>
		<title>2979 - Cartele 1</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=2979_-_Cartele_1&amp;diff=9455"/>
		<updated>2024-01-12T20:47:15Z</updated>

		<summary type="html">&lt;p&gt;VanceaGabriel: Pagină nouă: Într-o școală există un sistem de acces cu ajutorul cartelelor, conectat la un calculator și o imprimantă. Fiecare elev al școlii are câte o cartelă. Într-o zi, la utilizarea fiecărei cartele, sistemul imprimă următoarele informații pe hârtie, pe câte o linie, după regula următoare:  - Caracterul &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt; dacă elevul este băiat sau caracterul &amp;lt;code&amp;gt;f&amp;lt;/code&amp;gt; dacă este fată. Caracterul va fi urmat de un spațiu;  - Caracterul &amp;lt;code&amp;gt;i&amp;lt;/code&amp;gt; dacă ele...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Într-o școală există un sistem de acces cu ajutorul cartelelor, conectat la un calculator și o imprimantă. Fiecare elev al școlii are câte o cartelă. Într-o zi, la utilizarea fiecărei cartele, sistemul imprimă următoarele informații pe hârtie, pe câte o linie, după regula următoare:&lt;br /&gt;
&lt;br /&gt;
- Caracterul &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt; dacă elevul este băiat sau caracterul &amp;lt;code&amp;gt;f&amp;lt;/code&amp;gt; dacă este fată. Caracterul va fi urmat de un spațiu;&lt;br /&gt;
&lt;br /&gt;
- Caracterul &amp;lt;code&amp;gt;i&amp;lt;/code&amp;gt; dacă elevul a intrat în școală sau caracterul &amp;lt;code&amp;gt;e&amp;lt;/code&amp;gt; dacă a ieșit din școală. De asemenea, acest caracter va fi urmat de un spațiu;&lt;br /&gt;
&lt;br /&gt;
- Momentul utilizării cartelei, exprimat prin oră, minute și secunde. Acestea vor fi reprezentate în cadrul liniei, exact în această ordine, prin trei numere naturale, separate între ele prin câte un spațiu.&lt;br /&gt;
&lt;br /&gt;
= Cerința =&lt;br /&gt;
Cunoscându-se toate cele &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt; linii imprimate într-o zi determinați:&lt;br /&gt;
&lt;br /&gt;
1. Câți băieți și câte fete sunt la școală după cele &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt; acțiuni imprimate de sistem.&lt;br /&gt;
&lt;br /&gt;
2. Care este numărul total de secunde în care, în școală, s-au aflat un număr egal, nenul, de fete și băieți, până în momentul utilizării ultimei cartele. Dacă nu există această situație se afișează &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
3. Care este numărul maxim de secunde în care, în școală, până în momentul utilizării ultimei cartele, s-au aflat neîntrerupt un număr impar de băieți. Dacă nu există o astfel de situație se afișează &amp;lt;code&amp;gt;0&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;cartele.in&amp;lt;/code&amp;gt; conține pe prima linie un număr natural &amp;lt;code&amp;gt;C&amp;lt;/code&amp;gt; reprezentând numărul cerinței care poate avea valorile &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt; sau &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt;, pe a doua linie numărul natural &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt;, iar pe următoarele &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt; linii informațiile imprimate de sistem sub forma descrisă în enunț, în ordinea strict crescătoare a momentului folosirii cartelei.&lt;br /&gt;
&lt;br /&gt;
= Date de ieșire =&lt;br /&gt;
Dacă &amp;lt;code&amp;gt;C = 1&amp;lt;/code&amp;gt;, atunci fișierul de ieșire &amp;lt;code&amp;gt;cartele.out&amp;lt;/code&amp;gt; va conține, în această ordine, separate printr-un spațiu, numărul de băieți și numărul de fete determinat conform cerinței 1.&lt;br /&gt;
&lt;br /&gt;
Dacă &amp;lt;code&amp;gt;C = 2&amp;lt;/code&amp;gt; sau &amp;lt;code&amp;gt;C = 3&amp;lt;/code&amp;gt;, atunci fișierul de ieșire &amp;lt;code&amp;gt;cartele.out&amp;lt;/code&amp;gt; va conține pe prima linie un singur număr natural ce reprezintă rezultatul determinat conform cerinței.&lt;br /&gt;
&lt;br /&gt;
= Restricții și precizări =&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;1 ≤ N ≤ 10.000&amp;lt;/code&amp;gt;&lt;br /&gt;
* La momentul utilizării primei cartele, în școală nu se află niciun elev&lt;br /&gt;
* Sistemul de acces nu permite folosirea simultană a două cartele&lt;br /&gt;
* Pentru orice linie imprimată de sistem &amp;lt;code&amp;gt;0 ≤ ora ≤ 23&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;0 ≤ minute ≤ 59&amp;lt;/code&amp;gt; și &amp;lt;code&amp;gt;0 ≤ secunde ≤ 59&amp;lt;/code&amp;gt;&lt;br /&gt;
* Pe fiecare linie a fișierului de intrare, după ultimul număr, reprezentând secundele, nu există spațiu.&lt;br /&gt;
* Pentru rezolvarea corectă a primei cerințe se acordă &amp;lt;code&amp;gt;20&amp;lt;/code&amp;gt; de puncte, pentru rezolvarea corectă a celei de-a doua cerințe se acordă &amp;lt;code&amp;gt;30&amp;lt;/code&amp;gt; de puncte iar pentru rezolvarea corectă a celei de-a treia cerințe se acordă &amp;lt;code&amp;gt;40&amp;lt;/code&amp;gt; de puncte.&lt;br /&gt;
* În concurs s-au acordat &amp;lt;code&amp;gt;10&amp;lt;/code&amp;gt; puncte din oficiu. Aici se acordă pentru exemplele din enunț.&lt;br /&gt;
&lt;br /&gt;
= Exemplul 1: =&lt;br /&gt;
&amp;lt;code&amp;gt;cartele.in&amp;lt;/code&amp;gt;&lt;br /&gt;
 1&lt;br /&gt;
 3&lt;br /&gt;
 b i 0 0 24&lt;br /&gt;
 f i 0 0 26&lt;br /&gt;
 b e 0 0 29&lt;br /&gt;
&amp;lt;code&amp;gt;cartele.out&amp;lt;/code&amp;gt;&lt;br /&gt;
 0 1&lt;br /&gt;
&lt;br /&gt;
=== Explicație ===&lt;br /&gt;
Un băiat a intrat la momentul &amp;lt;code&amp;gt;0 0 24&amp;lt;/code&amp;gt; (adică ora &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt;, minutul &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; și secunda &amp;lt;code&amp;gt;24&amp;lt;/code&amp;gt;) și ieșit la momentul &amp;lt;code&amp;gt;0 0 29&amp;lt;/code&amp;gt;. O fată a intrat la momentul &amp;lt;code&amp;gt;0 0 26&amp;lt;/code&amp;gt;. După cele &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt; acțiuni, în școală a rămas o fată.&lt;br /&gt;
&lt;br /&gt;
= Exemplul 2: =&lt;br /&gt;
&amp;lt;code&amp;gt;cartele.in&amp;lt;/code&amp;gt;&lt;br /&gt;
 2&lt;br /&gt;
 3&lt;br /&gt;
 b i 0 0 24&lt;br /&gt;
 f i 0 0 26&lt;br /&gt;
 b e 0 0 29&lt;br /&gt;
&amp;lt;code&amp;gt;cartele.out&amp;lt;/code&amp;gt;&lt;br /&gt;
 3&lt;br /&gt;
&lt;br /&gt;
=== Explicație ===&lt;br /&gt;
Între momentul &amp;lt;code&amp;gt;0 0 24&amp;lt;/code&amp;gt; și &amp;lt;code&amp;gt;0 0 26&amp;lt;/code&amp;gt; în școală este doar un băiat. Între momentul &amp;lt;code&amp;gt;0 0 26&amp;lt;/code&amp;gt; și &amp;lt;code&amp;gt;0 0 29&amp;lt;/code&amp;gt; în școală se află un băiat și o fată adică un număr nenul egal de fete și băieți. Deci, numărul de secunde determinat este &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= Exemplul 3: =&lt;br /&gt;
&amp;lt;code&amp;gt;cartele.in&amp;lt;/code&amp;gt;&lt;br /&gt;
 2&lt;br /&gt;
 8&lt;br /&gt;
 f i 8 19 10&lt;br /&gt;
 b i 8 19 12&lt;br /&gt;
 b e 8 19 15&lt;br /&gt;
 b i 8 20 0&lt;br /&gt;
 b e 8 20 4&lt;br /&gt;
 b i 8 20 10&lt;br /&gt;
 b i 8 20 50&lt;br /&gt;
 b i 8 20 51&lt;br /&gt;
&amp;lt;code&amp;gt;cartele.out&amp;lt;/code&amp;gt;&lt;br /&gt;
 47&lt;br /&gt;
&lt;br /&gt;
=== Explicație ===&lt;br /&gt;
Între momentele &amp;lt;code&amp;gt;8 19 12&amp;lt;/code&amp;gt; și &amp;lt;code&amp;gt;8 19 15&amp;lt;/code&amp;gt; în școală se află &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; băiat și &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; fată, deci durata este &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt; secunde.&lt;br /&gt;
&lt;br /&gt;
Între momentele &amp;lt;code&amp;gt;8 20 0&amp;lt;/code&amp;gt; și &amp;lt;code&amp;gt;8 20 4&amp;lt;/code&amp;gt; în școală se află &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; băiat și &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; fată, deci durata este &amp;lt;code&amp;gt;4&amp;lt;/code&amp;gt; secunde.&lt;br /&gt;
&lt;br /&gt;
Între momentele &amp;lt;code&amp;gt;8 20 10&amp;lt;/code&amp;gt; și &amp;lt;code&amp;gt;8 20 50&amp;lt;/code&amp;gt; în școală se află &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; băiat și &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; fată, deci durata este &amp;lt;code&amp;gt;40&amp;lt;/code&amp;gt; de secunde.&lt;br /&gt;
&lt;br /&gt;
Durata totală este &amp;lt;code&amp;gt;3 + 4 + 40 = 47&amp;lt;/code&amp;gt; de secunde.&lt;br /&gt;
&lt;br /&gt;
= Exemplul 4: =&lt;br /&gt;
&amp;lt;code&amp;gt;cartele.in&amp;lt;/code&amp;gt;&lt;br /&gt;
 3&lt;br /&gt;
 9&lt;br /&gt;
 f i 8 19 10&lt;br /&gt;
 b i 8 19 12&lt;br /&gt;
 f e 8 19 13&lt;br /&gt;
 b e 8 19 15&lt;br /&gt;
 b i 8 20 0&lt;br /&gt;
 b i 8 20 1&lt;br /&gt;
 b i 8 20 10&lt;br /&gt;
 b i 8 20 12&lt;br /&gt;
 b i 8 20 13&lt;br /&gt;
&amp;lt;code&amp;gt;cartele.out&amp;lt;/code&amp;gt;&lt;br /&gt;
 3&lt;br /&gt;
&lt;br /&gt;
=== Explicație ===&lt;br /&gt;
Între momentele &amp;lt;code&amp;gt;8 19 12&amp;lt;/code&amp;gt; și &amp;lt;code&amp;gt;8 19 15&amp;lt;/code&amp;gt; în școală se află &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; băiat, deci durata este &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt; secunde.&lt;br /&gt;
&lt;br /&gt;
Între momentele &amp;lt;code&amp;gt;8 20 0&amp;lt;/code&amp;gt; și &amp;lt;code&amp;gt;8 20 1&amp;lt;/code&amp;gt; în școală se află &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; băiat, deci durata este &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; secundă.&lt;br /&gt;
&lt;br /&gt;
Între momentele &amp;lt;code&amp;gt;8 20 10&amp;lt;/code&amp;gt; și &amp;lt;code&amp;gt;8 20 12&amp;lt;/code&amp;gt; în școală se află &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt; băieți, deci durata este &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt; secunde.&lt;br /&gt;
&lt;br /&gt;
Durata maximă cerută este de &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt; secunde.&amp;lt;syntaxhighlight lang=&amp;quot;python3&amp;quot;&amp;gt;&lt;br /&gt;
def main():&lt;br /&gt;
    fin = open(&amp;quot;cartele1.in&amp;quot;, &amp;quot;r&amp;quot;)&lt;br /&gt;
    fout = open(&amp;quot;cartele1.out&amp;quot;, &amp;quot;w&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    # Citim valorile C și N din fișierul de intrare&lt;br /&gt;
    C = int(fin.readline().strip())&lt;br /&gt;
    N = int(fin.readline().strip())&lt;br /&gt;
&lt;br /&gt;
    baieti_in_scoala = 0&lt;br /&gt;
    fete_in_scoala = 0&lt;br /&gt;
    timp_egal_fete_baieti = 0&lt;br /&gt;
    timp_maxim_baieti = 0&lt;br /&gt;
    ultimul_timp_inregistrat = 0&lt;br /&gt;
&lt;br /&gt;
    for i in range(N):&lt;br /&gt;
        line = fin.readline().split()&lt;br /&gt;
&lt;br /&gt;
        gen, actiune, h, m, s = line[0], line[1], int(line[2]), int(line[3]), int(line[4])&lt;br /&gt;
&lt;br /&gt;
        timp_initial = h * 3600 + m * 60 + s&lt;br /&gt;
&lt;br /&gt;
        # Actualizăm numărul de băieți și fete în școală în funcție de acțiunea curentă&lt;br /&gt;
        if gen == &#039;b&#039;:&lt;br /&gt;
            baieti_in_scoala += 1 if actiune == &#039;i&#039; else -1&lt;br /&gt;
        else:&lt;br /&gt;
            fete_in_scoala += 1 if actiune == &#039;i&#039; else -1&lt;br /&gt;
&lt;br /&gt;
        # Verificăm dacă numărul de băieți și fete este egal și calculăm timpul&lt;br /&gt;
        # Verificăm timpul maxim cu un număr impar de băieți în școală&lt;br /&gt;
        if baieti_in_scoala == fete_in_scoala and fete_in_scoala &amp;gt; 0:&lt;br /&gt;
            timp_egal_fete_baieti += timp_initial - ultimul_timp_inregistrat&lt;br /&gt;
&lt;br /&gt;
        if baieti_in_scoala % 2 == 1:&lt;br /&gt;
            timp_maxim_baieti = max(timp_maxim_baieti, timp_initial - ultimul_timp_inregistrat)&lt;br /&gt;
&lt;br /&gt;
        # Actualizăm ultimul timp înregistrat&lt;br /&gt;
        ultimul_timp_inregistrat = timp_initial&lt;br /&gt;
&lt;br /&gt;
    # Scrie rezultatele în funcție de tipul cerinței&lt;br /&gt;
    if C == 1:&lt;br /&gt;
        fout.write(f&amp;quot;{baieti_in_scoala} {fete_in_scoala}&amp;quot;)&lt;br /&gt;
    elif C == 2:&lt;br /&gt;
        fout.write(str(timp_egal_fete_baieti))&lt;br /&gt;
    elif C == 3:&lt;br /&gt;
        fout.write(str(timp_maxim_baieti))&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    # Apelăm funcția main&lt;br /&gt;
    main()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>VanceaGabriel</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=4287_-_Veverita_4&amp;diff=9452</id>
		<title>4287 - Veverita 4</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=4287_-_Veverita_4&amp;diff=9452"/>
		<updated>2024-01-11T22:59:41Z</updated>

		<summary type="html">&lt;p&gt;VanceaGabriel: Pagină nouă:  În parcul orașului există &amp;lt;code&amp;gt;4&amp;lt;/code&amp;gt; rânduri de câte &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; copaci perfect aliniați. Rândurile sunt notate A, B, C și D, iar copacii de pe fiecare rând sunt numerotați de la &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; la &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;, ca în imaginea de mai jos:   O veveriță jucăușă sare prin copaci astfel:  * pornește dintr-un copac numerotat cu &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;; * la fiecare pas sare dintr-un copac numerotat cu &amp;lt;code&amp;gt;i&amp;lt;/code&amp;gt; într-un copac numerotat cu &amp;lt;code&amp;gt;i+1&amp;lt;/code&amp;gt;. Da...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
În parcul orașului există &amp;lt;code&amp;gt;4&amp;lt;/code&amp;gt; rânduri de câte &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; copaci perfect aliniați. Rândurile sunt notate A, B, C și D, iar copacii de pe fiecare rând sunt numerotați de la &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; la &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;, ca în imaginea de mai jos:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
O veveriță jucăușă sare prin copaci astfel:&lt;br /&gt;
&lt;br /&gt;
* pornește dintr-un copac numerotat cu &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;;&lt;br /&gt;
* la fiecare pas sare dintr-un copac numerotat cu &amp;lt;code&amp;gt;i&amp;lt;/code&amp;gt; într-un copac numerotat cu &amp;lt;code&amp;gt;i+1&amp;lt;/code&amp;gt;. Dacă se află într-un copac de pe rândul A, va sări în copacul de pe rândul B, dacă se află într-un copac de pe rândul D, va sări în copacul de pe rândul C, dacă se află în copacul de pe rândul B, va sări în copacul de pe rândul A sau în copacul de pe rândul C, iar dacă se află în copacul de pe rândul C, va sări în copacul de pe rândul B sau în copacul de pe rândul D;&lt;br /&gt;
* se oprește într-unul dintre copacii numerotați cu &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= Cerința =&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python3&amp;quot;&amp;gt;&lt;br /&gt;
MOD = 666013     #definim constanta pentru operatia modulo&lt;br /&gt;
&lt;br /&gt;
fin = open(&amp;quot;veverita4.in&amp;quot;, &amp;quot;r&amp;quot;)   #deschidem fisierele input si output&lt;br /&gt;
fout = open(&amp;quot;veverita4.out&amp;quot;, &amp;quot;w&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
n = int(fin.readline())              #citim valoarea lui &amp;quot;n&amp;quot; din fisierul input&lt;br /&gt;
&lt;br /&gt;
#definim functie pentru inmultirea matricei&lt;br /&gt;
def mat_multiply(a, b)&lt;br /&gt;
    ans = [[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]]&lt;br /&gt;
    for i in range(4):&lt;br /&gt;
        for j in range(4):&lt;br /&gt;
            for k in range(4):&lt;br /&gt;
                ans[i][j] += a[i][k] * b[k][j]&lt;br /&gt;
            if n &amp;gt; 1000:#aplicam operatia modulo daca n&amp;gt;1000&lt;br /&gt;
                ans[i][j] %= MOD&lt;br /&gt;
    return ans                      # ridicam matricea la puterea n-1&lt;br /&gt;
&lt;br /&gt;
#definim matricea initiala &amp;quot;mat&amp;quot;&lt;br /&gt;
mat = [[0, 1, 0, 0], [1, 0, 1, 0], [0, 1, 0, 1], [0, 0, 1, 0]]&lt;br /&gt;
#initializam rezultatul matricel &amp;quot;ansmat&amp;quot; ca matrice de identitate&lt;br /&gt;
ansmat = [[1, 0, 0, 0], [0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1]]&lt;br /&gt;
#efectuam exponentierea matricei folosind metoda exponentierei binare&lt;br /&gt;
exp = n - 1&lt;br /&gt;
while exp:&lt;br /&gt;
    if exp % 2 == 1:&lt;br /&gt;
        ansmat = mat_multiply(ansmat, mat)&lt;br /&gt;
    mat = mat_multiply(mat, mat)&lt;br /&gt;
    exp = int(exp / 2)&lt;br /&gt;
    #calculam rezultatul final apeland elementele din &amp;quot;ansmat&amp;quot;&lt;br /&gt;
ans = 0&lt;br /&gt;
for i in range(4):&lt;br /&gt;
    for j in range(4):&lt;br /&gt;
        ans += ansmat[i][j]&lt;br /&gt;
#aplicam operatia modulo daca n&amp;gt;1000&lt;br /&gt;
if n &amp;gt; 1000:&lt;br /&gt;
    ans %= MOD&lt;br /&gt;
#scriem rezultatul final in fisierul output si inchidem fisierul&lt;br /&gt;
fout.write(str(ans))&lt;br /&gt;
fin.close()&lt;br /&gt;
fout.close()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Aflați numărul &amp;lt;code&amp;gt;M&amp;lt;/code&amp;gt; de modalități în care se poate deplasa veverița, respectând regulile de mai sus. Dacă &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; este mai mic sau egal cu &amp;lt;code&amp;gt;1000&amp;lt;/code&amp;gt;, atunci veți afișa chiar numărul &amp;lt;code&amp;gt;M&amp;lt;/code&amp;gt;, iar dacă &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; este mai mare decât &amp;lt;code&amp;gt;1000&amp;lt;/code&amp;gt;, veți afișa restul împărțirii lui &amp;lt;code&amp;gt;M&amp;lt;/code&amp;gt; la &amp;lt;code&amp;gt;666013&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;veverita4.in&amp;lt;/code&amp;gt; conține pe prima linie numărul &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= Date de ieșire =&lt;br /&gt;
Fișierul de ieșire &amp;lt;code&amp;gt;veverita4.out&amp;lt;/code&amp;gt; va conține pe prima linie valoarea cerută.&lt;br /&gt;
&lt;br /&gt;
= Restricții și precizări =&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;1 ≤ n ≤ 109&amp;lt;/code&amp;gt;&lt;br /&gt;
* pentru 60% din teste, &amp;lt;code&amp;gt;n ≤ 1000&amp;lt;/code&amp;gt;;&lt;br /&gt;
* pentru alte 40% din teste, &amp;lt;code&amp;gt;n ≤ 109&amp;lt;/code&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
= Exemplu =&lt;br /&gt;
&amp;lt;code&amp;gt;veverita4.in&amp;lt;/code&amp;gt;&lt;br /&gt;
 3&lt;br /&gt;
&amp;lt;code&amp;gt;veverita4.out&amp;lt;/code&amp;gt;&lt;br /&gt;
 10&lt;/div&gt;</summary>
		<author><name>VanceaGabriel</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=3646_-_Zoom_poza&amp;diff=9447</id>
		<title>3646 - Zoom poza</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=3646_-_Zoom_poza&amp;diff=9447"/>
		<updated>2024-01-11T20:14:02Z</updated>

		<summary type="html">&lt;p&gt;VanceaGabriel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Cerința =&lt;br /&gt;
În orașul Detroit s-a produs o spargere la un magazin de bijuterii. Infractorii au fugit de la locul faptei, iar polițiștii au reusit să facă rost doar de o poză neclară cu infractorii.&lt;br /&gt;
&lt;br /&gt;
Cu ajutorul inteligenței artificiale reușesc să mărească acea imagine pentru a găsi niște detalii pentru a-i ajuta la rezolvarea cazului. Fii de partea binelui și ajută-i pe polițiști să rezolve acest caz!&lt;br /&gt;
&lt;br /&gt;
Poza este reprezentată printr-o matrice cu &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; linii și &amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt; coloane, alcătuită din numere naturale. Polițiștii te roagă să-i ajuți, răspunzând la următoarele întrebări:&lt;br /&gt;
&lt;br /&gt;
1) Dându-se o matrice reprezentând poza și un coeficient de mărire &amp;lt;code&amp;gt;z&amp;lt;/code&amp;gt;, construiește o altă matrice care să reprezinte poza mărită de &amp;lt;code&amp;gt;z&amp;lt;/code&amp;gt; ori.&lt;br /&gt;
&lt;br /&gt;
2) Dându-se o matrice reprezentând poza, coeficientul de mărire &amp;lt;code&amp;gt;z&amp;lt;/code&amp;gt; și un șir perechi de coordonate din poza mărită, determină pentru fiecare pereche de coordonate valoarea din poza mărită.&lt;br /&gt;
&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Fișierul de intrare &amp;lt;code&amp;gt;zoom_poza.in&amp;lt;/code&amp;gt; conține pe prima linie numărul &amp;lt;code&amp;gt;c&amp;lt;/code&amp;gt;, reprezentând întrebarea la care trebuie să răspunzi.&lt;br /&gt;
&lt;br /&gt;
Pentru &amp;lt;code&amp;gt;c=1&amp;lt;/code&amp;gt; pe a doua linie se află numărul de linii &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; și numărul de coloane &amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt;, pe a treia linie factorul de al imaginii &amp;lt;code&amp;gt;z&amp;lt;/code&amp;gt;, iar pe următoarele &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; linii și &amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt; coloane poza sub forma unei matrici.&lt;br /&gt;
&lt;br /&gt;
Pentru &amp;lt;code&amp;gt;c=2&amp;lt;/code&amp;gt; pe a doua linie se află numărul de linii &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; și numărul de coloane &amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt;, pe a treia linie factorul de al imaginii &amp;lt;code&amp;gt;z&amp;lt;/code&amp;gt;, iar pe următoarele &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; linii și &amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt; coloane poza sub forma unei matrici. Pe a patra linie se află &amp;lt;code&amp;gt;k&amp;lt;/code&amp;gt; – numărul de perchi de coordonate, iar pe următoarele &amp;lt;code&amp;gt;k&amp;lt;/code&amp;gt; linii câte două numere &amp;lt;code&amp;gt;l1 c1&amp;lt;/code&amp;gt;, reprezentând numărul de ordine al liniei, respectiv al coloanei pentru elementul cerut din matricea finală.&lt;br /&gt;
&lt;br /&gt;
== Date de ieșire ==&lt;br /&gt;
Fișierul de ieșire &amp;lt;code&amp;gt;zoom_poza.out&amp;lt;/code&amp;gt; va conține:&lt;br /&gt;
&lt;br /&gt;
* pentru &amp;lt;code&amp;gt;c=1&amp;lt;/code&amp;gt; imaginea mărită de către program, în dimensiune de &amp;lt;code&amp;gt;n*z&amp;lt;/code&amp;gt; linii și &amp;lt;code&amp;gt;m*z&amp;lt;/code&amp;gt; coloane.&lt;br /&gt;
* pentru &amp;lt;code&amp;gt;c=2&amp;lt;/code&amp;gt; se vor afișa numerele aflate pe pozițiile date în poza mărită, separate printr-un spațiu.&lt;br /&gt;
&lt;br /&gt;
=== Restricții și precizări ===&lt;br /&gt;
&lt;br /&gt;
* Pentru &amp;lt;code&amp;gt;c=1&amp;lt;/code&amp;gt;:&lt;br /&gt;
** &amp;lt;code&amp;gt;1 ≤ n ≤ m ≤ 70&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;1 ≤ a[i][j] ≤ 100.000&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;1 ≤ z ≤ 10&amp;lt;/code&amp;gt;&lt;br /&gt;
** Pentru teste în valoare de 40 de puncte, &amp;lt;code&amp;gt;c=1&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Pentru &amp;lt;code&amp;gt;c=2&amp;lt;/code&amp;gt;:&lt;br /&gt;
** Pentru 20 de puncte:&lt;br /&gt;
*** &amp;lt;code&amp;gt;1 ≤ n ≤ m ≤ 70&amp;lt;/code&amp;gt;&lt;br /&gt;
*** &amp;lt;code&amp;gt;1 ≤ a[i][j] ≤ 100.000&amp;lt;/code&amp;gt;&lt;br /&gt;
*** &amp;lt;code&amp;gt;1 ≤ z ≤ 10&amp;lt;/code&amp;gt;&lt;br /&gt;
*** &amp;lt;code&amp;gt;1 ≤ k ≤ 1000&amp;lt;/code&amp;gt;&lt;br /&gt;
*** &amp;lt;code&amp;gt;1 ≤ l1 ≤ c1 ≤ 2500&amp;lt;/code&amp;gt;&lt;br /&gt;
** Pentru 60 de puncte:&lt;br /&gt;
*** &amp;lt;code&amp;gt;1 ≤ n ≤ m ≤ 50&amp;lt;/code&amp;gt;&lt;br /&gt;
*** &amp;lt;code&amp;gt;1 ≤ a[i][j] ≤ 9•1018&amp;lt;/code&amp;gt;&lt;br /&gt;
*** &amp;lt;code&amp;gt;1 ≤ z ≤ 9•1014&amp;lt;/code&amp;gt;&lt;br /&gt;
*** &amp;lt;code&amp;gt;1 ≤ k ≤ 1.000&amp;lt;/code&amp;gt;&lt;br /&gt;
*** &amp;lt;code&amp;gt;1 ≤ l1 ≤ c1 ≤ 9•1018&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Se recomandă evitarea rezolvării din afișare!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python3&amp;quot;&amp;gt;&lt;br /&gt;
import numpy as np&lt;br /&gt;
def main():&lt;br /&gt;
    fin = open(&amp;quot;zoom_poza.in&amp;quot;, &amp;quot;r&amp;quot;)&lt;br /&gt;
    fout = open(&amp;quot;zoom_poza.out&amp;quot;, &amp;quot;w&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    c = int(fin.readline())&lt;br /&gt;
&lt;br /&gt;
    if c == 1:&lt;br /&gt;
        process_case_1(fin, fout)&lt;br /&gt;
    elif c == 2:&lt;br /&gt;
        process_case_2(fin, fout)&lt;br /&gt;
def process_case_1(fin, fout):&lt;br /&gt;
    n, m = map(int, fin.readline().split())  # citim n, m&lt;br /&gt;
    z = int(fin.readline())  # citim z&lt;br /&gt;
    a = np.zeros((n, m), dtype=int)&lt;br /&gt;
    for i in range(n):&lt;br /&gt;
        line = fin.readline().split()&lt;br /&gt;
        for j in range(m):&lt;br /&gt;
            a[i][j] = int(line[j])  # citim matricea initiala&lt;br /&gt;
    b = np.zeros((n * z, m * z), dtype=int)&lt;br /&gt;
    for i in range(n):&lt;br /&gt;
        constanta = 0&lt;br /&gt;
        for j in range(m):&lt;br /&gt;
            for x in range(z):&lt;br /&gt;
                for y in range(z):&lt;br /&gt;
                    b[i * z + y][constanta * z + x] = a[i][&lt;br /&gt;
                        j&lt;br /&gt;
                    ]  # se creeaza matricea marita de z ori&lt;br /&gt;
            constanta += 1&lt;br /&gt;
    for i in range(0, z * n):&lt;br /&gt;
        for j in range(0, z * m):&lt;br /&gt;
            fout.write(str(b[i][j]) + &amp;quot; &amp;quot;)            # scriem in fisier matricea rezultata&lt;br /&gt;
        fout.write(&amp;quot;\n&amp;quot;)&lt;br /&gt;
def process_case_2(fin, fout):&lt;br /&gt;
    n, m = map(int, fin.readline().split())  # citim n, m&lt;br /&gt;
    z = int(fin.readline())  # citim z&lt;br /&gt;
    a = np.zeros((n, m), dtype=int)&lt;br /&gt;
    for i in range(n):&lt;br /&gt;
        line = fin.readline().split()&lt;br /&gt;
        for j in range(m):&lt;br /&gt;
            a[i][j] = int(line[j])                        # citim matricea initiala&lt;br /&gt;
    k = int(fin.readline())  # citim k&lt;br /&gt;
    for i in range(k):&lt;br /&gt;
        l1, c1 = map(int, fin.readline().split())  # citim l1, c1&lt;br /&gt;
        line = l1 / z&lt;br /&gt;
        if l1 % z != 0:&lt;br /&gt;
            line += 1&lt;br /&gt;
        column = c1 / z&lt;br /&gt;
        if c1 % z != 0:&lt;br /&gt;
            column += 1&lt;br /&gt;
        fout.write(str(a[int(line - 1)][int(column - 1)]) + &amp;quot; &amp;quot;)#scriem in fisier valoarea de&lt;br /&gt;
                                                                # pe pozitia ceruta&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>VanceaGabriel</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=3646_-_Zoom_poza&amp;diff=9364</id>
		<title>3646 - Zoom poza</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=3646_-_Zoom_poza&amp;diff=9364"/>
		<updated>2024-01-11T16:17:56Z</updated>

		<summary type="html">&lt;p&gt;VanceaGabriel: Cerinta + rezolvare&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Cerința =&lt;br /&gt;
În orașul Detroit s-a produs o spargere la un magazin de bijuterii. Infractorii au fugit de la locul faptei, iar polițiștii au reusit să facă rost doar de o poză neclară cu infractorii.&lt;br /&gt;
&lt;br /&gt;
Cu ajutorul inteligenței artificiale reușesc să mărească acea imagine pentru a găsi niște detalii pentru a-i ajuta la rezolvarea cazului. Fii de partea binelui și ajută-i pe polițiști să rezolve acest caz!&lt;br /&gt;
&lt;br /&gt;
Poza este reprezentată printr-o matrice cu &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; linii și &amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt; coloane, alcătuită din numere naturale. Polițiștii te roagă să-i ajuți, răspunzând la următoarele întrebări:&lt;br /&gt;
&lt;br /&gt;
1) Dându-se o matrice reprezentând poza și un coeficient de mărire &amp;lt;code&amp;gt;z&amp;lt;/code&amp;gt;, construiește o altă matrice care să reprezinte poza mărită de &amp;lt;code&amp;gt;z&amp;lt;/code&amp;gt; ori.&lt;br /&gt;
&lt;br /&gt;
2) Dându-se o matrice reprezentând poza, coeficientul de mărire &amp;lt;code&amp;gt;z&amp;lt;/code&amp;gt; și un șir perechi de coordonate din poza mărită, determină pentru fiecare pereche de coordonate valoarea din poza mărită.&lt;br /&gt;
&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Fișierul de intrare &amp;lt;code&amp;gt;zoom_poza.in&amp;lt;/code&amp;gt; conține pe prima linie numărul &amp;lt;code&amp;gt;c&amp;lt;/code&amp;gt;, reprezentând întrebarea la care trebuie să răspunzi.&lt;br /&gt;
&lt;br /&gt;
Pentru &amp;lt;code&amp;gt;c=1&amp;lt;/code&amp;gt; pe a doua linie se află numărul de linii &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; și numărul de coloane &amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt;, pe a treia linie factorul de al imaginii &amp;lt;code&amp;gt;z&amp;lt;/code&amp;gt;, iar pe următoarele &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; linii și &amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt; coloane poza sub forma unei matrici.&lt;br /&gt;
&lt;br /&gt;
Pentru &amp;lt;code&amp;gt;c=2&amp;lt;/code&amp;gt; pe a doua linie se află numărul de linii &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; și numărul de coloane &amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt;, pe a treia linie factorul de al imaginii &amp;lt;code&amp;gt;z&amp;lt;/code&amp;gt;, iar pe următoarele &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; linii și &amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt; coloane poza sub forma unei matrici. Pe a patra linie se află &amp;lt;code&amp;gt;k&amp;lt;/code&amp;gt; – numărul de perchi de coordonate, iar pe următoarele &amp;lt;code&amp;gt;k&amp;lt;/code&amp;gt; linii câte două numere &amp;lt;code&amp;gt;l1 c1&amp;lt;/code&amp;gt;, reprezentând numărul de ordine al liniei, respectiv al coloanei pentru elementul cerut din matricea finală.&lt;br /&gt;
&lt;br /&gt;
== Date de ieșire ==&lt;br /&gt;
Fișierul de ieșire &amp;lt;code&amp;gt;zoom_poza.out&amp;lt;/code&amp;gt; va conține:&lt;br /&gt;
&lt;br /&gt;
* pentru &amp;lt;code&amp;gt;c=1&amp;lt;/code&amp;gt; imaginea mărită de către program, în dimensiune de &amp;lt;code&amp;gt;n*z&amp;lt;/code&amp;gt; linii și &amp;lt;code&amp;gt;m*z&amp;lt;/code&amp;gt; coloane.&lt;br /&gt;
* pentru &amp;lt;code&amp;gt;c=2&amp;lt;/code&amp;gt; se vor afișa numerele aflate pe pozițiile date în poza mărită, separate printr-un spațiu.&lt;br /&gt;
&lt;br /&gt;
=== Restricții și precizări ===&lt;br /&gt;
&lt;br /&gt;
* Pentru &amp;lt;code&amp;gt;c=1&amp;lt;/code&amp;gt;:&lt;br /&gt;
** &amp;lt;code&amp;gt;1 ≤ n ≤ m ≤ 70&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;1 ≤ a[i][j] ≤ 100.000&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;1 ≤ z ≤ 10&amp;lt;/code&amp;gt;&lt;br /&gt;
** Pentru teste în valoare de 40 de puncte, &amp;lt;code&amp;gt;c=1&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Pentru &amp;lt;code&amp;gt;c=2&amp;lt;/code&amp;gt;:&lt;br /&gt;
** Pentru 20 de puncte:&lt;br /&gt;
*** &amp;lt;code&amp;gt;1 ≤ n ≤ m ≤ 70&amp;lt;/code&amp;gt;&lt;br /&gt;
*** &amp;lt;code&amp;gt;1 ≤ a[i][j] ≤ 100.000&amp;lt;/code&amp;gt;&lt;br /&gt;
*** &amp;lt;code&amp;gt;1 ≤ z ≤ 10&amp;lt;/code&amp;gt;&lt;br /&gt;
*** &amp;lt;code&amp;gt;1 ≤ k ≤ 1000&amp;lt;/code&amp;gt;&lt;br /&gt;
*** &amp;lt;code&amp;gt;1 ≤ l1 ≤ c1 ≤ 2500&amp;lt;/code&amp;gt;&lt;br /&gt;
** Pentru 60 de puncte:&lt;br /&gt;
*** &amp;lt;code&amp;gt;1 ≤ n ≤ m ≤ 50&amp;lt;/code&amp;gt;&lt;br /&gt;
*** &amp;lt;code&amp;gt;1 ≤ a[i][j] ≤ 9•1018&amp;lt;/code&amp;gt;&lt;br /&gt;
*** &amp;lt;code&amp;gt;1 ≤ z ≤ 9•1014&amp;lt;/code&amp;gt;&lt;br /&gt;
*** &amp;lt;code&amp;gt;1 ≤ k ≤ 1.000&amp;lt;/code&amp;gt;&lt;br /&gt;
*** &amp;lt;code&amp;gt;1 ≤ l1 ≤ c1 ≤ 9•1018&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Se recomandă evitarea rezolvării din afișare!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python3&amp;quot;&amp;gt;&lt;br /&gt;
import numpy as np&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
    fin = open(&amp;quot;zoom_poza.in&amp;quot;, &amp;quot;r&amp;quot;)&lt;br /&gt;
    fout = open(&amp;quot;zoom_poza.out&amp;quot;, &amp;quot;w&amp;quot;)  # deschidem fisierele input si output&lt;br /&gt;
&lt;br /&gt;
    c = int(fin.readline())&lt;br /&gt;
    fout.write(str(c))&lt;br /&gt;
&lt;br /&gt;
    if c == 1:&lt;br /&gt;
        process_case_1(fin, fout)&lt;br /&gt;
    elif c == 2:&lt;br /&gt;
        process_case_2(fin, fout)&lt;br /&gt;
&lt;br /&gt;
    fin.close()&lt;br /&gt;
    fout.close()&lt;br /&gt;
&lt;br /&gt;
def process_case_1(fin, fout):&lt;br /&gt;
    a = np.zeros((71, 71), dtype=int)&lt;br /&gt;
    n, m, z = map(int, fin.readline().split())&lt;br /&gt;
    for i in range(1, m+1):&lt;br /&gt;
        a[i][j] = int(fin.readline())  # inlocuim j cu i&lt;br /&gt;
    b = np.zeros((701, 701), dtype=int)&lt;br /&gt;
    for i in range(1, n+1):&lt;br /&gt;
        constanta = 0  # Initializam constanta&lt;br /&gt;
        for j in range(1, m+1):&lt;br /&gt;
            for x in range(1, z+1):&lt;br /&gt;
                for x1 in range(1, z+1):&lt;br /&gt;
                    b[(i - 1) * z + x1][constanta * z + x] = a[i][j]&lt;br /&gt;
        constanta += 1&lt;br /&gt;
    for i in range(1, z * m + 1):&lt;br /&gt;
        for j in range(1, z * m + 1):&lt;br /&gt;
            fout.write(str(b[i][j]) + &amp;quot; &amp;quot;)&lt;br /&gt;
        fout.write(&amp;quot;\n&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
def process_case_2(fin, fout):&lt;br /&gt;
    n, m, z = map(int, fin.readline().split())&lt;br /&gt;
    b = np.zeros((701, 701), dtype=int)&lt;br /&gt;
    for i in range(1, n+1):&lt;br /&gt;
        for j in range(1, m+1):&lt;br /&gt;
            b[i][j] = int(fin.readline())&lt;br /&gt;
    k = int(fin.readline())&lt;br /&gt;
    for _ in range(k):&lt;br /&gt;
        l1, c1 = map(int, fin.readline().split())&lt;br /&gt;
        linie = l1 // z&lt;br /&gt;
        if l1 % z != 0:&lt;br /&gt;
            linie += 1&lt;br /&gt;
        coloana = c1 // z&lt;br /&gt;
        if c1 % z != 0:&lt;br /&gt;
            coloana += 1&lt;br /&gt;
        fout.write(str(b[linie][coloana]) + &amp;quot; &amp;quot;)&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>VanceaGabriel</name></author>
	</entry>
</feed>