<?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=Brianna+Waltner</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=Brianna+Waltner"/>
	<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/wiki/Special:Contributions/Brianna_Waltner"/>
	<updated>2026-05-01T02:48:52Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.42.1</generator>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=661_-_Triunghiuri1&amp;diff=9102</id>
		<title>661 - Triunghiuri1</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=661_-_Triunghiuri1&amp;diff=9102"/>
		<updated>2024-01-05T19:49:04Z</updated>

		<summary type="html">&lt;p&gt;Brianna Waltner: Pagină nouă: == Cerinţa == Se dau &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039; numere naturale distincte. Determinaţi câte triunghiuri distincte pot avea lungimile laturilor printre aceste numere. == Date de intrare == Programul citește de la tastatură numărul &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039;, iar apoi cele &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039; numere naturale. == Date de ieșire == Programul va afișa pe ecran numărul &amp;#039;&amp;#039;&amp;#039;C&amp;#039;&amp;#039;&amp;#039;, reprezentând numărul de triunghiuri determinate. == Restricţii şi precizări == * &amp;#039;&amp;#039;&amp;#039;1 &amp;amp;les; n &amp;amp;les; 1000&amp;#039;&amp;#039;&amp;#039; * cele &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039; numere citite vor...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cerinţa ==&lt;br /&gt;
Se dau &#039;&#039;&#039;n&#039;&#039;&#039; numere naturale distincte. Determinaţi câte triunghiuri distincte pot avea lungimile laturilor printre aceste numere.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Programul citește de la tastatură numărul &#039;&#039;&#039;n&#039;&#039;&#039;, iar apoi cele &#039;&#039;&#039;n&#039;&#039;&#039; numere naturale.&lt;br /&gt;
== Date de ieșire ==&lt;br /&gt;
Programul va afișa pe ecran numărul &#039;&#039;&#039;C&#039;&#039;&#039;, reprezentând numărul de triunghiuri determinate.&lt;br /&gt;
== Restricţii şi precizări ==&lt;br /&gt;
* &#039;&#039;&#039;1 &amp;amp;les; n &amp;amp;les; 1000&#039;&#039;&#039;&lt;br /&gt;
* cele &#039;&#039;&#039;n&#039;&#039;&#039; numere citite vor fi mai mici decât &#039;&#039;&#039;1.000.000&#039;&#039;&#039;&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
;&#039;&#039;&#039;Intrare&#039;&#039;&#039;&lt;br /&gt;
 5&lt;br /&gt;
 3 5 10 7 6 &lt;br /&gt;
;&#039;&#039;&#039;Iesire&#039;&#039;&#039;&lt;br /&gt;
 Datele de intrare corespund restrictiilor impuse&lt;br /&gt;
 7&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
;&#039;&#039;&#039;Intrare&#039;&#039;&#039;&lt;br /&gt;
 3&lt;br /&gt;
 1 2 1000000000&lt;br /&gt;
;&#039;&#039;&#039;Iesire&#039;&#039;&#039;&lt;br /&gt;
 Datele de intrare nu corespund restrictiilor impuse&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
def numar_triunghiuri(n_val, numere_val):&lt;br /&gt;
    numere_val.sort()&lt;br /&gt;
    count = 0&lt;br /&gt;
    for i in range(n_val-2):&lt;br /&gt;
        k = i + 2&lt;br /&gt;
        for j in range(i+1, n_val):&lt;br /&gt;
            while k &amp;lt; n_val and numere_val[i] + numere_val[j] &amp;gt; numere_val[k]:&lt;br /&gt;
                k += 1&lt;br /&gt;
            if k &amp;gt; j:&lt;br /&gt;
                count += k - j - 1&lt;br /&gt;
    return count&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def verifica_restrictii(n_val, numere_val):&lt;br /&gt;
    if n_val &amp;lt; 1 or n_val &amp;gt; 1000:&lt;br /&gt;
        return &amp;quot;Datele de intrare nu corespund restrictiilor impuse&amp;quot;&lt;br /&gt;
    for numar in numere_val:&lt;br /&gt;
        if numar &amp;gt;= 1000000:&lt;br /&gt;
            return &amp;quot;Datele de intrare nu corespund restrictiilor impuse&amp;quot;&lt;br /&gt;
    return &amp;quot;Datele de intrare corespund restrictiilor impuse&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
n = int(input())&lt;br /&gt;
numere = list(map(int, input().split()))&lt;br /&gt;
print(verifica_restrictii(n, numere))&lt;br /&gt;
print(numar_triunghiuri(n, numere))&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
== Explicație ==&lt;br /&gt;
Cele &#039;&#039;&#039;7&#039;&#039;&#039; triunghiuri au lungimile laturilor:&lt;br /&gt;
 &#039;&#039;&#039;3 5 7&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;3 5 6&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;3 7 6&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;5 7 6&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;5 10 7&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;5 10 6&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;10 7 6&#039;&#039;&#039;&lt;/div&gt;</summary>
		<author><name>Brianna Waltner</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=2443_-_cb2&amp;diff=9042</id>
		<title>2443 - cb2</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=2443_-_cb2&amp;diff=9042"/>
		<updated>2024-01-04T23:16:01Z</updated>

		<summary type="html">&lt;p&gt;Brianna Waltner: Pagină nouă: Se consideră un șir de numere naturale nenule &amp;#039;&amp;#039;&amp;#039;a[1]&amp;#039;&amp;#039;&amp;#039;, &amp;#039;&amp;#039;&amp;#039;a[2]&amp;#039;&amp;#039;&amp;#039;, …, &amp;#039;&amp;#039;&amp;#039;a[n]&amp;#039;&amp;#039;&amp;#039;. Asupra șirului se efectuează &amp;#039;&amp;#039;&amp;#039;Q&amp;#039;&amp;#039;&amp;#039; interogări. Fiecare interogare este dată de o pereche &amp;#039;&amp;#039;&amp;#039;(x, s)&amp;#039;&amp;#039;&amp;#039;: care este indicele maxim &amp;#039;&amp;#039;&amp;#039;p&amp;#039;&amp;#039;&amp;#039; cu proprietatea că &amp;#039;&amp;#039;&amp;#039;a[i] ≤ x&amp;#039;&amp;#039;&amp;#039;, pentru orice &amp;#039;&amp;#039;&amp;#039;i=1..p&amp;#039;&amp;#039;&amp;#039; și în plus &amp;#039;&amp;#039;&amp;#039;a[1] + a[2] + ... + a[p] ≤ s&amp;#039;&amp;#039;&amp;#039;? == Cerinţa == Trebuie să răspundeți la fiecare din cele &amp;#039;&amp;#039;&amp;#039;Q&amp;#039;&amp;#039;&amp;#039; întrebări. == Date de intrare == Programul citește de la tastat...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Se consideră un șir de numere naturale nenule &#039;&#039;&#039;a[1]&#039;&#039;&#039;, &#039;&#039;&#039;a[2]&#039;&#039;&#039;, …, &#039;&#039;&#039;a[n]&#039;&#039;&#039;. Asupra șirului se efectuează &#039;&#039;&#039;Q&#039;&#039;&#039; interogări. Fiecare interogare este dată de o pereche &#039;&#039;&#039;(x, s)&#039;&#039;&#039;: care este indicele maxim &#039;&#039;&#039;p&#039;&#039;&#039; cu proprietatea că &#039;&#039;&#039;a[i] ≤ x&#039;&#039;&#039;, pentru orice &#039;&#039;&#039;i=1..p&#039;&#039;&#039; și în plus &#039;&#039;&#039;a[1] + a[2] + ... + a[p] ≤ s&#039;&#039;&#039;?&lt;br /&gt;
== Cerinţa ==&lt;br /&gt;
Trebuie să răspundeți la fiecare din cele &#039;&#039;&#039;Q&#039;&#039;&#039; întrebări.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Programul citește de la tastatură numărul &#039;&#039;&#039;n&#039;&#039;&#039;, iar apoi &#039;&#039;&#039;n&#039;&#039;&#039; numere naturale, separate prin spații, reprezentând elementele șirului. Apoi se citește valoarea &#039;&#039;&#039;Q&#039;&#039;&#039; și la final se citesc &#039;&#039;&#039;Q&#039;&#039;&#039; perechi de forma &#039;&#039;&#039;(x, s)&#039;&#039;&#039; reprezentând întrebările.&lt;br /&gt;
== Date de ieșire ==&lt;br /&gt;
Programul va afișa pe câte o linie la ecran &#039;&#039;&#039;Q&#039;&#039;&#039; valori reprezentând răspunsurile la întrebări.&lt;br /&gt;
== Restricţii şi precizări ==&lt;br /&gt;
* &#039;&#039;&#039;1 &amp;amp;les; n &amp;amp;les; 100.000&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;1 &amp;amp;les; Q &amp;amp;les; 100.000&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;1 &amp;amp;les; a[i] &amp;amp;les; 1.000&#039;&#039;&#039; pentru orice &#039;&#039;&#039;i=1..n&#039;&#039;&#039;&lt;br /&gt;
* pentru fiecare întrebare, &#039;&#039;&#039;1 &amp;amp;les; x, s &amp;amp;les; 1.000.000.000&#039;&#039;&#039;&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
;Intrare&lt;br /&gt;
 9&lt;br /&gt;
 5 3 1 7 4 9 8 2 6&lt;br /&gt;
 6&lt;br /&gt;
 8 10&lt;br /&gt;
 4 20&lt;br /&gt;
 6 20&lt;br /&gt;
 6 8&lt;br /&gt;
 10 100&lt;br /&gt;
 10 20&lt;br /&gt;
;Iesire&lt;br /&gt;
 Datele de intrare corespund restrictiilor impuse&lt;br /&gt;
 3 &lt;br /&gt;
 0&lt;br /&gt;
 3&lt;br /&gt;
 2&lt;br /&gt;
 9&lt;br /&gt;
 5&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
;Intrare&lt;br /&gt;
 5&lt;br /&gt;
 1 2 3 4 5000&lt;br /&gt;
 3&lt;br /&gt;
 10 20&lt;br /&gt;
 20 30&lt;br /&gt;
 30 40&lt;br /&gt;
;Iesire&lt;br /&gt;
 Datele de intrare nu corespund restrictiilor impuse&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
n = int(input())&lt;br /&gt;
a = list(map(int, input().split()))&lt;br /&gt;
Q = int(input())&lt;br /&gt;
queries = [list(map(int, input().split())) for _ in range(Q)]&lt;br /&gt;
&lt;br /&gt;
if not (1 &amp;lt;= n &amp;lt;= 100000):&lt;br /&gt;
    print(&amp;quot;Datele de intrare nu corespund restrictiilor impuse&amp;quot;)&lt;br /&gt;
elif not all(1 &amp;lt;= ai &amp;lt;= 1000 for ai in a):&lt;br /&gt;
    print(&amp;quot;Datele de intrare nu corespund restrictiilor impuse&amp;quot;)&lt;br /&gt;
elif not (1 &amp;lt;= Q &amp;lt;= 100000):&lt;br /&gt;
    print(&amp;quot;Datele de intrare nu corespund restrictiilor impuse&amp;quot;)&lt;br /&gt;
elif not all(1 &amp;lt;= x &amp;lt;= 1000000000 and 1 &amp;lt;= s &amp;lt;= 1000000000 for x, s in queries):&lt;br /&gt;
    print(&amp;quot;Datele de intrare nu corespund restrictiilor impuse&amp;quot;)&lt;br /&gt;
else:&lt;br /&gt;
    print(&amp;quot;Datele de intrare corespund restrictiilor impuse&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    for x, s in queries:&lt;br /&gt;
        p = 0&lt;br /&gt;
        total = 0&lt;br /&gt;
        while p &amp;lt; n and a[p] &amp;lt;= x and total + a[p] &amp;lt;= s:&lt;br /&gt;
            total += a[p]&lt;br /&gt;
            p += 1&lt;br /&gt;
        print(p)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
== Explicatie ==&lt;br /&gt;
 La prima întrebare, &#039;&#039;&#039;x=8&#039;&#039;&#039;, &#039;&#039;&#039;s=10&#039;&#039;&#039;. Indicele maxim este &#039;&#039;&#039;3&#039;&#039;&#039; pentru că primele trei valori din șir sunt mai mici sau egale cu &#039;&#039;&#039;8&#039;&#039;&#039;, iar &#039;&#039;&#039;5 + 3 + 1 &amp;amp;les; 10&#039;&#039;&#039;.&lt;br /&gt;
 La a doua întrebare, răspunsul este &#039;&#039;&#039;0&#039;&#039;&#039; deoarece primul număr din șir este &#039;&#039;&#039;5&#039;&#039;&#039; care este mai mare decât &#039;&#039;&#039;x=4&#039;&#039;&#039;.&lt;br /&gt;
 La a cincea întrebare, &#039;&#039;&#039;x=10&#039;&#039;&#039; și &#039;&#039;&#039;s=100&#039;&#039;&#039;. Răspunsul este chiar lungimea șirului.&lt;/div&gt;</summary>
		<author><name>Brianna Waltner</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=2239_-_pow2&amp;diff=9040</id>
		<title>2239 - pow2</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=2239_-_pow2&amp;diff=9040"/>
		<updated>2024-01-04T22:58:52Z</updated>

		<summary type="html">&lt;p&gt;Brianna Waltner: Pagină nouă: Se consideră un șir &amp;#039;&amp;#039;&amp;#039;a[1]&amp;#039;&amp;#039;&amp;#039;, &amp;#039;&amp;#039;&amp;#039;a[2]&amp;#039;&amp;#039;&amp;#039;,…, &amp;#039;&amp;#039;&amp;#039;a[n]&amp;#039;&amp;#039;&amp;#039; de numere naturale nenule. == Cerinţa == Să se determine câte perechi de indici &amp;#039;&amp;#039;&amp;#039;(i, j)&amp;#039;&amp;#039;&amp;#039;, &amp;#039;&amp;#039;&amp;#039;1 &amp;amp;les; i &amp;lt; j &amp;amp;les; n&amp;#039;&amp;#039;&amp;#039;, există cu proprietatea că suma &amp;#039;&amp;#039;&amp;#039;a[i] + a[j]&amp;#039;&amp;#039;&amp;#039; este egală cu o putere a lui &amp;#039;&amp;#039;&amp;#039;2&amp;#039;&amp;#039;&amp;#039;. == Date de intrare == Programul citește de la tastatură numărul &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039;, iar apoi cele &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039; numere naturale nenule, separate prin spații. == Date de ieșire == Programul va afișa pe ecran un sing...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Se consideră un șir &#039;&#039;&#039;a[1]&#039;&#039;&#039;, &#039;&#039;&#039;a[2]&#039;&#039;&#039;,…, &#039;&#039;&#039;a[n]&#039;&#039;&#039; de numere naturale nenule.&lt;br /&gt;
== Cerinţa ==&lt;br /&gt;
Să se determine câte perechi de indici &#039;&#039;&#039;(i, j)&#039;&#039;&#039;, &#039;&#039;&#039;1 &amp;amp;les; i &amp;lt; j &amp;amp;les; n&#039;&#039;&#039;, există cu proprietatea că suma &#039;&#039;&#039;a[i] + a[j]&#039;&#039;&#039; este egală cu o putere a lui &#039;&#039;&#039;2&#039;&#039;&#039;.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Programul citește de la tastatură numărul &#039;&#039;&#039;n&#039;&#039;&#039;, iar apoi cele &#039;&#039;&#039;n&#039;&#039;&#039; numere naturale nenule, separate prin spații.&lt;br /&gt;
== Date de ieșire ==&lt;br /&gt;
Programul va afișa pe ecran un singur număr natural reprezentând numărul de perechi de indici distincți &#039;&#039;&#039;(i, j)&#039;&#039;&#039; cu proprietatea că suma &#039;&#039;&#039;a[i] + a[j]&#039;&#039;&#039; este egală cu o putere a lui &#039;&#039;&#039;2&#039;&#039;&#039;.&lt;br /&gt;
== Restricţii şi precizări ==&lt;br /&gt;
* &#039;&#039;&#039;2 &amp;amp;les; n &amp;amp;les; 100.000&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;1 &amp;amp;les; a[i] &amp;amp;les; 1.000.000.000&#039;&#039;&#039;, pentru orice &#039;&#039;&#039;i = 1..n&#039;&#039;&#039;&lt;br /&gt;
* Numerele care sunt puteri ale lui &#039;&#039;&#039;2&#039;&#039;&#039; sunt &#039;&#039;&#039;1&#039;&#039;&#039;, &#039;&#039;&#039;2&#039;&#039;&#039;, &#039;&#039;&#039;4&#039;&#039;&#039;, &#039;&#039;&#039;8&#039;&#039;&#039;, &#039;&#039;&#039;16&#039;&#039;&#039;, &#039;&#039;&#039;32&#039;&#039;&#039;, …&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
;Intrare&lt;br /&gt;
 4&lt;br /&gt;
 3 5 3 13&lt;br /&gt;
;Iesire&lt;br /&gt;
 Datele de intrare corespund restrictiilor impuse&lt;br /&gt;
 4&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
;Intrare&lt;br /&gt;
 210000&lt;br /&gt;
 16 17 20 24 30 35 40 45 50 55 60 65 70 75 80 85 90 95 100 105&lt;br /&gt;
;Iesire&lt;br /&gt;
 Datele de intrare nu corespund restrictiilor impuse&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
def is_power_of_two(num):&lt;br /&gt;
    return (num != 0) and (num &amp;amp; (num-1) == 0)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
num_elements = int(input().strip())&lt;br /&gt;
if not (2 &amp;lt;= num_elements &amp;lt;= 100000):&lt;br /&gt;
    print(&amp;quot;Datele de intrare nu corespund restrictiilor impuse&amp;quot;)&lt;br /&gt;
    exit(1)&lt;br /&gt;
a = sorted(list(map(int, input().split())))&lt;br /&gt;
if any(ai &amp;lt; 1 or ai &amp;gt; 1000000000 for ai in a):&lt;br /&gt;
    print(&amp;quot;Datele de intrare nu corespund restrictiilor impuse&amp;quot;)&lt;br /&gt;
    exit(1)&lt;br /&gt;
&lt;br /&gt;
print(&amp;quot;Datele de intrare corespund restrictiilor impuse&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
count = 0&lt;br /&gt;
for i in range(num_elements):&lt;br /&gt;
    for j in range(i+1, num_elements):&lt;br /&gt;
        if is_power_of_two(a[i] + a[j]):&lt;br /&gt;
            count += 1&lt;br /&gt;
&lt;br /&gt;
print(count)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Explicație ==&lt;br /&gt;
 Cele patru perechi de indici sunt: &#039;&#039;&#039;(1,2)&#039;&#039;&#039;, &#039;&#039;&#039;(1,4)&#039;&#039;&#039;, &#039;&#039;&#039;(2,3)&#039;&#039;&#039;, &#039;&#039;&#039;(3,4)&#039;&#039;&#039;.&lt;/div&gt;</summary>
		<author><name>Brianna Waltner</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=2276_-_cb&amp;diff=9036</id>
		<title>2276 - cb</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=2276_-_cb&amp;diff=9036"/>
		<updated>2024-01-04T22:41:42Z</updated>

		<summary type="html">&lt;p&gt;Brianna Waltner: Pagină nouă: Se consideră un șir &amp;#039;&amp;#039;&amp;#039;a[1]&amp;#039;&amp;#039;&amp;#039;, &amp;#039;&amp;#039;&amp;#039;a[2]&amp;#039;&amp;#039;&amp;#039;, …, &amp;#039;&amp;#039;&amp;#039;a[n]&amp;#039;&amp;#039;&amp;#039; de numere naturale. Se dau și &amp;#039;&amp;#039;&amp;#039;T&amp;#039;&amp;#039;&amp;#039; intervale închise de forma &amp;#039;&amp;#039;&amp;#039;[x, y]&amp;#039;&amp;#039;&amp;#039;, cu &amp;#039;&amp;#039;&amp;#039;x ≤ y&amp;#039;&amp;#039;&amp;#039;. == Cerinţa == Pentru fiecare din cele &amp;#039;&amp;#039;&amp;#039;T&amp;#039;&amp;#039;&amp;#039; intervale de forma &amp;#039;&amp;#039;&amp;#039;[x, y]&amp;#039;&amp;#039;&amp;#039; trebuie să răspundeți la întrebarea: câte numere din șir aparțin intervalului &amp;#039;&amp;#039;&amp;#039;[x, y]&amp;#039;&amp;#039;&amp;#039;? == Date de intrare == Programul citește de la tastatură numerele &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039; și &amp;#039;&amp;#039;&amp;#039;T&amp;#039;&amp;#039;&amp;#039;, apoi &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039; numere naturale, separate prin spații,...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Se consideră un șir &#039;&#039;&#039;a[1]&#039;&#039;&#039;, &#039;&#039;&#039;a[2]&#039;&#039;&#039;, …, &#039;&#039;&#039;a[n]&#039;&#039;&#039; de numere naturale. Se dau și &#039;&#039;&#039;T&#039;&#039;&#039; intervale închise de forma &#039;&#039;&#039;[x, y]&#039;&#039;&#039;, cu &#039;&#039;&#039;x ≤ y&#039;&#039;&#039;.&lt;br /&gt;
== Cerinţa ==&lt;br /&gt;
Pentru fiecare din cele &#039;&#039;&#039;T&#039;&#039;&#039; intervale de forma &#039;&#039;&#039;[x, y]&#039;&#039;&#039; trebuie să răspundeți la întrebarea: câte numere din șir aparțin intervalului &#039;&#039;&#039;[x, y]&#039;&#039;&#039;?&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Programul citește de la tastatură numerele &#039;&#039;&#039;n&#039;&#039;&#039; și &#039;&#039;&#039;T&#039;&#039;&#039;, apoi &#039;&#039;&#039;n&#039;&#039;&#039; numere naturale, separate prin spații, &#039;&#039;&#039;a[1]&#039;&#039;&#039;, &#039;&#039;&#039;a[2]&#039;&#039;&#039;, …, &#039;&#039;&#039;a[n]&#039;&#039;&#039;. Pe următoarele &#039;&#039;&#039;T&#039;&#039;&#039; linii se află câte două numere naturale &#039;&#039;&#039;x&#039;&#039;&#039; și &#039;&#039;&#039;y&#039;&#039;&#039; reprezentând un interval &#039;&#039;&#039;[x, y]&#039;&#039;&#039;.&lt;br /&gt;
== Date de ieșire ==&lt;br /&gt;
Programul va afișa pe ecran &#039;&#039;&#039;T&#039;&#039;&#039; linii. Pe fiecare linie &#039;&#039;&#039;i&#039;&#039;&#039; (&#039;&#039;&#039;i=1..T&#039;&#039;&#039;) se va afla un singur număr natural reprezentând răspunsul la a &#039;&#039;&#039;i&#039;&#039;&#039;-a întrebare.&lt;br /&gt;
== Restricţii şi precizări ==&lt;br /&gt;
* &#039;&#039;&#039;1 &amp;amp;les; n, T &amp;amp;les; 200 000&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;0 &amp;amp;les; a[i] &amp;amp;les; 2 000 000 000&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;0 &amp;amp;les; x &amp;amp;les; y &amp;amp;les; 2 000 000 000&#039;&#039;&#039;&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
;Intrare&lt;br /&gt;
 9 7&lt;br /&gt;
 6 1 3 5 3 3 9 20 9&lt;br /&gt;
 4 10&lt;br /&gt;
 0 100&lt;br /&gt;
 0 1&lt;br /&gt;
 500 506&lt;br /&gt;
 3 3&lt;br /&gt;
 10 18&lt;br /&gt;
 3 9&lt;br /&gt;
;Iesire&lt;br /&gt;
 Datele de intrare corespund restrictiilor impuse&lt;br /&gt;
 4&lt;br /&gt;
 9&lt;br /&gt;
 1&lt;br /&gt;
 0&lt;br /&gt;
 3&lt;br /&gt;
 0&lt;br /&gt;
 7&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
;Intrare&lt;br /&gt;
 210000 5&lt;br /&gt;
 16 17 20 24 30 35 40 45 50 55 60 65 70 75 80 85 90 95 100 105&lt;br /&gt;
 4 10&lt;br /&gt;
 0 100&lt;br /&gt;
 0 1&lt;br /&gt;
 500 506&lt;br /&gt;
 3 3&lt;br /&gt;
 10 18&lt;br /&gt;
 3 9&lt;br /&gt;
;Iesire&lt;br /&gt;
 Datele de intrare nu corespund restrictiilor impuse&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
from bisect import bisect_left, bisect_right&lt;br /&gt;
&lt;br /&gt;
n, T = map(int, input().strip().split())&lt;br /&gt;
if not (1 &amp;lt;= n &amp;lt;= 200000 and 1 &amp;lt;= T &amp;lt;= 200000):&lt;br /&gt;
    print(&amp;quot;Datele de intrare nu corespund restrictiilor impuse&amp;quot;)&lt;br /&gt;
    exit(1)&lt;br /&gt;
students = sorted(list(map(int, input().split())))&lt;br /&gt;
if any(s &amp;lt; 0 or s &amp;gt; 2000000000 for s in students):&lt;br /&gt;
    print(&amp;quot;Datele de intrare nu corespund restrictiilor impuse&amp;quot;)&lt;br /&gt;
    exit(1)&lt;br /&gt;
intervals = [list(map(int, input().split())) for _ in range(T)]&lt;br /&gt;
if any(x &amp;lt; 0 or y &amp;lt; x or y &amp;gt; 2000000000 for x, y in intervals):&lt;br /&gt;
    print(&amp;quot;Datele de intrare nu corespund restrictiilor impuse&amp;quot;)&lt;br /&gt;
    exit(1)&lt;br /&gt;
&lt;br /&gt;
print(&amp;quot;Datele de intrare corespund restrictiilor impuse&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
for x, y in intervals:&lt;br /&gt;
    start = bisect_left(students, x)&lt;br /&gt;
    end = bisect_right(students, y)&lt;br /&gt;
    print(end - start)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Brianna Waltner</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=2644_-_clase&amp;diff=9031</id>
		<title>2644 - clase</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=2644_-_clase&amp;diff=9031"/>
		<updated>2024-01-04T22:18:36Z</updated>

		<summary type="html">&lt;p&gt;Brianna Waltner: Pagină nouă: == Cerinţa == Într-o școală sunt &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039; clase, fiecare având un număr diferit de elevi. Școală primește &amp;#039;&amp;#039;&amp;#039;m&amp;#039;&amp;#039;&amp;#039; pachete cu cărți, fiecare cu un număr diferit de cărți. Pentru ca o clasa să primească un pachet, numărul elevilor din acea clasa trebuie să fie egal cu numărul cărților din pachet. Să se determine câte clase primesc un pachet de cărți. == Date de intrare == Fișierul de intrare &amp;#039;&amp;#039;&amp;#039;clasein.txt&amp;#039;&amp;#039;&amp;#039; va avea pe prima linie numărul &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039;, iar...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cerinţa ==&lt;br /&gt;
Într-o școală sunt &#039;&#039;&#039;n&#039;&#039;&#039; clase, fiecare având un număr diferit de elevi. Școală primește &#039;&#039;&#039;m&#039;&#039;&#039; pachete cu cărți, fiecare cu un număr diferit de cărți. Pentru ca o clasa să primească un pachet, numărul elevilor din acea clasa trebuie să fie egal cu numărul cărților din pachet. Să se determine câte clase primesc un pachet de cărți.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Fișierul de intrare &#039;&#039;&#039;clasein.txt&#039;&#039;&#039; va avea pe prima linie numărul &#039;&#039;&#039;n&#039;&#039;&#039;, iar pe următoarea linie &#039;&#039;&#039;n&#039;&#039;&#039; numere naturale ordonate crescător, separate prin spații, reprezentând numărul de elevi din fiecare clasa. Pe următoarea linie numărul &#039;&#039;&#039;m&#039;&#039;&#039;, și pe următoarea linie &#039;&#039;&#039;m&#039;&#039;&#039; numere, reprezentând numărul de cărți din fiecare pachet.&lt;br /&gt;
== Date de ieșire ==&lt;br /&gt;
Fișierul de ieșire &#039;&#039;&#039;claseout.txt&#039;&#039;&#039; va conține pe prima linie numărul de clase care primesc pachete cu cărți.&lt;br /&gt;
== Restricţii şi precizări ==&lt;br /&gt;
* &#039;&#039;&#039;1 &amp;amp;les; n, m &amp;amp;les; 10.000&#039;&#039;&#039;&lt;br /&gt;
* într-un pachet sunt maximum &#039;&#039;&#039;1.000.000.000.000&#039;&#039;&#039; cărți.&lt;br /&gt;
* într-o clasă sunt maximum &#039;&#039;&#039;1.000.000.000.000&#039;&#039;&#039; elevi.&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
;&#039;&#039;&#039;clasein.txt&#039;&#039;&#039;&lt;br /&gt;
 5&lt;br /&gt;
 16 17 20 24 30&lt;br /&gt;
 4&lt;br /&gt;
 78 20 17 74&lt;br /&gt;
;&#039;&#039;&#039;claseout.txt&#039;&#039;&#039;&lt;br /&gt;
 Datele de intrare corespund restrictiilor impuse&lt;br /&gt;
 2&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
;&#039;&#039;&#039;clasein.txt&#039;&#039;&#039;&lt;br /&gt;
 100000&lt;br /&gt;
 16 17 20 24 30&lt;br /&gt;
 4&lt;br /&gt;
 78 20 17 74&lt;br /&gt;
;&#039;&#039;&#039;claseout.txt&#039;&#039;&#039;&lt;br /&gt;
 Datele de intrare nu corespund restrictiilor impuse&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
def binary_search(arr, x):&lt;br /&gt;
    low = 0&lt;br /&gt;
    high = len(arr) - 1&lt;br /&gt;
    while low &amp;lt;= high:&lt;br /&gt;
        mid = (high + low) // 2&lt;br /&gt;
        if arr[mid] &amp;lt; x:&lt;br /&gt;
            low = mid + 1&lt;br /&gt;
        elif arr[mid] &amp;gt; x:&lt;br /&gt;
            high = mid - 1&lt;br /&gt;
        else:&lt;br /&gt;
            return mid&lt;br /&gt;
    return -1&lt;br /&gt;
&lt;br /&gt;
with open(&#039;clasein.txt&#039;, &#039;r&#039;) as fin:&lt;br /&gt;
    n = int(fin.readline().strip())&lt;br /&gt;
    if n &amp;lt; 1 or n &amp;gt; 10000:&lt;br /&gt;
        print(&amp;quot;Datele de intrare nu corespund restrictiilor impuse&amp;quot;)&lt;br /&gt;
        exit(1)&lt;br /&gt;
    students = sorted(list(map(int, fin.readline().split())))&lt;br /&gt;
    if any(s &amp;lt; 1 or s &amp;gt; 1000000000000 for s in students):&lt;br /&gt;
        print(&amp;quot;Datele de intrare nu corespund restrictiilor impuse&amp;quot;)&lt;br /&gt;
        exit(1)&lt;br /&gt;
    m = int(fin.readline().strip())&lt;br /&gt;
    if m &amp;lt; 1 or m &amp;gt; 10000:&lt;br /&gt;
        print(&amp;quot;Datele de intrare nu corespund restrictiilor impuse&amp;quot;)&lt;br /&gt;
        exit(1)&lt;br /&gt;
    books = sorted(list(map(int, fin.readline().split())))&lt;br /&gt;
    if any(b &amp;lt; 1 or b &amp;gt; 1000000000000 for b in books):&lt;br /&gt;
        print(&amp;quot;Datele de intrare nu corespund restrictiilor impuse&amp;quot;)&lt;br /&gt;
        exit(1)&lt;br /&gt;
&lt;br /&gt;
print(&amp;quot;Datele de intrare corespund restrictiilor impuse&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
count = 0&lt;br /&gt;
for s in students:&lt;br /&gt;
    index = binary_search(books, s)&lt;br /&gt;
    if index != -1:&lt;br /&gt;
        count += 1&lt;br /&gt;
        books.pop(index)&lt;br /&gt;
&lt;br /&gt;
with open(&#039;claseout.txt&#039;, &#039;w&#039;) as fout:&lt;br /&gt;
    fout.write(str(count))&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
== Explicatie ==&lt;br /&gt;
 Doar clasa cu &#039;&#039;&#039;20&#039;&#039;&#039; de elevi și cea cu &#039;&#039;&#039;17&#039;&#039;&#039; elevi vor primi pachete cu cărți.&lt;/div&gt;</summary>
		<author><name>Brianna Waltner</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=2006_-_Mana&amp;diff=9023</id>
		<title>2006 - Mana</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=2006_-_Mana&amp;diff=9023"/>
		<updated>2024-01-04T21:06:45Z</updated>

		<summary type="html">&lt;p&gt;Brianna Waltner: Pagină nouă: == Cerinţa == Înștiințat de atacul orcilor, Gandalf și-a luat măsurile de precauție. Credinciosul spion i-a adus acestuia o hartă care arată pozițiile celor &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039; orci. Harta poate fi reprezentată ca un sistem cartezian de coordonate. Gandalf vrea să folosească o vrajă astfel încât să anihileze cel puțin &amp;#039;&amp;#039;&amp;#039;k&amp;#039;&amp;#039;&amp;#039; orci. De asemenea, acesta vrea să folosească cât mai puțină mana. Știind că, dacă utilizează &amp;#039;&amp;#039;&amp;#039;r&amp;#039;&amp;#039;&amp;#039; mana (&amp;#039;&amp;#039;&amp;#039;r&amp;#039;&amp;#039;&amp;#039; număr natural), și v...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cerinţa ==&lt;br /&gt;
Înștiințat de atacul orcilor, Gandalf și-a luat măsurile de precauție. Credinciosul spion i-a adus acestuia o hartă care arată pozițiile celor &#039;&#039;&#039;n&#039;&#039;&#039; orci. Harta poate fi reprezentată ca un sistem cartezian de coordonate. Gandalf vrea să folosească o vrajă astfel încât să anihileze cel puțin &#039;&#039;&#039;k&#039;&#039;&#039; orci. De asemenea, acesta vrea să folosească cât mai puțină mana. Știind că, dacă utilizează &#039;&#039;&#039;r&#039;&#039;&#039; mana (&#039;&#039;&#039;r&#039;&#039;&#039; număr natural), și vraja este folosită în punctul de coordonate &#039;&#039;&#039;(x,y)&#039;&#039;&#039;, acesta anihilează toți orcii din interiorul cercului cu centrul în &#039;&#039;&#039;(x,y)&#039;&#039;&#039; de rază &#039;&#039;&#039;r&#039;&#039;&#039;, aflați mana minimă necesară pentru a anihila &#039;&#039;&#039;k&#039;&#039;&#039; orci.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Fișierul de intrare &#039;&#039;&#039;manain.txt&#039;&#039;&#039; conține pe prima linie două numere naturale &#039;&#039;&#039;n&#039;&#039;&#039;, &#039;&#039;&#039;k&#039;&#039;&#039;, cu semnificațiile din enunț. Pe următoarele &#039;&#039;&#039;n&#039;&#039;&#039; linii se găsesc câte două numere întregi separate printr-un spațiu, reprezentând abscisa respectiv ordonata fiecărui orc de pe hartă.&lt;br /&gt;
== Date de ieșire ==&lt;br /&gt;
Fișierul de ieșire &#039;&#039;&#039;manaout.txt&#039;&#039;&#039; va conține pe prima linie numărul &#039;&#039;&#039;r&#039;&#039;&#039;, reprezentând mana minimă pe care o poate utiliza Gandalf pentru a anihila &#039;&#039;&#039;k&#039;&#039;&#039; orci.&lt;br /&gt;
== Restricţii şi precizări ==&lt;br /&gt;
* &#039;&#039;&#039;1 &amp;amp;les; k &amp;amp;les; n &amp;amp;les; 100&#039;&#039;&#039;&lt;br /&gt;
* Numerele din fișierul de intrare sunt întregi cuprinse între &#039;&#039;&#039;-100000&#039;&#039;&#039; și &#039;&#039;&#039;100000&#039;&#039;&#039;.&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
;&#039;&#039;&#039;manain.txt&#039;&#039;&#039;&lt;br /&gt;
 5 3&lt;br /&gt;
 3 3&lt;br /&gt;
 5 3&lt;br /&gt;
 1 -5&lt;br /&gt;
 -4 1&lt;br /&gt;
 0 3&lt;br /&gt;
;&#039;&#039;&#039;manaout.txt&#039;&#039;&#039;&lt;br /&gt;
 3&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
;&#039;&#039;&#039;manain.txt&#039;&#039;&#039;&lt;br /&gt;
 5 3&lt;br /&gt;
 3 3&lt;br /&gt;
 5 3&lt;br /&gt;
 1 -5&lt;br /&gt;
 -4 1&lt;br /&gt;
 1000001 3&lt;br /&gt;
;&#039;&#039;&#039;manaout.txt&#039;&#039;&#039;&lt;br /&gt;
 Datele de intrare nu corespund restrictiilor impuse&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
from math import sqrt, ceil&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def distanta(p1, p2):&lt;br /&gt;
    return sqrt((p1[0] - p2[0]) ** 2 + (p1[1] - p2[1]) ** 2)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def mana_minima(n_val, k_val, orci_val):&lt;br /&gt;
    if not (1 &amp;lt;= k_val &amp;lt;= n_val &amp;lt;= 100):&lt;br /&gt;
        return &amp;quot;Datele de intrare nu corespund restrictiilor impuse&amp;quot;&lt;br /&gt;
    if any(abs(orc[0]) &amp;gt; 100000 or abs(orc[1]) &amp;gt; 100000 for orc in orci_val):&lt;br /&gt;
        return &amp;quot;Datele de intrare nu corespund restrictiilor impuse&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    distante = []&lt;br /&gt;
    for orc in orci_val:&lt;br /&gt;
        distante_orc = sorted(distanta(orc, orc2) for orc2 in orci_val)&lt;br /&gt;
        distante.append(distante_orc[k_val - 1])&lt;br /&gt;
    return ceil(min(distante))&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
with open(&#039;manain.txt&#039;, &#039;r&#039;) as fin:&lt;br /&gt;
    n, k = map(int, fin.readline().strip().split())&lt;br /&gt;
    orci = [list(map(int, line.split())) for line in fin]&lt;br /&gt;
    result = mana_minima(n, k, orci)&lt;br /&gt;
&lt;br /&gt;
with open(&#039;manaout.txt&#039;, &#039;w&#039;) as fout:&lt;br /&gt;
    fout.write(str(result))&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
== Explicatie ==&lt;br /&gt;
 Gandalf poate să folosească vraja în punctul de abscisă &#039;&#039;&#039;2,5&#039;&#039;&#039; și ordonată &#039;&#039;&#039;3&#039;&#039;&#039;.&lt;/div&gt;</summary>
		<author><name>Brianna Waltner</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=508_-_Cautare_Binara&amp;diff=9018</id>
		<title>508 - Cautare Binara</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=508_-_Cautare_Binara&amp;diff=9018"/>
		<updated>2024-01-04T20:36:23Z</updated>

		<summary type="html">&lt;p&gt;Brianna Waltner: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cerinţa ==&lt;br /&gt;
Se dă un vector &#039;&#039;&#039;x&#039;&#039;&#039; cu &#039;&#039;&#039;n&#039;&#039;&#039; elemente numere naturale, ordonate crescător, și un vector &#039;&#039;&#039;y&#039;&#039;&#039; cu &#039;&#039;&#039;m&#039;&#039;&#039; elemente, de asemenea numere naturale. Verificați pentru fiecare element al vectorului &#039;&#039;&#039;y&#039;&#039;&#039; dacă apare în &#039;&#039;&#039;x&#039;&#039;&#039;.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Programul citește de la tastatură numărul &#039;&#039;&#039;n&#039;&#039;&#039;, iar apoi cele &#039;&#039;&#039;n&#039;&#039;&#039; elemente ale vectorului &#039;&#039;&#039;x&#039;&#039;&#039;. Apoi și citește &#039;&#039;&#039;m&#039;&#039;&#039; și cele &#039;&#039;&#039;m&#039;&#039;&#039; elemente ale lui &#039;&#039;&#039;y&#039;&#039;&#039;.&lt;br /&gt;
== Date de ieșire ==&lt;br /&gt;
Programul va afișa pe ecran &#039;&#039;&#039;m&#039;&#039;&#039; valori &#039;&#039;&#039;0&#039;&#039;&#039; sau &#039;&#039;&#039;1&#039;&#039;&#039;, separate prin exact un spațiu. A &#039;&#039;&#039;j&#039;&#039;&#039;-a valoare afișată este &#039;&#039;&#039;1&#039;&#039;&#039;, dacă al j-lea element al șirului &#039;&#039;&#039;y&#039;&#039;&#039; apare în &#039;&#039;&#039;x&#039;&#039;&#039;, respectiv 0 în caz contrar.&lt;br /&gt;
== Restricţii şi precizări ==&lt;br /&gt;
* &#039;&#039;&#039;1 &amp;amp;les; n &amp;amp;les; 25.000&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;1 &amp;amp;les; m &amp;amp;les; 200.000&#039;&#039;&#039;&lt;br /&gt;
* elementele celor &#039;&#039;&#039;2&#039;&#039;&#039; vectori vor fi mai mici decât &#039;&#039;&#039;1.000.000.000&#039;&#039;&#039;&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
;Intrare&lt;br /&gt;
 7&lt;br /&gt;
 1 2 5 6 9 10 14 &lt;br /&gt;
 8&lt;br /&gt;
 8 14 9 14 16 15 4 2 &lt;br /&gt;
;Iesire &lt;br /&gt;
 0 1 1 1 0 0 0 1&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
;Intrare&lt;br /&gt;
 30000&lt;br /&gt;
 1 2 5 6 9 10 14 &lt;br /&gt;
 8&lt;br /&gt;
 8 14 9 14 16 15 4 2 &lt;br /&gt;
;Iesire&lt;br /&gt;
 Datele de intrare nu corespund restrictiilor impuse&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
def verifica_elemente():&lt;br /&gt;
    n_val = int(input(&amp;quot;Introduceti numarul n: &amp;quot;))&lt;br /&gt;
    x_val = list(map(int, input(&amp;quot;Introduceti elementele vectorului x: &amp;quot;).split()))&lt;br /&gt;
&lt;br /&gt;
    m_val = int(input(&amp;quot;Introduceti numarul m: &amp;quot;))&lt;br /&gt;
    y_val = list(map(int, input(&amp;quot;Introduceti elementele vectorului y: &amp;quot;).split()))&lt;br /&gt;
&lt;br /&gt;
    if not (1 &amp;lt;= n_val &amp;lt;= 25000) or not (1 &amp;lt;= m_val &amp;lt;= 200000):&lt;br /&gt;
        return &amp;quot;Datele de intrare nu corespund restrictiilor impuse&amp;quot;&lt;br /&gt;
    if max(x_val) &amp;gt;= 1000000000 or max(y_val) &amp;gt;= 1000000000:&lt;br /&gt;
        return &amp;quot;Datele de intrare nu corespund restrictiilor impuse&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    x_set = set(x_val)&lt;br /&gt;
&lt;br /&gt;
    rezultat = [1 if elem in x_set else 0 for elem in y_val]&lt;br /&gt;
&lt;br /&gt;
    return &amp;quot; &amp;quot;.join(map(str, rezultat))&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
print(verifica_elemente())&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Brianna Waltner</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=508_-_Cautare_Binara&amp;diff=9015</id>
		<title>508 - Cautare Binara</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=508_-_Cautare_Binara&amp;diff=9015"/>
		<updated>2024-01-04T20:16:35Z</updated>

		<summary type="html">&lt;p&gt;Brianna Waltner: Pagină nouă: == Cerinţa == Se dă un vector &amp;#039;&amp;#039;&amp;#039;x&amp;#039;&amp;#039;&amp;#039; cu &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039; elemente numere naturale, ordonate crescător, și un vector &amp;#039;&amp;#039;&amp;#039;y&amp;#039;&amp;#039;&amp;#039; cu &amp;#039;&amp;#039;&amp;#039;m&amp;#039;&amp;#039;&amp;#039; elemente, de asemenea numere naturale. Verificați pentru fiecare element al vectorului &amp;#039;&amp;#039;&amp;#039;y&amp;#039;&amp;#039;&amp;#039; dacă apare în &amp;#039;&amp;#039;&amp;#039;x&amp;#039;&amp;#039;&amp;#039;. == Date de intrare == Programul citește de la tastatură numărul &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039;, iar apoi cele &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039; elemente ale vectorului &amp;#039;&amp;#039;&amp;#039;x&amp;#039;&amp;#039;&amp;#039;. Apoi și citește &amp;#039;&amp;#039;&amp;#039;m&amp;#039;&amp;#039;&amp;#039; și cele &amp;#039;&amp;#039;&amp;#039;m&amp;#039;&amp;#039;&amp;#039; elemente ale lui &amp;#039;&amp;#039;&amp;#039;y&amp;#039;&amp;#039;&amp;#039;. == Date de ieșire == Progra...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cerinţa ==&lt;br /&gt;
Se dă un vector &#039;&#039;&#039;x&#039;&#039;&#039; cu &#039;&#039;&#039;n&#039;&#039;&#039; elemente numere naturale, ordonate crescător, și un vector &#039;&#039;&#039;y&#039;&#039;&#039; cu &#039;&#039;&#039;m&#039;&#039;&#039; elemente, de asemenea numere naturale. Verificați pentru fiecare element al vectorului &#039;&#039;&#039;y&#039;&#039;&#039; dacă apare în &#039;&#039;&#039;x&#039;&#039;&#039;.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Programul citește de la tastatură numărul &#039;&#039;&#039;n&#039;&#039;&#039;, iar apoi cele &#039;&#039;&#039;n&#039;&#039;&#039; elemente ale vectorului &#039;&#039;&#039;x&#039;&#039;&#039;. Apoi și citește &#039;&#039;&#039;m&#039;&#039;&#039; și cele &#039;&#039;&#039;m&#039;&#039;&#039; elemente ale lui &#039;&#039;&#039;y&#039;&#039;&#039;.&lt;br /&gt;
== Date de ieșire ==&lt;br /&gt;
Programul va afișa pe ecran &#039;&#039;&#039;m&#039;&#039;&#039; valori &#039;&#039;&#039;0&#039;&#039;&#039; sau &#039;&#039;&#039;1&#039;&#039;&#039;, separate prin exact un spațiu. A &#039;&#039;&#039;j&#039;&#039;&#039;-a valoare afișată este &#039;&#039;&#039;1&#039;&#039;&#039;, dacă al j-lea element al șirului &#039;&#039;&#039;y&#039;&#039;&#039; apare în &#039;&#039;&#039;x&#039;&#039;&#039;, respectiv 0 în caz contrar.&lt;br /&gt;
== Restricţii şi precizări ==&lt;br /&gt;
* &#039;&#039;&#039;1 ≤ n ≤ 25.000&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;1 ≤ m ≤ 200.000&#039;&#039;&#039;&lt;br /&gt;
* elementele celor &#039;&#039;&#039;2&#039;&#039;&#039; vectori vor fi mai mici decât &#039;&#039;&#039;1.000.000.000&#039;&#039;&#039;&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
;Intrare&lt;br /&gt;
 7&lt;br /&gt;
 1 2 5 6 9 10 14 &lt;br /&gt;
 8&lt;br /&gt;
 8 14 9 14 16 15 4 2 &lt;br /&gt;
;Iesire &lt;br /&gt;
 0 1 1 1 0 0 0 1&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
;Intrare&lt;br /&gt;
 30000&lt;br /&gt;
 1 2 5 6 9 10 14 &lt;br /&gt;
 8&lt;br /&gt;
 8 14 9 14 16 15 4 2 &lt;br /&gt;
;Iesire&lt;br /&gt;
 Datele de intrare nu corespund restrictiilor impuse&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
def verifica_elemente():&lt;br /&gt;
    n_val = int(input(&amp;quot;Introduceti numarul n: &amp;quot;))&lt;br /&gt;
    x_val = list(map(int, input(&amp;quot;Introduceti elementele vectorului x: &amp;quot;).split()))&lt;br /&gt;
&lt;br /&gt;
    m_val = int(input(&amp;quot;Introduceti numarul m: &amp;quot;))&lt;br /&gt;
    y_val = list(map(int, input(&amp;quot;Introduceti elementele vectorului y: &amp;quot;).split()))&lt;br /&gt;
&lt;br /&gt;
    if not (1 &amp;lt;= n_val &amp;lt;= 25000) or not (1 &amp;lt;= m_val &amp;lt;= 200000):&lt;br /&gt;
        return &amp;quot;Datele de intrare nu corespund restrictiilor impuse&amp;quot;&lt;br /&gt;
    if max(x_val) &amp;gt;= 1000000000 or max(y_val) &amp;gt;= 1000000000:&lt;br /&gt;
        return &amp;quot;Datele de intrare nu corespund restrictiilor impuse&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    x_set = set(x_val)&lt;br /&gt;
&lt;br /&gt;
    rezultat = [1 if elem in x_set else 0 for elem in y_val]&lt;br /&gt;
&lt;br /&gt;
    return &amp;quot; &amp;quot;.join(map(str, rezultat))&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
print(verifica_elemente())&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Brianna Waltner</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=0543_-_Bipartit_2&amp;diff=8968</id>
		<title>0543 - Bipartit 2</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=0543_-_Bipartit_2&amp;diff=8968"/>
		<updated>2024-01-04T14:21:17Z</updated>

		<summary type="html">&lt;p&gt;Brianna Waltner: Pagină nouă: == Cerinţa == Se dă lista muchiilor unui graf neorientat conex cu &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039; vârfuri, etichetate de la &amp;#039;&amp;#039;&amp;#039;1&amp;#039;&amp;#039;&amp;#039; la &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039;. Să se verifice dacă graful este bipartit. == Date de intrare == Fişierul de intrare &amp;#039;&amp;#039;&amp;#039;bipartit2in.txt&amp;#039;&amp;#039;&amp;#039; conţine pe prima linie numerele &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039; și &amp;#039;&amp;#039;&amp;#039;m&amp;#039;&amp;#039;&amp;#039;, reprezentând numărul de vârfuri ale grafului și numărul de muchii. Fiecare dintre următoarele &amp;#039;&amp;#039;&amp;#039;m&amp;#039;&amp;#039;&amp;#039; linii conține câte o pereche de numere &amp;#039;&amp;#039;&amp;#039;i j&amp;#039;&amp;#039;&amp;#039;, cu semnificația că există muchi...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cerinţa ==&lt;br /&gt;
Se dă lista muchiilor unui graf neorientat conex cu &#039;&#039;&#039;n&#039;&#039;&#039; vârfuri, etichetate de la &#039;&#039;&#039;1&#039;&#039;&#039; la &#039;&#039;&#039;n&#039;&#039;&#039;. Să se verifice dacă graful este bipartit.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Fişierul de intrare &#039;&#039;&#039;bipartit2in.txt&#039;&#039;&#039; conţine pe prima linie numerele &#039;&#039;&#039;n&#039;&#039;&#039; și &#039;&#039;&#039;m&#039;&#039;&#039;, reprezentând numărul de vârfuri ale grafului și numărul de muchii. Fiecare dintre următoarele &#039;&#039;&#039;m&#039;&#039;&#039; linii conține câte o pereche de numere &#039;&#039;&#039;i j&#039;&#039;&#039;, cu semnificația că există muchie între &#039;&#039;&#039;i&#039;&#039;&#039; și &#039;&#039;&#039;j&#039;&#039;&#039;.&lt;br /&gt;
== Date de ieșire ==&lt;br /&gt;
Fişierul de ieşire &#039;&#039;&#039;bipartit2out.txt&#039;&#039;&#039; va conţine pe prima linie mesajul &#039;&#039;&#039;DA&#039;&#039;&#039;, dacă graful este bipartit, respectiv &#039;&#039;&#039;NU&#039;&#039;&#039; în caz contrar.&lt;br /&gt;
&lt;br /&gt;
Dacă mesajul este &#039;&#039;&#039;DA&#039;&#039;&#039;, următoarele două linii vor conţine două mulţimi care formează partiţia vârfurilor. Elementele fiecărei mulţimi vor fi afişate în ordine crescătoare, separate prin exact un spaţiu. Prima mulţime va fi cea care conţine vârful &#039;&#039;&#039;1&#039;&#039;&#039;.&lt;br /&gt;
== Restricţii şi precizări ==&lt;br /&gt;
* &#039;&#039;&#039;1 &amp;amp;les; n &amp;amp;les; 100&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;1 &amp;amp;les; i , j &amp;amp;les; n&#039;&#039;&#039;&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
;&#039;&#039;&#039;bipartit2in.txt&#039;&#039;&#039;&lt;br /&gt;
 7 6&lt;br /&gt;
 1 4&lt;br /&gt;
 1 6&lt;br /&gt;
 6 5&lt;br /&gt;
 3 2&lt;br /&gt;
 3 5&lt;br /&gt;
 3 7&lt;br /&gt;
;&#039;&#039;&#039;bipartit2out.txt&#039;&#039;&#039; &lt;br /&gt;
 Datele de intrare corespund resprictiilor impuse&lt;br /&gt;
 DA&lt;br /&gt;
 1 2 5 7 &lt;br /&gt;
 3 4 6 &lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
;&#039;&#039;&#039;bipartit2in.txt&#039;&#039;&#039;&lt;br /&gt;
 0 6&lt;br /&gt;
 1 4&lt;br /&gt;
 1 6&lt;br /&gt;
 6 5&lt;br /&gt;
 3 2&lt;br /&gt;
 3 5&lt;br /&gt;
 3 7&lt;br /&gt;
;&#039;&#039;&#039;bipartit2out.txt&#039;&#039;&#039;&lt;br /&gt;
 Datele de intrare nu corespund resprictiilor impuse&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
from collections import defaultdict&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def is_bipartite():&lt;br /&gt;
    with open(&#039;bipartit2in.txt&#039;, &#039;r&#039;) as fin:&lt;br /&gt;
        n, m = map(int, fin.readline().split())&lt;br /&gt;
        if n &amp;lt;= 1 or n &amp;gt; 100:&lt;br /&gt;
            return &amp;quot;Datele de intrare nu corespund resprictiilor impuse&amp;quot;, [], []&lt;br /&gt;
        edges = [tuple(map(int, line.split())) for line in fin.readlines()]&lt;br /&gt;
        for u, v in edges:&lt;br /&gt;
            if u &amp;lt; 1 or u &amp;gt; n or v &amp;lt; 1 or v &amp;gt; n:&lt;br /&gt;
                return &amp;quot;Datele de intrare nu corespund resprictiilor impuse&amp;quot;, [], []&lt;br /&gt;
&lt;br /&gt;
    print(&amp;quot;Datele de intrare corespund resprictiilor impuse&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    graph = defaultdict(list)&lt;br /&gt;
    for u, v in edges:&lt;br /&gt;
        graph[u].append(v)&lt;br /&gt;
        graph[v].append(u)&lt;br /&gt;
&lt;br /&gt;
    color = defaultdict(int)&lt;br /&gt;
    partition = defaultdict(list)&lt;br /&gt;
    for node in range(1, n+1):&lt;br /&gt;
        if node not in color:&lt;br /&gt;
            stack = [(node, 1)]&lt;br /&gt;
            while stack:&lt;br /&gt;
                node, c = stack.pop()&lt;br /&gt;
                color[node] = c&lt;br /&gt;
                partition[c].append(node)&lt;br /&gt;
                for neighbour in graph[node]:&lt;br /&gt;
                    if neighbour not in color:&lt;br /&gt;
                        stack.append((neighbour, -c))&lt;br /&gt;
                    elif color[neighbour] == color[node]:&lt;br /&gt;
                        return &#039;NU&#039;, [], []&lt;br /&gt;
    return &#039;DA&#039;, sorted(partition[1]), sorted(partition[-1])&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
result, group1, group2 = is_bipartite()&lt;br /&gt;
with open(&#039;bipartit2out.txt&#039;, &#039;w&#039;) as fout:&lt;br /&gt;
    fout.write(result + &#039;\n&#039;)&lt;br /&gt;
    if result == &#039;DA&#039;:&lt;br /&gt;
        fout.write(&#039; &#039;.join(map(str, group1)) + &#039;\n&#039;)&lt;br /&gt;
        fout.write(&#039; &#039;.join(map(str, group2)) + &#039;\n&#039;)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Brianna Waltner</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=4290_-_Gaseste_Ciclu&amp;diff=8946</id>
		<title>4290 - Gaseste Ciclu</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=4290_-_Gaseste_Ciclu&amp;diff=8946"/>
		<updated>2024-01-03T23:39:33Z</updated>

		<summary type="html">&lt;p&gt;Brianna Waltner: Pagină nouă: == Cerinţa == Gigel are un graf cu &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039; noduri și &amp;#039;&amp;#039;&amp;#039;m&amp;#039;&amp;#039;&amp;#039; muchii, care nu este conex. El dorește să afle răspunsul la două întrebări:  1) Care este numărul minim de muchii ce trebuie ađugate astfel încât graful să devină conex?  2) Dacă costul adăugării unei muchii între nodurile &amp;#039;&amp;#039;&amp;#039;a&amp;#039;&amp;#039;&amp;#039; și b este &amp;#039;&amp;#039;&amp;#039;a + b&amp;#039;&amp;#039;&amp;#039;, care este costul total minim al muchiilor care trebuie adăugate astfel încât graful să devină conex? == Date de intrare == Fișierul de intra...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cerinţa ==&lt;br /&gt;
Gigel are un graf cu &#039;&#039;&#039;n&#039;&#039;&#039; noduri și &#039;&#039;&#039;m&#039;&#039;&#039; muchii, care nu este conex. El dorește să afle răspunsul la două întrebări:&lt;br /&gt;
&lt;br /&gt;
1) Care este numărul minim de muchii ce trebuie ađugate astfel încât graful să devină conex?&lt;br /&gt;
&lt;br /&gt;
2) Dacă costul adăugării unei muchii între nodurile &#039;&#039;&#039;a&#039;&#039;&#039; și b este &#039;&#039;&#039;a + b&#039;&#039;&#039;, care este costul total minim al muchiilor care trebuie adăugate astfel încât graful să devină conex?&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Fișierul de intrare &#039;&#039;&#039;unirein.txt&#039;&#039;&#039; conține pe prima linie numerele &#039;&#039;&#039;n&#039;&#039;&#039; și &#039;&#039;&#039;m&#039;&#039;&#039;, pe a doua linie conține numărul &#039;&#039;&#039;c&#039;&#039;&#039;, reprezentând numărul cerinței &#039;&#039;&#039;1 &amp;amp;les; c &amp;amp;les; 2&#039;&#039;&#039;, iar pe următoarele &#039;&#039;&#039;m&#039;&#039;&#039; linii se află muchiile grafului &#039;&#039;&#039;a b&#039;&#039;&#039;, &#039;&#039;&#039;1 &amp;amp;les; a, b &amp;amp;les; n&#039;&#039;&#039;, &#039;&#039;&#039;a ≠ b&#039;&#039;&#039;.&lt;br /&gt;
== Date de ieșire ==&lt;br /&gt;
Fișierul de ieșire &#039;&#039;&#039;unireout.txt&#039;&#039;&#039; va conține pe prima linie numărul &#039;&#039;&#039;S&#039;&#039;&#039;, reprezentând răspunsul cerut de Gigel.&lt;br /&gt;
== Restricţii şi precizări ==&lt;br /&gt;
* &#039;&#039;&#039;1 &amp;amp;les; n &amp;amp;les; 100000, 0 &amp;amp;les; m &amp;amp;les; n-1&#039;&#039;&#039;&lt;br /&gt;
* Pentru teste în valoare de &#039;&#039;&#039;30&#039;&#039;&#039; de puncte, cerința va fi &#039;&#039;&#039;1&#039;&#039;&#039;.&lt;br /&gt;
* Pentru teste în valoare de &#039;&#039;&#039;40&#039;&#039;&#039; de puncte, &#039;&#039;&#039;1 &amp;amp;les; n &amp;amp;les; 1000&#039;&#039;&#039;.&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
;&#039;&#039;&#039;unirein.txt&#039;&#039;&#039;&lt;br /&gt;
 6 3&lt;br /&gt;
 1&lt;br /&gt;
 1 2&lt;br /&gt;
 3 4&lt;br /&gt;
 5 6&lt;br /&gt;
;&#039;&#039;&#039;unireout.txt&#039;&#039;&#039;&lt;br /&gt;
 Datele de intrare corespund restrictiilor impuse&lt;br /&gt;
 2&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
;&#039;&#039;&#039;unirein.txt&#039;&#039;&#039;&lt;br /&gt;
 100001 1&lt;br /&gt;
 1&lt;br /&gt;
 1 2&lt;br /&gt;
;&#039;&#039;&#039;unireout.txt&#039;&#039;&#039;&lt;br /&gt;
 Datele de intrare nu corespund restrictiilor impuse&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
import heapq&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def find(parent, i):&lt;br /&gt;
    if parent[i] == i:&lt;br /&gt;
        return i&lt;br /&gt;
    return find(parent, parent[i])&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def union(parent, rank, x, y):&lt;br /&gt;
    xroot = find(parent, x)&lt;br /&gt;
    yroot = find(parent, y)&lt;br /&gt;
&lt;br /&gt;
    if rank[xroot] &amp;lt; rank[yroot]:&lt;br /&gt;
        parent[xroot] = yroot&lt;br /&gt;
    elif rank[xroot] &amp;gt; rank[yroot]:&lt;br /&gt;
        parent[yroot] = xroot&lt;br /&gt;
    else:&lt;br /&gt;
        parent[yroot] = xroot&lt;br /&gt;
        rank[xroot] += 1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def solve(n, c, edges):&lt;br /&gt;
    parent = [i for i in range(n+1)]&lt;br /&gt;
    rank = [0] * (n+1)&lt;br /&gt;
&lt;br /&gt;
    for a, b in edges:&lt;br /&gt;
        union(parent, rank, a, b)&lt;br /&gt;
&lt;br /&gt;
    sets = [find(parent, i) for i in range(1, n+1)]&lt;br /&gt;
    unique_sets = list(set(sets))&lt;br /&gt;
&lt;br /&gt;
    if c == 1:&lt;br /&gt;
        return len(unique_sets) - 1&lt;br /&gt;
    else:&lt;br /&gt;
        costs = [i for i in unique_sets]&lt;br /&gt;
        heapq.heapify(costs)&lt;br /&gt;
        total_cost = 0&lt;br /&gt;
&lt;br /&gt;
        while len(costs) &amp;gt; 1:&lt;br /&gt;
            cost1 = heapq.heappop(costs)&lt;br /&gt;
            cost2 = heapq.heappop(costs)&lt;br /&gt;
            total_cost += cost1 + cost2&lt;br /&gt;
            heapq.heappush(costs, cost1 + cost2)&lt;br /&gt;
&lt;br /&gt;
        return total_cost&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
    with open(&#039;unirein.txt&#039;, &#039;r&#039;) as f:&lt;br /&gt;
        n, _ = map(int, f.readline().split())&lt;br /&gt;
        c = int(f.readline())&lt;br /&gt;
        edges = [list(map(int, line.split())) for line in f]&lt;br /&gt;
&lt;br /&gt;
    if not (1 &amp;lt;= n &amp;lt;= 100000):&lt;br /&gt;
        print(&amp;quot;Datele de intrare nu corespund restrictiilor impuse&amp;quot;)&lt;br /&gt;
        return&lt;br /&gt;
&lt;br /&gt;
    result = solve(n, c, edges)&lt;br /&gt;
&lt;br /&gt;
    with open(&#039;unireout.txt&#039;, &#039;w&#039;) as f:&lt;br /&gt;
        f.write(str(result))&lt;br /&gt;
&lt;br /&gt;
    print(&amp;quot;Datele de intrare corespund restrictiilor impuse&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    main()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Explicaţie ==&lt;br /&gt;
 Se vor uni nodurile &#039;&#039;&#039;1&#039;&#039;&#039; și &#039;&#039;&#039;3&#039;&#039;&#039;, respectiv nodurile &#039;&#039;&#039;1&#039;&#039;&#039;și &#039;&#039;&#039;5&#039;&#039;&#039;, s-au folosit &#039;&#039;&#039;2&#039;&#039;&#039; muchii, iar costul total va fi &#039;&#039;&#039;1 + 3 + 1 + 5 = 10&#039;&#039;&#039;.&lt;/div&gt;</summary>
		<author><name>Brianna Waltner</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=0541_-_Lant_1&amp;diff=8942</id>
		<title>0541 - Lant 1</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=0541_-_Lant_1&amp;diff=8942"/>
		<updated>2024-01-03T22:59:22Z</updated>

		<summary type="html">&lt;p&gt;Brianna Waltner: Pagină nouă: == Cerinţa == Se dă lista muchiilor unui graf neorientat și trei vârfuri &amp;#039;&amp;#039;&amp;#039;p q r&amp;#039;&amp;#039;&amp;#039; . Să se determine un lanț cu extremitățile &amp;#039;&amp;#039;&amp;#039;p q&amp;#039;&amp;#039;&amp;#039; care conține vârful &amp;#039;&amp;#039;&amp;#039;r&amp;#039;&amp;#039;&amp;#039;. == Date de intrare == Fişierul de intrare &amp;#039;&amp;#039;&amp;#039;lant1in.txt&amp;#039;&amp;#039;&amp;#039; conţine pe prima linie numerele &amp;#039;&amp;#039;&amp;#039;n p q r&amp;#039;&amp;#039;&amp;#039;, reprezentând numărul de vârfuri ale grafului și cele trei vârfuri date. Fiecare dintre următoarele linii conține câte o pereche de numere &amp;#039;&amp;#039;&amp;#039;i j&amp;#039;&amp;#039;&amp;#039;, cu semnificația că există muchie...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cerinţa ==&lt;br /&gt;
Se dă lista muchiilor unui graf neorientat și trei vârfuri &#039;&#039;&#039;p q r&#039;&#039;&#039; . Să se determine un lanț cu extremitățile &#039;&#039;&#039;p q&#039;&#039;&#039; care conține vârful &#039;&#039;&#039;r&#039;&#039;&#039;.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Fişierul de intrare &#039;&#039;&#039;lant1in.txt&#039;&#039;&#039; conţine pe prima linie numerele &#039;&#039;&#039;n p q r&#039;&#039;&#039;, reprezentând numărul de vârfuri ale grafului și cele trei vârfuri date. Fiecare dintre următoarele linii conține câte o pereche de numere &#039;&#039;&#039;i j&#039;&#039;&#039;, cu semnificația că există muchie între &#039;&#039;&#039;i&#039;&#039;&#039; și &#039;&#039;&#039;j&#039;&#039;&#039;.&lt;br /&gt;
== Date de ieșire ==&lt;br /&gt;
Fişierul de ieşire &#039;&#039;&#039;lant1out.txt&#039;&#039;&#039; va conţine pe prima linie numărul de vârfuri din lanțul determinat. A doua linie va conține vârfurile din acest lanț, separate prin exact un spațiu.&lt;br /&gt;
== Restricţii şi precizări ==&lt;br /&gt;
* &#039;&#039;&#039;1 &amp;amp;les; n &amp;amp;les; 100&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;1 &amp;amp;les; i , j &amp;amp;les; n&#039;&#039;&#039;&lt;br /&gt;
* în fișierul de intrare muchiile se pot repeta;&lt;br /&gt;
* orice lanț cu extremitățile &#039;&#039;&#039;p q&#039;&#039;&#039; care conține vârful &#039;&#039;&#039;r&#039;&#039;&#039; și are lungimea mai mică decât &#039;&#039;&#039;2*n&#039;&#039;&#039; este acceptat; lanțul nu trebuie să fie elementar&lt;br /&gt;
* pentru toate datele de test există cel puțin un lanț care respectă cerința;&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
;&#039;&#039;&#039;lant1in.txt&#039;&#039;&#039;&lt;br /&gt;
 8 5 7 3&lt;br /&gt;
 1 2&lt;br /&gt;
 1 3&lt;br /&gt;
 1 5&lt;br /&gt;
 2 3&lt;br /&gt;
 2 5&lt;br /&gt;
 2 7&lt;br /&gt;
 3 6&lt;br /&gt;
 4 6&lt;br /&gt;
 4 7&lt;br /&gt;
 5 7&lt;br /&gt;
 6 8&lt;br /&gt;
 7 8&lt;br /&gt;
;&#039;&#039;&#039;lant1out.txt&#039;&#039;&#039;&lt;br /&gt;
 Datele de intrare corespund restrictiilor impuse&lt;br /&gt;
 5&lt;br /&gt;
 5 1 3 2 7&lt;br /&gt;
== Exemplu 2 ==&lt;br /&gt;
;&#039;&#039;&#039;lant1in.txt&#039;&#039;&#039;&lt;br /&gt;
 5 1 2 3&lt;br /&gt;
 1 2&lt;br /&gt;
 2 3&lt;br /&gt;
 3 4&lt;br /&gt;
 4 5&lt;br /&gt;
 5 1&lt;br /&gt;
 1 1000001&lt;br /&gt;
;&#039;&#039;&#039;lant1out.txt&#039;&#039;&#039;&lt;br /&gt;
 Datele de intrare nu corespund restrictiilor impuse&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
from collections import defaultdict&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def bfs(graf, start):&lt;br /&gt;
    vizitat = [False] * (len(graf) + 1)&lt;br /&gt;
    coada = [start]&lt;br /&gt;
    vizitat[start] = True&lt;br /&gt;
    parinte = [-1] * (len(graf) + 1)&lt;br /&gt;
&lt;br /&gt;
    while coada:&lt;br /&gt;
        nod = coada.pop(0)&lt;br /&gt;
        for vecin in graf[nod]:&lt;br /&gt;
            if not vizitat[vecin]:&lt;br /&gt;
                coada.append(vecin)&lt;br /&gt;
                vizitat[vecin] = True&lt;br /&gt;
                parinte[vecin] = nod&lt;br /&gt;
&lt;br /&gt;
    return parinte&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def construieste_lant(parinte, start, end):&lt;br /&gt;
    lant = []&lt;br /&gt;
    nod = end&lt;br /&gt;
    while nod != start:&lt;br /&gt;
        lant.append(nod)&lt;br /&gt;
        nod = parinte[nod]&lt;br /&gt;
    lant.append(start)&lt;br /&gt;
    return lant[::-1]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
    with open(&#039;lant1in.txt&#039;, &#039;r&#039;) as f:&lt;br /&gt;
        n, p, q, r = map(int, f.readline().split())&lt;br /&gt;
        graf = defaultdict(list)&lt;br /&gt;
        muchii = []&lt;br /&gt;
        for _ in range(n-1):&lt;br /&gt;
            x, y = map(int, f.readline().split())&lt;br /&gt;
            muchii.append((x, y))&lt;br /&gt;
            graf[x-1].append(y-1)&lt;br /&gt;
            graf[y-1].append(x-1)&lt;br /&gt;
&lt;br /&gt;
    m = len(muchii)&lt;br /&gt;
    if 1 &amp;lt;= n &amp;lt;= 100000 and 0 &amp;lt;= m &amp;lt;= n*(n-1)//2:&lt;br /&gt;
        print(&amp;quot;Datele de intrare corespund restrictiilor impuse&amp;quot;)&lt;br /&gt;
        parinte = bfs(graf, p-1)&lt;br /&gt;
        lant = construieste_lant(parinte, p-1, r-1)&lt;br /&gt;
        parinte = bfs(graf, r-1)&lt;br /&gt;
        lant += construieste_lant(parinte, r-1, q-1)[1:]&lt;br /&gt;
        with open(&#039;lant1out.txt&#039;, &#039;w&#039;) as f:&lt;br /&gt;
            f.write(str(len(lant)) + &amp;quot;\n&amp;quot;)&lt;br /&gt;
            f.write(&#039; &#039;.join(map(str, [i+1 for i in lant])) + &amp;quot;\n&amp;quot;)&lt;br /&gt;
    else:&lt;br /&gt;
        print(&amp;quot;Datele de intrare nu corespund restrictiilor impuse&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    main()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Brianna Waltner</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=4204_-_Este_Arbore&amp;diff=8932</id>
		<title>4204 - Este Arbore</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=4204_-_Este_Arbore&amp;diff=8932"/>
		<updated>2024-01-03T22:01:29Z</updated>

		<summary type="html">&lt;p&gt;Brianna Waltner: Pagină nouă: == Cerinţa == Verificați dacă un graf este arbore sau nu. == Date de intrare == Fișierul de intrare &amp;#039;&amp;#039;&amp;#039;estearborein.txt&amp;#039;&amp;#039;&amp;#039; conține pe prima linie numărul de noduri &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039;, iar pe următoarele linii perechi de numere &amp;#039;&amp;#039;&amp;#039;x y&amp;#039;&amp;#039;&amp;#039;, separate printr-un spațiu, cu semnificația că există muchie de la nodul &amp;#039;&amp;#039;&amp;#039;x&amp;#039;&amp;#039;&amp;#039; la nodul &amp;#039;&amp;#039;&amp;#039;y&amp;#039;&amp;#039;&amp;#039;. == Date de ieșire == Fișierul de ieșire &amp;#039;&amp;#039;&amp;#039;estearboreout.txt&amp;#039;&amp;#039;&amp;#039; va conține pe prima linie cuvântul &amp;#039;&amp;#039;&amp;#039;DA&amp;#039;&amp;#039;&amp;#039; dacă graful poate fi arbore, s...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cerinţa ==&lt;br /&gt;
Verificați dacă un graf este arbore sau nu.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Fișierul de intrare &#039;&#039;&#039;estearborein.txt&#039;&#039;&#039; conține pe prima linie numărul de noduri &#039;&#039;&#039;n&#039;&#039;&#039;, iar pe următoarele linii perechi de numere &#039;&#039;&#039;x y&#039;&#039;&#039;, separate printr-un spațiu, cu semnificația că există muchie de la nodul &#039;&#039;&#039;x&#039;&#039;&#039; la nodul &#039;&#039;&#039;y&#039;&#039;&#039;.&lt;br /&gt;
== Date de ieșire ==&lt;br /&gt;
Fișierul de ieșire &#039;&#039;&#039;estearboreout.txt&#039;&#039;&#039; va conține pe prima linie cuvântul &#039;&#039;&#039;DA&#039;&#039;&#039; dacă graful poate fi arbore, sau cuvântul &#039;&#039;&#039;NU&#039;&#039;&#039; dacă graful nu este arbore.&lt;br /&gt;
== Restricţii şi precizări ==&lt;br /&gt;
* &#039;&#039;&#039;1 &amp;amp;les; n &amp;amp;les; 100&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;1 &amp;amp;les; x, y &amp;amp;les; n&#039;&#039;&#039;&lt;br /&gt;
* muchiile se pot repeta&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
;&#039;&#039;&#039;estearborein.txt&#039;&#039;&#039;&lt;br /&gt;
 5&lt;br /&gt;
 1 3&lt;br /&gt;
 2 4&lt;br /&gt;
 3 1&lt;br /&gt;
 3 5&lt;br /&gt;
 4 2&lt;br /&gt;
 4 5&lt;br /&gt;
;&#039;&#039;&#039;estearboreout.txt&#039;&#039;&#039;&lt;br /&gt;
 Datele de intrare corespund restrictiilor impuse&lt;br /&gt;
 DA&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
;&#039;&#039;&#039;estearborein.txt&#039;&#039;&#039;&lt;br /&gt;
 5&lt;br /&gt;
 1 2&lt;br /&gt;
 2 3&lt;br /&gt;
 3 4&lt;br /&gt;
 4 105&lt;br /&gt;
 5 1&lt;br /&gt;
;&#039;&#039;&#039;estearboreout.txt&#039;&#039;&#039;&lt;br /&gt;
 Datele de intrare nu corespund restrictiilor impuse&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
from collections import defaultdict&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def este_arbore(numar_noduri, lista_muchii):&lt;br /&gt;
    vizitat = [False] * (numar_noduri + 1)&lt;br /&gt;
    graf = defaultdict(list)&lt;br /&gt;
&lt;br /&gt;
    for nod_x, nod_y in lista_muchii:&lt;br /&gt;
        graf[nod_x].append(nod_y)&lt;br /&gt;
        graf[nod_y].append(nod_x)&lt;br /&gt;
&lt;br /&gt;
    if este_ciclu(1, -1, graf, vizitat):&lt;br /&gt;
        return False&lt;br /&gt;
&lt;br /&gt;
    for i in range(1, numar_noduri + 1):&lt;br /&gt;
        if not vizitat[i]:&lt;br /&gt;
            return False&lt;br /&gt;
&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def este_ciclu(nod, parinte, graf, vizitat):&lt;br /&gt;
    vizitat[nod] = True&lt;br /&gt;
&lt;br /&gt;
    for i in graf[nod]:&lt;br /&gt;
        if not vizitat[i]:&lt;br /&gt;
            if este_ciclu(i, nod, graf, vizitat):&lt;br /&gt;
                return True&lt;br /&gt;
        elif i != parinte:&lt;br /&gt;
            return True&lt;br /&gt;
&lt;br /&gt;
    return False&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
    with open(&#039;estearborein.txt&#039;, &#039;r&#039;) as f:&lt;br /&gt;
        n = int(f.readline())&lt;br /&gt;
        muchii = []&lt;br /&gt;
        for _ in range(n):&lt;br /&gt;
            x, y = map(int, f.readline().split())&lt;br /&gt;
            muchii.append((x, y))&lt;br /&gt;
&lt;br /&gt;
    if 1 &amp;lt;= n &amp;lt;= 100 and all(1 &amp;lt;= x &amp;lt;= n and 1 &amp;lt;= y &amp;lt;= n for x, y in muchii):&lt;br /&gt;
        print(&amp;quot;Datele de intrare corespund restrictiilor impuse&amp;quot;)&lt;br /&gt;
        with open(&#039;estearboreout.txt&#039;, &#039;w&#039;) as f:&lt;br /&gt;
            if este_arbore(n, muchii):&lt;br /&gt;
                f.write(&amp;quot;NU\n&amp;quot;)&lt;br /&gt;
            else:&lt;br /&gt;
                f.write(&amp;quot;DA\n&amp;quot;)&lt;br /&gt;
    else:&lt;br /&gt;
        print(&amp;quot;Datele de intrare nu corespund restrictiilor impuse&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    main()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
== Explicatie ==&lt;br /&gt;
 Graful poate fi arbore.&lt;/div&gt;</summary>
		<author><name>Brianna Waltner</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=0756_-_Nr_Nod&amp;diff=8904</id>
		<title>0756 - Nr Nod</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=0756_-_Nr_Nod&amp;diff=8904"/>
		<updated>2024-01-03T19:10:10Z</updated>

		<summary type="html">&lt;p&gt;Brianna Waltner: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cerinţa ==&lt;br /&gt;
Se consideră un arbore binar în care nodurile memorează numere naturale nenule. Să se determine câte noduri din arbore au un singur descendent direct.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Fișierul de intrare &#039;&#039;&#039;nrnodin.txt&#039;&#039;&#039; conține pe prima linie lista valorilor memorate în nodurile arborelui, obținute în urma parcurgerii în preordine (rădăcină, stâng, drept). Dacă un nod nu are descendent stâng, în listă va apărea valoarea &#039;&#039;&#039;0&#039;&#039;&#039;. Dacă un nod nu are descendent drept, în listă va apărea valoarea &#039;&#039;&#039;0&#039;&#039;&#039;.&lt;br /&gt;
== Date de ieșire ==&lt;br /&gt;
Fișierul de ieșire &#039;&#039;&#039;nrnodout.txt&#039;&#039;&#039; va conține pe prima linie un singur număr &#039;&#039;&#039;C&#039;&#039;&#039;, reprezentând numărul de noduri din arbore care au un singur descendent direct.&lt;br /&gt;
== Restricţii şi precizări ==&lt;br /&gt;
* se recomandă folosirea arborilor alocați dinamic.&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
; &#039;&#039;&#039;nrnodin.txt&#039;&#039;&#039;&lt;br /&gt;
 67 51 18 0 0 24 0 0 48 0 11 0 0&lt;br /&gt;
; &#039;&#039;&#039;nrnodout.txt&#039;&#039;&#039;&lt;br /&gt;
 Datele de intrare corespund restrictiilor impuse&lt;br /&gt;
 1&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
; &#039;&#039;&#039;nrnodin.txt&#039;&#039;&#039;&lt;br /&gt;
 1000001 2 3 4 5 6 7 8 9 10&lt;br /&gt;
; &#039;&#039;&#039;nrnodout.txt&#039;&#039;&#039;&lt;br /&gt;
 Datele de intrare nu corespund restrictiilor impuse&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
class Node:&lt;br /&gt;
    def __init__(self, value):&lt;br /&gt;
        self.value = value&lt;br /&gt;
        self.left = None&lt;br /&gt;
        self.right = None&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def build_tree(values):&lt;br /&gt;
    value = next(values)&lt;br /&gt;
    if value == 0:&lt;br /&gt;
        return None&lt;br /&gt;
    node = Node(value)&lt;br /&gt;
    node.left = build_tree(values)&lt;br /&gt;
    node.right = build_tree(values)&lt;br /&gt;
    return node&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def count_single_child_nodes(node):&lt;br /&gt;
    if node is None:&lt;br /&gt;
        return 0&lt;br /&gt;
    count = count_single_child_nodes(node.left) + count_single_child_nodes(node.right)&lt;br /&gt;
    if (node.left is not None and node.right is None) or (node.left is None and node.right is not None):&lt;br /&gt;
        count += 1&lt;br /&gt;
    return count&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
    with open(&#039;nrnodin.txt&#039;, &#039;r&#039;) as fin:&lt;br /&gt;
        values = map(int, fin.readline().split())&lt;br /&gt;
    root = build_tree(iter(values))&lt;br /&gt;
    count = count_single_child_nodes(root)&lt;br /&gt;
    with open(&#039;nrnodout.txt&#039;, &#039;w&#039;) as fout:&lt;br /&gt;
        fout.write(str(count))&lt;br /&gt;
        if not all(1 &amp;lt;= value &amp;lt;= 1000000 for value in values if value != 0):&lt;br /&gt;
            print(&amp;quot;Datele de intrare nu corespund restrictiilor impuse&amp;quot;)&lt;br /&gt;
            return&lt;br /&gt;
        print(&amp;quot;Datele de intrare corespund restrictiilor impuse&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    main()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Brianna Waltner</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=0550_-_Mere&amp;diff=8902</id>
		<title>0550 - Mere</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=0550_-_Mere&amp;diff=8902"/>
		<updated>2024-01-03T18:19:11Z</updated>

		<summary type="html">&lt;p&gt;Brianna Waltner: Pagină nouă: == Cerinţa == Țăranul Ion are în livada sa &amp;#039;&amp;#039;&amp;#039;N&amp;#039;&amp;#039;&amp;#039; pomi, fiecare cu &amp;#039;&amp;#039;&amp;#039;v[i]&amp;#039;&amp;#039;&amp;#039; mere. Între pomi există N-1 cărări, astfel încât între oricare doi pomi să existe un singur drum, alcătuit eventual din mai multe cărări. Pentru că nu și-a plătit ratele la bancă, el este nevoit să vândă o parte dintre pomi. El vrea să adune merele din livadă, dar pentru că nu are foarte mult timp, el va aduna merele doar dintr-o parte din pomi.  Ion pornește din pomul lui...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cerinţa ==&lt;br /&gt;
Țăranul Ion are în livada sa &#039;&#039;&#039;N&#039;&#039;&#039; pomi, fiecare cu &#039;&#039;&#039;v[i]&#039;&#039;&#039; mere. Între pomi există N-1 cărări, astfel încât între oricare doi pomi să existe un singur drum, alcătuit eventual din mai multe cărări. Pentru că nu și-a plătit ratele la bancă, el este nevoit să vândă o parte dintre pomi. El vrea să adune merele din livadă, dar pentru că nu are foarte mult timp, el va aduna merele doar dintr-o parte din pomi.&lt;br /&gt;
&lt;br /&gt;
Ion pornește din pomul lui preferat, pomul &#039;&#039;&#039;1&#039;&#039;&#039;, și se deplasează spre unul din vecinii lui. Pentru că nu este foarte inteligent, atunci când Ion se află la un pom, el se va deplasa către pomul vecin care are cele mai multe mere, fără să ia în calcul ceilalți meri din livadă. Dacă doi pomi au același număr de mere, atunci Ion se va deplasa spre pomul cu numărul de ordine mai mic.&lt;br /&gt;
&lt;br /&gt;
Ajutați-l pe Ion să afle câte mere va aduna folosind metoda sa!&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Pe prima linie a fișierului de intrare &#039;&#039;&#039;merein.txt&#039;&#039;&#039; se află un număr natural &#039;&#039;&#039;N&#039;&#039;&#039;, reprezentând numărul de pomi din livadă; pe linia a doua se află &#039;&#039;&#039;N&#039;&#039;&#039; valori &#039;&#039;&#039;v[i]&#039;&#039;&#039;, reprezentând numărul de mere din pomul &#039;&#039;&#039;i&#039;&#039;&#039;. Pe următoarele &#039;&#039;&#039;N-1&#039;&#039;&#039; linii se află câte o pereche de numere &#039;&#039;&#039;x y&#039;&#039;&#039;, cu semnificația că există o cărare de la pomul &#039;&#039;&#039;x&#039;&#039;&#039; la pomul &#039;&#039;&#039;y&#039;&#039;&#039;.&lt;br /&gt;
== Date de ieșire ==&lt;br /&gt;
Fișierul de ieșire &#039;&#039;&#039;mereout.txt&#039;&#039;&#039; va conține pe prima linie numărul &#039;&#039;&#039;S&#039;&#039;&#039;, reprezentând numărul total de mere culese.&lt;br /&gt;
== Restricţii şi precizări ==&lt;br /&gt;
* &#039;&#039;&#039;1 &amp;amp;les; n &amp;amp;les; 1000&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;1 &amp;amp;les; v[i] &amp;amp;les; 10000&#039;&#039;&#039;&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
;&#039;&#039;&#039;merein.txt&#039;&#039;&#039;&lt;br /&gt;
 6&lt;br /&gt;
 3 1 2 3 2 1&lt;br /&gt;
 1 2&lt;br /&gt;
 1 3&lt;br /&gt;
 2 4&lt;br /&gt;
 2 5&lt;br /&gt;
 2 6&lt;br /&gt;
;&#039;&#039;&#039;mereout.txt&#039;&#039;&#039;&lt;br /&gt;
 Datele de intrare corespund restrictiilor impuse&lt;br /&gt;
 5&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
;&#039;&#039;&#039;merein.txt&#039;&#039;&#039;&lt;br /&gt;
 65000&lt;br /&gt;
 3 1 2 3 2 1&lt;br /&gt;
 1 2&lt;br /&gt;
 1 3&lt;br /&gt;
 2 4&lt;br /&gt;
 2 5&lt;br /&gt;
 2 6&lt;br /&gt;
;&#039;&#039;&#039;mereout.txt&#039;&#039;&#039;&lt;br /&gt;
 Datele de intrare nu corespund restrictiilor impuse&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
from collections import defaultdict&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def dfs(node, parent):&lt;br /&gt;
    global ans, maxv, idx, visit, g, apple&lt;br /&gt;
    visit[node] = True&lt;br /&gt;
    for neighbour in g[node]:&lt;br /&gt;
        if neighbour != parent and not visit[neighbour]:&lt;br /&gt;
            dfs(neighbour, node)&lt;br /&gt;
            if apple[neighbour] &amp;gt; maxv[node]:&lt;br /&gt;
                maxv[node] = apple[neighbour]&lt;br /&gt;
                idx[node] = neighbour&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def solve():&lt;br /&gt;
    global ans, maxv, idx, visit, g, apple&lt;br /&gt;
    dfs(1, 0)&lt;br /&gt;
    node = 1&lt;br /&gt;
    while node:&lt;br /&gt;
        ans += apple[node]&lt;br /&gt;
        node = idx[node]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    g = defaultdict(list)&lt;br /&gt;
    ans = 0&lt;br /&gt;
&lt;br /&gt;
    with open(&#039;merein.txt&#039;, &#039;r&#039;) as fin:&lt;br /&gt;
        N = int(fin.readline().strip())&lt;br /&gt;
        if N &amp;lt; 1 or N &amp;gt; 1000:&lt;br /&gt;
            with open(&#039;mereout.txt&#039;, &#039;w&#039;) as fout:&lt;br /&gt;
                fout.write(&amp;quot;Datele de intrare nu corespund restrictiilor impuse&amp;quot;)&lt;br /&gt;
            exit(0)&lt;br /&gt;
        apple = [0] + list(map(int, fin.readline().split()))&lt;br /&gt;
        maxv = [0]*(N+1)&lt;br /&gt;
        idx = [0]*(N+1)&lt;br /&gt;
        visit = [False]*(N+1)&lt;br /&gt;
&lt;br /&gt;
        for _ in range(N-1):&lt;br /&gt;
            u, v = map(int, fin.readline().split())&lt;br /&gt;
            g[u].append(v)&lt;br /&gt;
            g[v].append(u)&lt;br /&gt;
&lt;br /&gt;
    solve()&lt;br /&gt;
&lt;br /&gt;
    with open(&#039;mereout.txt&#039;, &#039;w&#039;) as fout:&lt;br /&gt;
        fout.write(str(ans) if ans else &amp;quot;Datele de intrare corespund restrictiilor impuse&amp;quot;)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Explicatie ==&lt;br /&gt;
 Ion va culege merele din pomii &#039;&#039;&#039;1 3&#039;&#039;&#039;, obținând &#039;&#039;&#039;3+2=5&#039;&#039;&#039; mere.&lt;/div&gt;</summary>
		<author><name>Brianna Waltner</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=1707_-_Retea&amp;diff=8899</id>
		<title>1707 - Retea</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=1707_-_Retea&amp;diff=8899"/>
		<updated>2024-01-03T17:24:57Z</updated>

		<summary type="html">&lt;p&gt;Brianna Waltner: Pagină nouă: == Cerinţa == Se consideră o rețea formată din &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039; servere, numerotate de la &amp;#039;&amp;#039;&amp;#039;1&amp;#039;&amp;#039;&amp;#039; la &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039;. În rețea există m perechi de servere &amp;#039;&amp;#039;&amp;#039;x y&amp;#039;&amp;#039;&amp;#039; cunoscute între care există legături de comunicație directe. Între oricare două servere din rețea există legături, fie directe, fie prin intermediul altor servere.  Stabiliți pentru fiecare dintre cele &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039; servere dacă eliminarea sa din rețea conduce la pierderea legăturii dintre cel puțin două servere r...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cerinţa ==&lt;br /&gt;
Se consideră o rețea formată din &#039;&#039;&#039;n&#039;&#039;&#039; servere, numerotate de la &#039;&#039;&#039;1&#039;&#039;&#039; la &#039;&#039;&#039;n&#039;&#039;&#039;. În rețea există m perechi de servere &#039;&#039;&#039;x y&#039;&#039;&#039; cunoscute între care există legături de comunicație directe. Între oricare două servere din rețea există legături, fie directe, fie prin intermediul altor servere.&lt;br /&gt;
&lt;br /&gt;
Stabiliți pentru fiecare dintre cele &#039;&#039;&#039;n&#039;&#039;&#039; servere dacă eliminarea sa din rețea conduce la pierderea legăturii dintre cel puțin două servere rămase.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Fișierul de intrare &#039;&#039;&#039;reteain.txt&#039;&#039;&#039; conține pe prima linie numerele &#039;&#039;&#039;n&#039;&#039;&#039; si &#039;&#039;&#039;m&#039;&#039;&#039;. Pe următoarele &#039;&#039;&#039;m&#039;&#039;&#039; linii se vor afla câte două numere naturale &#039;&#039;&#039;x y&#039;&#039;&#039;, reprezentând perechi de servere între care există legături directe.&lt;br /&gt;
== Date de ieșire ==&lt;br /&gt;
Fișierul de ieșire &#039;&#039;&#039;reteaout.txt&#039;&#039;&#039; va conține pe prima linie &#039;&#039;&#039;n&#039;&#039;&#039; numere naturale &#039;&#039;&#039;0&#039;&#039;&#039; sau &#039;&#039;&#039;1&#039;&#039;&#039;:&lt;br /&gt;
* al &#039;&#039;&#039;i&#039;&#039;&#039;-lea număr va fi &#039;&#039;&#039;0&#039;&#039;&#039; dacă prin eliminarea serverului cu numărul i rămân legături între oricare două servere rămase&lt;br /&gt;
* al &#039;&#039;&#039;i&#039;&#039;&#039;-lea număr va fi &#039;&#039;&#039;1&#039;&#039;&#039; dacă prin eliminarea sa se pierde legătura între cel puțin două servere rămase.&lt;br /&gt;
== Restricţii şi precizări ==&lt;br /&gt;
* &#039;&#039;&#039;1 &amp;amp;les; n &amp;amp;les; 100&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;1 &amp;amp;les; x,y &amp;amp;les; n&#039;&#039;&#039;&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
;&#039;&#039;&#039;reteain.txt&#039;&#039;&#039;&lt;br /&gt;
 5 5&lt;br /&gt;
 1 2&lt;br /&gt;
 2 3&lt;br /&gt;
 1 3&lt;br /&gt;
 3 4&lt;br /&gt;
 4 5&lt;br /&gt;
;&#039;&#039;&#039;reteaout.txt&#039;&#039;&#039;&lt;br /&gt;
 Datele de intrare corespund restrictiilor impuse&lt;br /&gt;
 0 0 1 1 0&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
;&#039;&#039;&#039;reteain.txt&#039;&#039;&#039;&lt;br /&gt;
 101 1&lt;br /&gt;
 1 2&lt;br /&gt;
;&#039;&#039;&#039;reteaout.txt&#039;&#039;&#039;&lt;br /&gt;
 Datele de intrare nu corespund restrictiilor impuse&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
from collections import defaultdict&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def dfs(v, visited, graph):&lt;br /&gt;
    visited[v] = True&lt;br /&gt;
    for u in graph[v]:&lt;br /&gt;
        if not visited[u]:&lt;br /&gt;
            dfs(u, visited, graph)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
    with open(&#039;reteain.txt&#039;, &#039;r&#039;) as fin:&lt;br /&gt;
        n, m = map(int, fin.readline().split())&lt;br /&gt;
        edges = [list(map(int, fin.readline().split())) for _ in range(m)]&lt;br /&gt;
    if not (1 &amp;lt;= n &amp;lt;= 100) or not all(1 &amp;lt;= x &amp;lt;= n and 1 &amp;lt;= y &amp;lt;= n for x, y in edges):&lt;br /&gt;
        print(&amp;quot;Datele de intrare nu corespund restrictiilor impuse&amp;quot;)&lt;br /&gt;
        return&lt;br /&gt;
    print(&amp;quot;Datele de intrare corespund restrictiilor impuse&amp;quot;)&lt;br /&gt;
    graph = defaultdict(list)&lt;br /&gt;
    for x, y in edges:&lt;br /&gt;
        graph[x].append(y)&lt;br /&gt;
        graph[y].append(x)&lt;br /&gt;
    result = []&lt;br /&gt;
    for i in range(1, n+1):&lt;br /&gt;
        visited = [False] * (n+1)&lt;br /&gt;
        visited[i] = True&lt;br /&gt;
        dfs((i % n) + 1, visited, graph)&lt;br /&gt;
        result.append(&#039;0&#039; if all(visited[1:n+1]) else &#039;1&#039;)&lt;br /&gt;
    with open(&#039;reteaout.txt&#039;, &#039;w&#039;) as fout:&lt;br /&gt;
        fout.write(&#039; &#039;.join(result))&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;br /&gt;
&lt;br /&gt;
== Explicaţie ==&lt;br /&gt;
 Serverul &#039;&#039;&#039;1&#039;&#039;&#039; daca este eliminat nu întrerupe legătura deoarece exista lanțul de legături &#039;&#039;&#039;2 - 3 - 4 - 5&#039;&#039;&#039; pe care nu îl afectează.&lt;br /&gt;
 Serverul &#039;&#039;&#039;2&#039;&#039;&#039; dacă este eliminat nu întrerupe legătura deoarece exista lanțul de legături &#039;&#039;&#039;1 - 3 - 4 - 5&#039;&#039;&#039; pe care nu îl afectează.&lt;br /&gt;
 Serverul &#039;&#039;&#039;3&#039;&#039;&#039; dacă este eliminat, serverele &#039;&#039;&#039;1&#039;&#039;&#039; și &#039;&#039;&#039;2&#039;&#039;&#039; nu mai pot comunica cu serverele &#039;&#039;&#039;4&#039;&#039;&#039; și &#039;&#039;&#039;5&#039;&#039;&#039;.&lt;br /&gt;
 Serverul &#039;&#039;&#039;4&#039;&#039;&#039; daca este eliminat, serverele &#039;&#039;&#039;1&#039;&#039;&#039;, &#039;&#039;&#039;2&#039;&#039;&#039; și &#039;&#039;&#039;3&#039;&#039;&#039; nu mai pot comunica cu serverul &#039;&#039;&#039;5&#039;&#039;&#039;.&lt;br /&gt;
 Serverul &#039;&#039;&#039;5&#039;&#039;&#039; dacă este eliminat nu întrerupe legătura deoarece serverele &#039;&#039;&#039;1&#039;&#039;&#039;, &#039;&#039;&#039;2&#039;&#039;&#039;, &#039;&#039;&#039;3&#039;&#039;&#039;, &#039;&#039;&#039;4&#039;&#039;&#039; sunt legate intre ele.&lt;/div&gt;</summary>
		<author><name>Brianna Waltner</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=0760_-_k_Nivel_1&amp;diff=8884</id>
		<title>0760 - k Nivel 1</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=0760_-_k_Nivel_1&amp;diff=8884"/>
		<updated>2024-01-03T16:11:08Z</updated>

		<summary type="html">&lt;p&gt;Brianna Waltner: Pagină nouă: == Cerinţa == Se consideră un arbore binar în care nodurile memorează numere naturale nenule și un număr &amp;#039;&amp;#039;&amp;#039;k&amp;#039;&amp;#039;&amp;#039;. În arbore rădăcina se află pe nivelul &amp;#039;&amp;#039;&amp;#039;0&amp;#039;&amp;#039;&amp;#039;, fii rădăcinii pe nivelul &amp;#039;&amp;#039;&amp;#039;1&amp;#039;&amp;#039;&amp;#039;, fii fiilor rădăcinii pe nivelul &amp;#039;&amp;#039;&amp;#039;2&amp;#039;&amp;#039;&amp;#039;, etc. Să se determine suma valorilor din nodurile aflate pe nivelul &amp;#039;&amp;#039;&amp;#039;k&amp;#039;&amp;#039;&amp;#039;. == Date de intrare == Fișierul de intrare &amp;#039;&amp;#039;&amp;#039;knivel1in.txt&amp;#039;&amp;#039;&amp;#039; conține pe prima linie lista valorilor memorate în nodurile arborelui, obținute în urm...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cerinţa ==&lt;br /&gt;
Se consideră un arbore binar în care nodurile memorează numere naturale nenule și un număr &#039;&#039;&#039;k&#039;&#039;&#039;. În arbore rădăcina se află pe nivelul &#039;&#039;&#039;0&#039;&#039;&#039;, fii rădăcinii pe nivelul &#039;&#039;&#039;1&#039;&#039;&#039;, fii fiilor rădăcinii pe nivelul &#039;&#039;&#039;2&#039;&#039;&#039;, etc. Să se determine suma valorilor din nodurile aflate pe nivelul &#039;&#039;&#039;k&#039;&#039;&#039;.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Fișierul de intrare &#039;&#039;&#039;knivel1in.txt&#039;&#039;&#039; conține pe prima linie lista valorilor memorate în nodurile arborelui, obținute în urma parcurgerii în preordine (rădăcină, stâng, drept). Dacă un nod nu are descendent stâng, în listă va apare valoarea &#039;&#039;&#039;0&#039;&#039;&#039;. Dacă un nod nu are descendent drept, în listă va apare valoarea &#039;&#039;&#039;0&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Linia a doua a fișierului conține numărul &#039;&#039;&#039;k&#039;&#039;&#039;.&lt;br /&gt;
== Date de ieșire ==&lt;br /&gt;
Fișierul de ieșire &#039;&#039;&#039;knivel1out.txt&#039;&#039;&#039; va conține pe prima linie un singur număr &#039;&#039;&#039;S&#039;&#039;&#039;, reprezentând suma cerută&lt;br /&gt;
== Restricţii şi precizări ==&lt;br /&gt;
* se recomandă folosirea arborilor alocați dinamic.&lt;br /&gt;
== Exemplul 1 == &lt;br /&gt;
; &#039;&#039;&#039;knivel1in.txt&#039;&#039;&#039;&lt;br /&gt;
 67 51 18 0 0 24 0 0 48 0 11 0 0&lt;br /&gt;
 1&lt;br /&gt;
;&#039;&#039;&#039;knivel1out.txt&#039;&#039;&#039;&lt;br /&gt;
 Datele de intrare corespund restrictiilor impuse&lt;br /&gt;
 99&lt;br /&gt;
== Exemplul 2 == &lt;br /&gt;
; &#039;&#039;&#039;knivel1in.txt&#039;&#039;&#039;&lt;br /&gt;
 1 0 0 &lt;br /&gt;
 1 &lt;br /&gt;
; &#039;&#039;&#039;knivel1out.txt&#039;&#039;&#039;&lt;br /&gt;
 Datele de intrare nu corespund restrictiilor impuse&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
class Node:&lt;br /&gt;
    def __init__(self, value):&lt;br /&gt;
        self.value = value&lt;br /&gt;
        self.left = None&lt;br /&gt;
        self.right = None&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def build_tree(values):&lt;br /&gt;
    value = next(values)&lt;br /&gt;
    if value == 0:&lt;br /&gt;
        return None&lt;br /&gt;
    node = Node(value)&lt;br /&gt;
    node.left = build_tree(values)&lt;br /&gt;
    node.right = build_tree(values)&lt;br /&gt;
    return node&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def sum_at_level(node, k):&lt;br /&gt;
    if node is None:&lt;br /&gt;
        return 0&lt;br /&gt;
    if k == 0:&lt;br /&gt;
        return node.value&lt;br /&gt;
    return sum_at_level(node.left, k-1) + sum_at_level(node.right, k-1)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
    with open(&#039;knivel1in.txt&#039;, &#039;r&#039;) as fin:&lt;br /&gt;
        values = list(map(int, fin.readline().split()))&lt;br /&gt;
        k = int(fin.readline())&lt;br /&gt;
    root = build_tree(iter(values))&lt;br /&gt;
    if root is None or root.left is None or root.right is None:&lt;br /&gt;
        print(&amp;quot;Datele de intrare nu corespund restrictiilor impuse&amp;quot;)&lt;br /&gt;
        return&lt;br /&gt;
    print(&amp;quot;Datele de intrare corespund restrictiilor impuse&amp;quot;)&lt;br /&gt;
    s = sum_at_level(root, k)&lt;br /&gt;
    with open(&#039;knivel1out.txt&#039;, &#039;w&#039;) as fout:&lt;br /&gt;
        fout.write(str(s))&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>Brianna Waltner</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=0761_-_Inaltime_1&amp;diff=8881</id>
		<title>0761 - Inaltime 1</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=0761_-_Inaltime_1&amp;diff=8881"/>
		<updated>2024-01-03T16:03:25Z</updated>

		<summary type="html">&lt;p&gt;Brianna Waltner: Pagină nouă: == Cerinţa == Se consideră un arbore binar în care nodurile memorează numere naturale nenule. Să se determine înălțimea arborelui.  Înălțimea unui arbore este egală cu numărul de noduri de pe cel mai lung lanț elementar care unește rădăcina cu un nod terminal. == Date de intrare == Fișierul de intrare &amp;#039;&amp;#039;&amp;#039;inaltime1in.txt&amp;#039;&amp;#039;&amp;#039; conține pe prima linie lista valorilor memorate în nodurile arborelui, obținute în urma parcurgerii în preordine (rădăcină, stân...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cerinţa ==&lt;br /&gt;
Se consideră un arbore binar în care nodurile memorează numere naturale nenule. Să se determine înălțimea arborelui.&lt;br /&gt;
&lt;br /&gt;
Înălțimea unui arbore este egală cu numărul de noduri de pe cel mai lung lanț elementar care unește rădăcina cu un nod terminal.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Fișierul de intrare &#039;&#039;&#039;inaltime1in.txt&#039;&#039;&#039; conține pe prima linie lista valorilor memorate în nodurile arborelui, obținute în urma parcurgerii în preordine (rădăcină, stâng, drept). Dacă un nod nu are descendent stâng, în listă va apare valoarea &#039;&#039;&#039;0&#039;&#039;&#039;. Dacă un nod nu are descendent drept, în listă va apare valoarea &#039;&#039;&#039;0&#039;&#039;&#039;.&lt;br /&gt;
== Date de ieșire ==&lt;br /&gt;
Fișierul de ieșire &#039;&#039;&#039;inaltime1out.txt&#039;&#039;&#039; va conține pe prima linie o valoare &#039;&#039;&#039;H&#039;&#039;&#039;, reprezentând înălțimea arborelui.&lt;br /&gt;
== Restricţii şi precizări ==&lt;br /&gt;
* se recomandă folosirea arborilor alocați dinamic.&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
;  &#039;&#039;&#039;inaltime1in.txt&#039;&#039;&#039;&lt;br /&gt;
 67 51 18 0 0 24 0 0 48 0 11 0 0&lt;br /&gt;
; &#039;&#039;&#039;inaltime1out.txt&#039;&#039;&#039;&lt;br /&gt;
 Datele de intrare corespund restrictiilor impuse&lt;br /&gt;
 3&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
; &#039;&#039;&#039;inaltime1in.txt&#039;&#039;&#039;&lt;br /&gt;
 1 0 0&lt;br /&gt;
; &#039;&#039;&#039;inaltime1out.txt&#039;&#039;&#039;&lt;br /&gt;
 Datele de intrare nu corespund restrictiilor impuse&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
class Node:&lt;br /&gt;
    def __init__(self, value):&lt;br /&gt;
        self.value = value&lt;br /&gt;
        self.left = None&lt;br /&gt;
        self.right = None&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def build_tree(values):&lt;br /&gt;
    value = next(values)&lt;br /&gt;
    if value == 0:&lt;br /&gt;
        return None&lt;br /&gt;
    node = Node(value)&lt;br /&gt;
    node.left = build_tree(values)&lt;br /&gt;
    node.right = build_tree(values)&lt;br /&gt;
    return node&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def height(node):&lt;br /&gt;
    if node is None:&lt;br /&gt;
        return 0&lt;br /&gt;
    return max(height(node.left), height(node.right)) + 1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
    with open(&#039;inaltime1in.txt&#039;, &#039;r&#039;) as fin:&lt;br /&gt;
        values = list(map(int, fin.readline().split()))&lt;br /&gt;
    root = build_tree(iter(values))&lt;br /&gt;
    if root is None or root.left is None or root.right is None:&lt;br /&gt;
        print(&amp;quot;Datele de intrare nu corespund restrictiilor impuse&amp;quot;)&lt;br /&gt;
        return&lt;br /&gt;
    print(&amp;quot;Datele de intrare corespund restrictiilor impuse&amp;quot;)&lt;br /&gt;
    h = height(root)&lt;br /&gt;
    with open(&#039;inaltime1out.txt&#039;, &#039;w&#039;) as fout:&lt;br /&gt;
        fout.write(str(h))&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>Brianna Waltner</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=0759_-_Bi_Latime&amp;diff=8879</id>
		<title>0759 - Bi Latime</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=0759_-_Bi_Latime&amp;diff=8879"/>
		<updated>2024-01-03T15:57:37Z</updated>

		<summary type="html">&lt;p&gt;Brianna Waltner: Pagină nouă: == Cerinţa == Se consideră un arbore binar în care nodurile memorează numere naturale nenule. Să se afișeze valorile din arbore în urma parcurgerii în lățime, pornind din rădăcină. == Date de intrare == Fișierul de intrare &amp;#039;&amp;#039;&amp;#039;bilatimein.txt&amp;#039;&amp;#039;&amp;#039; conține pe prima linie lista valorilor memorate în nodurile arborelui, obținute în urma parcurgerii în preordine (rădăcină, stâng, drept). Dacă un nod nu are descendent stâng, în listă va apare valoarea &amp;#039;&amp;#039;&amp;#039;0&amp;#039;&amp;#039;...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cerinţa ==&lt;br /&gt;
Se consideră un arbore binar în care nodurile memorează numere naturale nenule. Să se afișeze valorile din arbore în urma parcurgerii în lățime, pornind din rădăcină.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Fișierul de intrare &#039;&#039;&#039;bilatimein.txt&#039;&#039;&#039; conține pe prima linie lista valorilor memorate în nodurile arborelui, obținute în urma parcurgerii în preordine (rădăcină, stâng, drept). Dacă un nod nu are descendent stâng, în listă va apare valoarea &#039;&#039;&#039;0&#039;&#039;&#039;. Dacă un nod nu are descendent drept, în listă va apare valoarea &#039;&#039;&#039;0&#039;&#039;&#039;.&lt;br /&gt;
== Date de ieșire ==&lt;br /&gt;
Fișierul de ieșire &#039;&#039;&#039;bilatimeout.txt&#039;&#039;&#039; va conține pe prima linie valorile din arbore în urma parcurgerii în lățime, pornind din rădăcină, separate prin câte un spațiu.&lt;br /&gt;
== Restricţii şi precizări ==&lt;br /&gt;
* se recomandă folosirea arborilor alocați dinamic.&lt;br /&gt;
* la parcurgerea în lățime, după vizitarea unui nod, se va vizita fiul stâng, apoi fiul drept.&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
; &#039;&#039;&#039;bilatimein.txt&#039;&#039;&#039;&lt;br /&gt;
 67 51 18 0 0 24 0 0 48 0 11 0 0&lt;br /&gt;
; &#039;&#039;&#039;bilatimeout.txt&#039;&#039;&#039;&lt;br /&gt;
 Datele de intrare corespund restrictiilor impuse&lt;br /&gt;
 67 51 48 18 24 11&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
; &#039;&#039;&#039;bilatimein.txt&#039;&#039;&#039;&lt;br /&gt;
 1 0 0&lt;br /&gt;
; &#039;&#039;&#039;bilatimeout.txt&#039;&#039;&#039;&lt;br /&gt;
 Datele de intrare nu corespund restrictiilor impuse&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
class Node:&lt;br /&gt;
    def __init__(self, value):&lt;br /&gt;
        self.value = value&lt;br /&gt;
        self.left = None&lt;br /&gt;
        self.right = None&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def build_tree(values):&lt;br /&gt;
    value = next(values)&lt;br /&gt;
    if value == 0:&lt;br /&gt;
        return None&lt;br /&gt;
    node = Node(value)&lt;br /&gt;
    node.left = build_tree(values)&lt;br /&gt;
    node.right = build_tree(values)&lt;br /&gt;
    return node&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def breadth_first_search(root):&lt;br /&gt;
    queue = [root]&lt;br /&gt;
    values = []&lt;br /&gt;
    while queue:&lt;br /&gt;
        node = queue.pop(0)&lt;br /&gt;
        if node is not None:&lt;br /&gt;
            values.append(node.value)&lt;br /&gt;
            queue.append(node.left)&lt;br /&gt;
            queue.append(node.right)&lt;br /&gt;
    return values&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
    with open(&#039;bilatimein.txt&#039;, &#039;r&#039;) as fin:&lt;br /&gt;
        values = list(map(int, fin.readline().split()))&lt;br /&gt;
    root = build_tree(iter(values))&lt;br /&gt;
    if root is None or root.left is None or root.right is None:&lt;br /&gt;
        print(&amp;quot;Datele de intrare nu corespund restrictiilor impuse&amp;quot;)&lt;br /&gt;
        return&lt;br /&gt;
    print(&amp;quot;Datele de intrare corespund restrictiilor impuse&amp;quot;)&lt;br /&gt;
    bfs_values = breadth_first_search(root)&lt;br /&gt;
    with open(&#039;bilatimeout.txt&#039;, &#039;w&#039;) as fout:&lt;br /&gt;
        fout.write(&#039; &#039;.join(map(str, bfs_values)))&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>Brianna Waltner</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=0758_-_Bi_Min_Prim&amp;diff=8875</id>
		<title>0758 - Bi Min Prim</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=0758_-_Bi_Min_Prim&amp;diff=8875"/>
		<updated>2024-01-03T15:49:19Z</updated>

		<summary type="html">&lt;p&gt;Brianna Waltner: Pagină nouă: == Cerinţa == Se consideră un arbore binar în care nodurile memorează numere naturale nenule. Să se determine cele mai mici valori număr prim din subarborii stâng și drept ai rădăcinii. == Date de intrare == Fișierul de intrare &amp;#039;&amp;#039;&amp;#039;biminprimin.txt&amp;#039;&amp;#039;&amp;#039; conține pe prima linie lista valorilor memorate în nodurile arborelui, obținute în urma parcurgerii în preordine (rădăcină, stâng, drept). Dacă un nod nu are descendent stâng, în listă va apare valoarea &amp;#039;&amp;#039;&amp;#039;...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cerinţa ==&lt;br /&gt;
Se consideră un arbore binar în care nodurile memorează numere naturale nenule. Să se determine cele mai mici valori număr prim din subarborii stâng și drept ai rădăcinii.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Fișierul de intrare &#039;&#039;&#039;biminprimin.txt&#039;&#039;&#039; conține pe prima linie lista valorilor memorate în nodurile arborelui, obținute în urma parcurgerii în preordine (rădăcină, stâng, drept). Dacă un nod nu are descendent stâng, în listă va apare valoarea &#039;&#039;&#039;0&#039;&#039;&#039;. Dacă un nod nu are descendent drept, în listă va apare valoarea &#039;&#039;&#039;0&#039;&#039;&#039;.&lt;br /&gt;
== Date de ieșire ==&lt;br /&gt;
Fișierul de ieșire &#039;&#039;&#039;biminprimout.txt&#039;&#039;&#039; va conține pe prima linie două valori &#039;&#039;&#039;X&#039;&#039;&#039; &#039;&#039;&#039;Y&#039;&#039;&#039;, reprezentând cea mai mică valoare număr prim din subarborele stâng, respectiv cea mai mică valoare număr prim din subarborele drept. Dacă unul dintre subarbori nu conține numere prime, se va afișa &#039;&#039;&#039;-1&#039;&#039;&#039;.&lt;br /&gt;
== Restricţii şi precizări ==&lt;br /&gt;
* se recomandă folosirea arborilor alocați dinamic.&lt;br /&gt;
* se garantează că rădăcina are doi descendenți direcți&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
; &#039;&#039;&#039;biminprimin.txt&#039;&#039;&#039;&lt;br /&gt;
 67 53 17 0 0 24 0 0 48 0 12 0 0&lt;br /&gt;
; &#039;&#039;&#039;biminprimout.txt&#039;&#039;&#039;&lt;br /&gt;
 Datele de intrare corespund restrictiilor impuse&lt;br /&gt;
 17 -1&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
; &#039;&#039;&#039;biminprimin.txt&#039;&#039;&#039;&lt;br /&gt;
 1 0 0&lt;br /&gt;
; &#039;&#039;&#039;biminprimout.txt&#039;&#039;&#039;&lt;br /&gt;
 Datele de intrare nu corespund restrictiilor impuse&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
class Node:&lt;br /&gt;
    def __init__(self, value):&lt;br /&gt;
        self.value = value&lt;br /&gt;
        self.left = None&lt;br /&gt;
        self.right = None&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def build_tree(values):&lt;br /&gt;
    value = next(values)&lt;br /&gt;
    if value == 0:&lt;br /&gt;
        return None&lt;br /&gt;
    node = Node(value)&lt;br /&gt;
    node.left = build_tree(values)&lt;br /&gt;
    node.right = build_tree(values)&lt;br /&gt;
    return node&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def is_prime(n):&lt;br /&gt;
    if n &amp;lt; 2:&lt;br /&gt;
        return False&lt;br /&gt;
    for i in range(2, int(n**0.5) + 1):&lt;br /&gt;
        if n % i == 0:&lt;br /&gt;
            return False&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def find_min_prime(node):&lt;br /&gt;
    if node is None:&lt;br /&gt;
        return float(&#039;inf&#039;)&lt;br /&gt;
    left = find_min_prime(node.left)&lt;br /&gt;
    right = find_min_prime(node.right)&lt;br /&gt;
    current = node.value if is_prime(node.value) else float(&#039;inf&#039;)&lt;br /&gt;
    return min(left, right, current)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
    with open(&#039;biminprimin.txt&#039;, &#039;r&#039;) as fin:&lt;br /&gt;
        values = list(map(int, fin.readline().split()))&lt;br /&gt;
    root = build_tree(iter(values))&lt;br /&gt;
    if root is None or root.left is None or root.right is None:&lt;br /&gt;
        print(&amp;quot;Datele de intrare nu corespund restrictiilor impuse&amp;quot;)&lt;br /&gt;
        return&lt;br /&gt;
    print(&amp;quot;Datele de intrare corespund restrictiilor impuse&amp;quot;)&lt;br /&gt;
    left_min_prime = find_min_prime(root.left)&lt;br /&gt;
    right_min_prime = find_min_prime(root.right)&lt;br /&gt;
    left_min_prime = -1 if left_min_prime == float(&#039;inf&#039;) else left_min_prime&lt;br /&gt;
    right_min_prime = -1 if right_min_prime == float(&#039;inf&#039;) else right_min_prime&lt;br /&gt;
    with open(&#039;biminprimout.txt&#039;, &#039;w&#039;) as fout:&lt;br /&gt;
        fout.write(f&amp;quot;{left_min_prime} {right_min_prime}&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    main()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Brianna Waltner</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=0757_-_Bi_Max&amp;diff=8872</id>
		<title>0757 - Bi Max</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=0757_-_Bi_Max&amp;diff=8872"/>
		<updated>2024-01-03T15:37:16Z</updated>

		<summary type="html">&lt;p&gt;Brianna Waltner: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cerinţa ==&lt;br /&gt;
Se consideră un arbore binar în care nodurile memorează numere naturale nenule. Să se determine valorile maxime din subarborii stâng și drept ai rădăcinii.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Fișierul de intrare &#039;&#039;&#039;bimaxin.txt&#039;&#039;&#039; conține pe prima linie lista valorilor memorate în nodurile arborelui, obținute în urma parcurgerii în preordine (rădăcină, stâng, drept). Dacă un nod nu are descendent stâng, în listă va apare valoarea &#039;&#039;&#039;0&#039;&#039;&#039;. Dacă un nod nu are descendent drept, în listă va apare valoarea &#039;&#039;&#039;0&#039;&#039;&#039;.&lt;br /&gt;
== Date de ieșire ==&lt;br /&gt;
Fișierul de ieșire &#039;&#039;&#039;bimaxout.txt&#039;&#039;&#039; va conține pe prima linie două valori &#039;&#039;&#039;X&#039;&#039;&#039; &#039;&#039;&#039;Y&#039;&#039;&#039;, reprezentând valoarea maximă din subarborele stâng, respectiv valoarea maximă din subarborele drept.&lt;br /&gt;
== Restricţii şi precizări ==&lt;br /&gt;
* se recomandă folosirea arborilor alocați dinamic.&lt;br /&gt;
* se garantează că rădăcina are doi descendenți direcți&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
&#039;&#039;&#039;bimaxin.txt&#039;&#039;&#039;&lt;br /&gt;
 67 51 18 0 0 24 0 0 48 0 11 0 0&lt;br /&gt;
&#039;&#039;&#039;bimaxout.txt&#039;&#039;&#039;&lt;br /&gt;
 Datele de intrare corespund restrictiilor impuse&lt;br /&gt;
 51 48&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
&#039;&#039;&#039;bimaxin.txt&#039;&#039;&#039;&lt;br /&gt;
 1 0 0&lt;br /&gt;
&#039;&#039;&#039;bimaxout.txt&#039;&#039;&#039;&lt;br /&gt;
 Datele de intrare nu corespund restrictiilor impuse&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
class Node:&lt;br /&gt;
    def __init__(self, value):&lt;br /&gt;
        self.value = value&lt;br /&gt;
        self.left = None&lt;br /&gt;
        self.right = None&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def build_tree(values):&lt;br /&gt;
    value = next(values)&lt;br /&gt;
    if value == 0:&lt;br /&gt;
        return None&lt;br /&gt;
    node = Node(value)&lt;br /&gt;
    node.left = build_tree(values)&lt;br /&gt;
    node.right = build_tree(values)&lt;br /&gt;
    return node&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def find_max(node):&lt;br /&gt;
    if node is None:&lt;br /&gt;
        return 0&lt;br /&gt;
    return max(node.value, find_max(node.left), find_max(node.right))&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
    with open(&#039;bimaxin.txt&#039;, &#039;r&#039;) as fin:&lt;br /&gt;
        values = list(map(int, fin.readline().split()))&lt;br /&gt;
    root = build_tree(iter(values))&lt;br /&gt;
    if root is None or root.left is None or root.right is None:&lt;br /&gt;
        print(&amp;quot;Datele de intrare nu corespund restrictiilor impuse&amp;quot;)&lt;br /&gt;
        return&lt;br /&gt;
    print(&amp;quot;Datele de intrare corespund restrictiilor impuse&amp;quot;)&lt;br /&gt;
    left_max = find_max(root.left)&lt;br /&gt;
    right_max = find_max(root.right)&lt;br /&gt;
    with open(&#039;bimaxout.txt&#039;, &#039;w&#039;) as fout:&lt;br /&gt;
        fout.write(f&amp;quot;{left_max} {right_max}&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    main()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Brianna Waltner</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=0756_-_Nr_Nod&amp;diff=8871</id>
		<title>0756 - Nr Nod</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=0756_-_Nr_Nod&amp;diff=8871"/>
		<updated>2024-01-03T15:36:10Z</updated>

		<summary type="html">&lt;p&gt;Brianna Waltner: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cerinţa ==&lt;br /&gt;
Se consideră un arbore binar în care nodurile memorează numere naturale nenule. Să se determine câte noduri din arbore au un singur descendent direct.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Fișierul de intrare &#039;&#039;&#039;nrnodin.txt&#039;&#039;&#039; conține pe prima linie lista valorilor memorate în nodurile arborelui, obținute în urma parcurgerii în preordine (rădăcină, stâng, drept). Dacă un nod nu are descendent stâng, în listă va apărea valoarea &#039;&#039;&#039;0&#039;&#039;&#039;. Dacă un nod nu are descendent drept, în listă va apărea valoarea &#039;&#039;&#039;0&#039;&#039;&#039;.&lt;br /&gt;
== Date de ieșire ==&lt;br /&gt;
Fișierul de ieșire &#039;&#039;&#039;nrnodout.txt&#039;&#039;&#039; va conține pe prima linie un singur număr &#039;&#039;&#039;C&#039;&#039;&#039;, reprezentând numărul de noduri din arbore care au un singur descendent direct.&lt;br /&gt;
== Restricţii şi precizări ==&lt;br /&gt;
* se recomandă folosirea arborilor alocați dinamic.&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
; &#039;&#039;&#039;nrnodin.txt&#039;&#039;&#039;&lt;br /&gt;
 67 51 18 0 0 24 0 0 48 0 11 0 0&lt;br /&gt;
; &#039;&#039;&#039;nrnodout.txt&#039;&#039;&#039;&lt;br /&gt;
 Datele de intrare corespund restrictiilor impuse&lt;br /&gt;
 1&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
class Node:&lt;br /&gt;
    def __init__(self, value):&lt;br /&gt;
        self.value = value&lt;br /&gt;
        self.left = None&lt;br /&gt;
        self.right = None&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def build_tree(values):&lt;br /&gt;
    value = next(values)&lt;br /&gt;
    if value == 0:&lt;br /&gt;
        return None&lt;br /&gt;
    node = Node(value)&lt;br /&gt;
    node.left = build_tree(values)&lt;br /&gt;
    node.right = build_tree(values)&lt;br /&gt;
    return node&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def count_single_child_nodes(node):&lt;br /&gt;
    if node is None:&lt;br /&gt;
        return 0&lt;br /&gt;
    count = count_single_child_nodes(node.left) + count_single_child_nodes(node.right)&lt;br /&gt;
    if (node.left is not None and node.right is None) or (node.left is None and node.right is not None):&lt;br /&gt;
        count += 1&lt;br /&gt;
    return count&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
    with open(&#039;nrnodin.txt&#039;, &#039;r&#039;) as fin:&lt;br /&gt;
        values = map(int, fin.readline().split())&lt;br /&gt;
    root = build_tree(iter(values))&lt;br /&gt;
    count = count_single_child_nodes(root)&lt;br /&gt;
    with open(&#039;nrnodout.txt&#039;, &#039;w&#039;) as fout:&lt;br /&gt;
        fout.write(str(count))&lt;br /&gt;
        if not all(1 &amp;lt;= value &amp;lt;= 1000000 for value in values if value != 0):&lt;br /&gt;
            print(&amp;quot;Datele de intrare nu corespund restrictiilor impuse&amp;quot;)&lt;br /&gt;
            return&lt;br /&gt;
        print(&amp;quot;Datele de intrare corespund restrictiilor impuse&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    main()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Brianna Waltner</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=0757_-_Bi_Max&amp;diff=8870</id>
		<title>0757 - Bi Max</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=0757_-_Bi_Max&amp;diff=8870"/>
		<updated>2024-01-03T15:35:00Z</updated>

		<summary type="html">&lt;p&gt;Brianna Waltner: Pagină nouă: == Cerinţa == Se consideră un arbore binar în care nodurile memorează numere naturale nenule. Să se determine valorile maxime din subarborii stâng și drept ai rădăcinii. == Date de intrare == Fișierul de intrare &amp;#039;&amp;#039;&amp;#039;bimaxin.txt&amp;#039;&amp;#039;&amp;#039; conține pe prima linie lista valorilor memorate în nodurile arborelui, obținute în urma parcurgerii în preordine (rădăcină, stâng, drept). Dacă un nod nu are descendent stâng, în listă va apare valoarea &amp;#039;&amp;#039;&amp;#039;0&amp;#039;&amp;#039;&amp;#039;. Dacă un nod nu...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cerinţa ==&lt;br /&gt;
Se consideră un arbore binar în care nodurile memorează numere naturale nenule. Să se determine valorile maxime din subarborii stâng și drept ai rădăcinii.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Fișierul de intrare &#039;&#039;&#039;bimaxin.txt&#039;&#039;&#039; conține pe prima linie lista valorilor memorate în nodurile arborelui, obținute în urma parcurgerii în preordine (rădăcină, stâng, drept). Dacă un nod nu are descendent stâng, în listă va apare valoarea &#039;&#039;&#039;0&#039;&#039;&#039;. Dacă un nod nu are descendent drept, în listă va apare valoarea &#039;&#039;&#039;0&#039;&#039;&#039;.&lt;br /&gt;
== Date de ieșire ==&lt;br /&gt;
Fișierul de ieșire &#039;&#039;&#039;bimaxout.txt&#039;&#039;&#039; va conține pe prima linie două valori &#039;&#039;&#039;X&#039;&#039;&#039; &#039;&#039;&#039;Y&#039;&#039;&#039;, reprezentând valoarea maximă din subarborele stâng, respectiv valoarea maximă din subarborele drept.&lt;br /&gt;
== Restricţii şi precizări ==&lt;br /&gt;
* se recomandă folosirea arborilor alocați dinamic.&lt;br /&gt;
* se garantează că rădăcina are doi descendenți direcți&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
&#039;&#039;&#039;bimaxin.txt&#039;&#039;&#039;&lt;br /&gt;
 Datele de intrare corespund restrictiilor impuse&lt;br /&gt;
 67 51 18 0 0 24 0 0 48 0 11 0 0&lt;br /&gt;
&#039;&#039;&#039;bimaxout.txt&#039;&#039;&#039;&lt;br /&gt;
 51 48&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
&#039;&#039;&#039;bimaxin.txt&#039;&#039;&#039;&lt;br /&gt;
 1 0 0&lt;br /&gt;
&#039;&#039;&#039;bimaxout.txt&#039;&#039;&#039;&lt;br /&gt;
 Datele de intrare nu corespund restrictiilor impuse&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
class Node:&lt;br /&gt;
    def __init__(self, value):&lt;br /&gt;
        self.value = value&lt;br /&gt;
        self.left = None&lt;br /&gt;
        self.right = None&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def build_tree(values):&lt;br /&gt;
    value = next(values)&lt;br /&gt;
    if value == 0:&lt;br /&gt;
        return None&lt;br /&gt;
    node = Node(value)&lt;br /&gt;
    node.left = build_tree(values)&lt;br /&gt;
    node.right = build_tree(values)&lt;br /&gt;
    return node&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def find_max(node):&lt;br /&gt;
    if node is None:&lt;br /&gt;
        return 0&lt;br /&gt;
    return max(node.value, find_max(node.left), find_max(node.right))&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
    with open(&#039;bimaxin.txt&#039;, &#039;r&#039;) as fin:&lt;br /&gt;
        values = list(map(int, fin.readline().split()))&lt;br /&gt;
    root = build_tree(iter(values))&lt;br /&gt;
    if root is None or root.left is None or root.right is None:&lt;br /&gt;
        print(&amp;quot;Datele de intrare nu corespund restrictiilor impuse&amp;quot;)&lt;br /&gt;
        return&lt;br /&gt;
    print(&amp;quot;Datele de intrare corespund restrictiilor impuse&amp;quot;)&lt;br /&gt;
    left_max = find_max(root.left)&lt;br /&gt;
    right_max = find_max(root.right)&lt;br /&gt;
    with open(&#039;bimaxout.txt&#039;, &#039;w&#039;) as fout:&lt;br /&gt;
        fout.write(f&amp;quot;{left_max} {right_max}&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    main()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Brianna Waltner</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=0756_-_Nr_Nod&amp;diff=8866</id>
		<title>0756 - Nr Nod</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=0756_-_Nr_Nod&amp;diff=8866"/>
		<updated>2024-01-03T15:25:50Z</updated>

		<summary type="html">&lt;p&gt;Brianna Waltner: Pagină nouă: == Cerinţa == Se consideră un arbore binar în care nodurile memorează numere naturale nenule. Să se determine câte noduri din arbore au un singur descendent direct. == Date de intrare == Fișierul de intrare &amp;#039;&amp;#039;&amp;#039;nrnodin.txt&amp;#039;&amp;#039;&amp;#039; conține pe prima linie lista valorilor memorate în nodurile arborelui, obținute în urma parcurgerii în preordine (rădăcină, stâng, drept). Dacă un nod nu are descendent stâng, în listă va apărea valoarea &amp;#039;&amp;#039;&amp;#039;0&amp;#039;&amp;#039;&amp;#039;. Dacă un nod nu are d...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cerinţa ==&lt;br /&gt;
Se consideră un arbore binar în care nodurile memorează numere naturale nenule. Să se determine câte noduri din arbore au un singur descendent direct.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Fișierul de intrare &#039;&#039;&#039;nrnodin.txt&#039;&#039;&#039; conține pe prima linie lista valorilor memorate în nodurile arborelui, obținute în urma parcurgerii în preordine (rădăcină, stâng, drept). Dacă un nod nu are descendent stâng, în listă va apărea valoarea &#039;&#039;&#039;0&#039;&#039;&#039;. Dacă un nod nu are descendent drept, în listă va apărea valoarea &#039;&#039;&#039;0&#039;&#039;&#039;.&lt;br /&gt;
== Date de ieșire ==&lt;br /&gt;
Fișierul de ieșire &#039;&#039;&#039;nrnodout.txt&#039;&#039;&#039; va conține pe prima linie un singur număr &#039;&#039;&#039;C&#039;&#039;&#039;, reprezentând numărul de noduri din arbore care au un singur descendent direct.&lt;br /&gt;
== Restricţii şi precizări ==&lt;br /&gt;
* se recomandă folosirea arborilor alocați dinamic.&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
; &#039;&#039;&#039;nrnodin.txt&#039;&#039;&#039;&lt;br /&gt;
 67 51 18 0 0 24 0 0 48 0 11 0 0&lt;br /&gt;
; &#039;&#039;&#039;nrnodout.txt&#039;&#039;&#039;&lt;br /&gt;
 1&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
class Node:&lt;br /&gt;
    def __init__(self, value):&lt;br /&gt;
        self.value = value&lt;br /&gt;
        self.left = None&lt;br /&gt;
        self.right = None&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def build_tree(values):&lt;br /&gt;
    value = next(values)&lt;br /&gt;
    if value == 0:&lt;br /&gt;
        return None&lt;br /&gt;
    node = Node(value)&lt;br /&gt;
    node.left = build_tree(values)&lt;br /&gt;
    node.right = build_tree(values)&lt;br /&gt;
    return node&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def count_single_child_nodes(node):&lt;br /&gt;
    if node is None:&lt;br /&gt;
        return 0&lt;br /&gt;
    count = count_single_child_nodes(node.left) + count_single_child_nodes(node.right)&lt;br /&gt;
    if (node.left is not None and node.right is None) or (node.left is None and node.right is not None):&lt;br /&gt;
        count += 1&lt;br /&gt;
    return count&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
    with open(&#039;nrnodin.txt&#039;, &#039;r&#039;) as fin:&lt;br /&gt;
        values = map(int, fin.readline().split())&lt;br /&gt;
    root = build_tree(iter(values))&lt;br /&gt;
    count = count_single_child_nodes(root)&lt;br /&gt;
    with open(&#039;nrnodout.txt&#039;, &#039;w&#039;) as fout:&lt;br /&gt;
        fout.write(str(count))&lt;br /&gt;
        if not all(1 &amp;lt;= value &amp;lt;= 1000000 for value in values if value != 0):&lt;br /&gt;
            print(&amp;quot;Datele de intrare nu corespund restrictiilor impuse&amp;quot;)&lt;br /&gt;
            return&lt;br /&gt;
        print(&amp;quot;Datele de intrare corespund restrictiilor impuse&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    main()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Brianna Waltner</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=2198_%E2%80%93_Elimin_Prime&amp;diff=8856</id>
		<title>2198 – Elimin Prime</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=2198_%E2%80%93_Elimin_Prime&amp;diff=8856"/>
		<updated>2024-01-03T15:01:02Z</updated>

		<summary type="html">&lt;p&gt;Brianna Waltner: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Se consideră un șir de n numere întregi, cu n număr natural nenul. Se elimină primul element din șir și toate elementele șirului aflate pe poziții care reprezintă numere prime, în ordinea crescătoare a pozițiilor. Operația de eliminare se repetă cu elementele rămase în șir, repoziționate după eliminarea celorlalte, până când este eliminat și ultimul element rămas.&lt;br /&gt;
== Cerinţa ==&lt;br /&gt;
Să se scrie un program care afișează elementele șirului inițial, în ordinea în care au fost eliminate conform algoritmului descris mai sus.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Fișierul de intrare &#039;&#039;&#039;elimin_primein.txt&#039;&#039;&#039; conține pe prima linie numărul &#039;&#039;&#039;n&#039;&#039;&#039;, iar pe a doua linie &#039;&#039;&#039;n&#039;&#039;&#039; numere întregi separate prin spații.&lt;br /&gt;
== Date de ieșire ==&lt;br /&gt;
Fișierul de ieșire &#039;&#039;&#039;elimin_primeout.txt&#039;&#039;&#039; va conține pe prima linie, separate prin spațiu, numerele din fișierul de intrare în ordinea eliminării acestora.&lt;br /&gt;
== Restricţii şi precizări ==&lt;br /&gt;
* &#039;&#039;&#039;1 &amp;amp;les; n &amp;amp;les; 100.000&#039;&#039;&#039;&lt;br /&gt;
* numerele de pe a doua linie a fișierului de intrare sun cuprinse în intervalul &#039;&#039;&#039;[-1.000.000.000, 1.000.000.000]&#039;&#039;&#039;&lt;br /&gt;
* elementele șirului sunt indexate de la &#039;&#039;&#039;1&#039;&#039;&#039; la &#039;&#039;&#039;n&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
; elimin_primein.txt&lt;br /&gt;
 10 &lt;br /&gt;
 1 2 3 4 5 6 7 8 9 10&lt;br /&gt;
; elimin_primeout.txt&lt;br /&gt;
 Datele de intrare corespund restrictiilor impuse&lt;br /&gt;
 1 2 3 5 7 4 6 8 10 9&lt;br /&gt;
&lt;br /&gt;
== Exemplu 2 ==&lt;br /&gt;
; elimin_primein.txt&lt;br /&gt;
 100001&lt;br /&gt;
 1 2 3 4 5 6 7 8 9 10 ... 1000001&lt;br /&gt;
; elimin_primeout.txt&lt;br /&gt;
 Datele de intrare nu corespund restrictiilor impuse&lt;br /&gt;
&lt;br /&gt;
== Atentie! ==&lt;br /&gt;
 Programele vor folosi doar instrucțiunile de bază ale limbajului de programare ales, inclusiv cele de intrare/ieșire, dar nu și alte funcții din biblioteci specializate (&#039;&#039;&#039;algorithm&#039;&#039;&#039;, &#039;&#039;&#039;string&#039;&#039;&#039;,…).&lt;br /&gt;
&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
def main():&lt;br /&gt;
    with open(&#039;elimin_primein.txt&#039;, &#039;r&#039;) as fin, open(&#039;elimin_primeout.txt&#039;, &#039;w&#039;) as fout:&lt;br /&gt;
        n = int(fin.readline().strip())&lt;br /&gt;
        if n &amp;lt; 1 or n &amp;gt; 100000:&lt;br /&gt;
            fout.write(&amp;quot;Datele de intrare nu corespund restrictiilor impuse\n&amp;quot;)&lt;br /&gt;
            return&lt;br /&gt;
        numbers = list(map(int, fin.readline().strip().split()))&lt;br /&gt;
        if any(x &amp;lt; -1000000000 or x &amp;gt; 1000000000 for x in numbers):&lt;br /&gt;
            fout.write(&amp;quot;Datele de intrare nu corespund restrictiilor impuse\n&amp;quot;)&lt;br /&gt;
            return&lt;br /&gt;
        fout.write(&amp;quot;Datele de intrare corespund restrictiilor impuse\n&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    main()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Brianna Waltner</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=2198_%E2%80%93_Elimin_Prime&amp;diff=8855</id>
		<title>2198 – Elimin Prime</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=2198_%E2%80%93_Elimin_Prime&amp;diff=8855"/>
		<updated>2024-01-03T15:00:31Z</updated>

		<summary type="html">&lt;p&gt;Brianna Waltner: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Se consideră un șir de n numere întregi, cu n număr natural nenul. Se elimină primul element din șir și toate elementele șirului aflate pe poziții care reprezintă numere prime, în ordinea crescătoare a pozițiilor. Operația de eliminare se repetă cu elementele rămase în șir, repoziționate după eliminarea celorlalte, până când este eliminat și ultimul element rămas.&lt;br /&gt;
== Cerinţa ==&lt;br /&gt;
Să se scrie un program care afișează elementele șirului inițial, în ordinea în care au fost eliminate conform algoritmului descris mai sus.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Fișierul de intrare &#039;&#039;&#039;elimin_primein.txt&#039;&#039;&#039; conține pe prima linie numărul &#039;&#039;&#039;n&#039;&#039;&#039;, iar pe a doua linie &#039;&#039;&#039;n&#039;&#039;&#039; numere întregi separate prin spații.&lt;br /&gt;
== Date de ieșire ==&lt;br /&gt;
Fișierul de ieșire &#039;&#039;&#039;elimin_primeout.txt&#039;&#039;&#039; va conține pe prima linie, separate prin spațiu, numerele din fișierul de intrare în ordinea eliminării acestora.&lt;br /&gt;
== Restricţii şi precizări ==&lt;br /&gt;
* &#039;&#039;&#039;1 &amp;amp;les; n &amp;amp;les; 100.000&#039;&#039;&#039;&lt;br /&gt;
* numerele de pe a doua linie a fișierului de intrare sun cuprinse în intervalul &#039;&#039;&#039;[-1.000.000.000, 1.000.000.000]&#039;&#039;&#039;&lt;br /&gt;
* elementele șirului sunt indexate de la &#039;&#039;&#039;1&#039;&#039;&#039; la &#039;&#039;&#039;n&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
; elimin_primein.txt&lt;br /&gt;
 10 &lt;br /&gt;
 1 2 3 4 5 6 7 8 9 10&lt;br /&gt;
; elimin_primeout.txt&lt;br /&gt;
 Datele de intrare corespund restrictiilor impuse&lt;br /&gt;
 1 2 3 5 7 4 6 8 10 9&lt;br /&gt;
&lt;br /&gt;
== Exemplu 2 ==&lt;br /&gt;
; elimin_primein.txt&lt;br /&gt;
 100001&lt;br /&gt;
 1 2 3 4 5 6 7 8 9 10 ... 1000001&lt;br /&gt;
; elimin_primeout.txt&lt;br /&gt;
 Datele de intrare nu corespund restrictiilor impuse&lt;br /&gt;
&lt;br /&gt;
== Atentie! ==&lt;br /&gt;
 Programele vor folosi doar instrucțiunile de bază ale limbajului de programare ales, inclusiv cele de intrare/ieșire, dar nu și alte funcții din biblioteci specializate (&#039;&#039;&#039;algorithm&#039;&#039;&#039;, &#039;&#039;&#039;string&#039;&#039;&#039;,…).&lt;br /&gt;
&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
def main():&lt;br /&gt;
    with open(&#039;elimin_primein.txt&#039;, &#039;r&#039;) as fin, open(&#039;elimin_primeout.txt&#039;, &#039;w&#039;) as fout:&lt;br /&gt;
        n = int(fin.readline().strip())&lt;br /&gt;
        if n &amp;lt; 1 or n &amp;gt; 100000:&lt;br /&gt;
            fout.write(&amp;quot;Datele de intrare nu corespund restrictiilor impuse\n&amp;quot;)&lt;br /&gt;
            return&lt;br /&gt;
        numbers = list(map(int, fin.readline().strip().split()))&lt;br /&gt;
        if any(x &amp;lt; -1000000000 or x &amp;gt; 1000000000 for x in numbers):&lt;br /&gt;
            fout.write(&amp;quot;Datele de intrare nu corespund restrictiilor impuse\n&amp;quot;)&lt;br /&gt;
            return&lt;br /&gt;
        fout.write(&amp;quot;Datele de intrare corespund restrictiilor impuse\n&amp;quot;)&lt;br /&gt;
        # TODO: Implement the algorithm to eliminate the numbers&lt;br /&gt;
        # and write the eliminated numbers to fout&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>Brianna Waltner</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=2847_%E2%80%93_List&amp;diff=8853</id>
		<title>2847 – List</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=2847_%E2%80%93_List&amp;diff=8853"/>
		<updated>2024-01-03T14:54:52Z</updated>

		<summary type="html">&lt;p&gt;Brianna Waltner: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cerinţa ==&lt;br /&gt;
Se dă o listă simplu înlănțuită care conține &#039;&#039;&#039;n&#039;&#039;&#039; perechi de numere naturale &#039;&#039;&#039;(a,b)&#039;&#039;&#039;. Fiecare pereche este stocată în câte un nod al listei; notăm cu &#039;&#039;&#039;a&#039;&#039;&#039; primul număr stocat într-un nod și cu &#039;&#039;&#039;b&#039;&#039;&#039; al doilea număr stocat în acel nod.&lt;br /&gt;
&lt;br /&gt;
Se cere să se insereze în listă astfel:&lt;br /&gt;
&lt;br /&gt;
Dacă pentru nodul curent:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;a&#039;&#039;&#039; este par și &#039;&#039;&#039;b&#039;&#039;&#039; este impar se inserează după nodul curent un nou nod, care conține dublul sumei lor pe prima poziție a nodului inserat iar pe a doua poziție diferența dintre dublul sumei numerelor din nodul curent și al doilea număr din nodul curent;&lt;br /&gt;
* &#039;&#039;&#039;a&#039;&#039;&#039; este impar, &#039;&#039;&#039;b&#039;&#039;&#039; este par se inserează înaintea nodului curent un nou nod, care conține dublul sumei lor pe a doua poziție a nodului inserat și pe prima poziție diferența dintre dublul sumei numerelor din nodul curent și a primului număr din nodul curent;&lt;br /&gt;
* &#039;&#039;&#039;a&#039;&#039;&#039; este par, &#039;&#039;&#039;b&#039;&#039;&#039; este par se inserează după nodul curent un nou nod, care conține jumătatea sumei lor pe prima poziție a nodului inserat iar pe a doua poziție suma dintre jumătatea sumei numerelor din nodul curent și al doilea număr din nodul curent;&lt;br /&gt;
* &#039;&#039;&#039;a&#039;&#039;&#039; este impar, &#039;&#039;&#039;b&#039;&#039;&#039; este impar se inserează înaintea nodului curent un nou nod, care conține jumătatea sumei lor pe a doua poziție a nodului inserat și pe prima poziție suma dintre jumătatea sumei numerelor din nodul curent și a primului număr din nodul curent.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Fișierul de intrare &#039;&#039;&#039;listin.txt&#039;&#039;&#039; conține pe prima linie numărul &#039;&#039;&#039;n&#039;&#039;&#039;, iar pe următoarele &#039;&#039;&#039;n&#039;&#039;&#039; linii &#039;&#039;&#039;n&#039;&#039;&#039; perechi de numere naturale separate prin spații.&lt;br /&gt;
== Date de ieșire ==&lt;br /&gt;
Fișierul de ieșire &#039;&#039;&#039;listout.txt&#039;&#039;&#039; va conține pe câte o linie numerele fiecărui nod al listei separate prin spații, după realizarea inserărilor.&lt;br /&gt;
== Restricţii şi precizări ==&lt;br /&gt;
* &#039;&#039;&#039;1 &amp;amp;les; n &amp;amp;les; 100.000&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;1 &amp;amp;les; a &amp;amp;les; b &amp;amp;les; 100&#039;&#039;&#039;&lt;br /&gt;
* se recomandă utilizarea unei liste alocate dinamic&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
; listin.txt&lt;br /&gt;
 5&lt;br /&gt;
 1 2&lt;br /&gt;
 2 4&lt;br /&gt;
 1 1&lt;br /&gt;
 2 6&lt;br /&gt;
 7 4&lt;br /&gt;
; listout.txt&lt;br /&gt;
 Datele de intrare corespund restrictiilor impuse&lt;br /&gt;
 5 6&lt;br /&gt;
 1 2&lt;br /&gt;
 2 4&lt;br /&gt;
 3 7&lt;br /&gt;
 2 1&lt;br /&gt;
 1 1&lt;br /&gt;
 2 6&lt;br /&gt;
 4 10&lt;br /&gt;
 15 22&lt;br /&gt;
 7 4&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
; listin.txt&lt;br /&gt;
 100001&lt;br /&gt;
 1 2&lt;br /&gt;
 2 3&lt;br /&gt;
 3 4&lt;br /&gt;
 ...&lt;br /&gt;
 100000 100001&lt;br /&gt;
; listout.txt&lt;br /&gt;
 Datele de intrare nu corespund restrictiilor impuse&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
class Node:&lt;br /&gt;
    def __init__(self, a, b, next_node=None):&lt;br /&gt;
        self.a = a&lt;br /&gt;
        self.b = b&lt;br /&gt;
        self.next_node = next_node&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def insert_after(node, a, b):&lt;br /&gt;
    new_node = Node(a, b, node.next_node)&lt;br /&gt;
    node.next_node = new_node&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def insert_before(head, prev_node, node, a, b):&lt;br /&gt;
    new_node = Node(a, b, node)&lt;br /&gt;
    if prev_node is None:&lt;br /&gt;
        return new_node&lt;br /&gt;
    else:&lt;br /&gt;
        prev_node.next_node = new_node&lt;br /&gt;
        return head&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
    with open(&#039;listin.txt&#039;, &#039;r&#039;) as fin, open(&#039;listout.txt&#039;, &#039;w&#039;) as fout:&lt;br /&gt;
        n = int(fin.readline().strip())&lt;br /&gt;
        if n &amp;lt; 1 or n &amp;gt; 100000:&lt;br /&gt;
            fout.write(&amp;quot;Datele de intrare nu corespund restrictiilor impuse\n&amp;quot;)&lt;br /&gt;
            return&lt;br /&gt;
        a, b = map(int, fin.readline().strip().split())&lt;br /&gt;
        if a &amp;lt; 1 or a &amp;gt; 100 or b &amp;lt; 1 or b &amp;gt; 100:&lt;br /&gt;
            fout.write(&amp;quot;Datele de intrare nu corespund restrictiilor impuse\n&amp;quot;)&lt;br /&gt;
            return&lt;br /&gt;
        head = Node(a, b)&lt;br /&gt;
        node = head&lt;br /&gt;
        for _ in range(n-1):&lt;br /&gt;
            a, b = map(int, fin.readline().strip().split())&lt;br /&gt;
            if a &amp;lt; 1 or a &amp;gt; 100 or b &amp;lt; 1 or b &amp;gt; 100:&lt;br /&gt;
                fout.write(&amp;quot;Datele de intrare nu corespund restrictiilor impuse\n&amp;quot;)&lt;br /&gt;
                return&lt;br /&gt;
            node.next_node = Node(a, b)&lt;br /&gt;
            node = node.next_node&lt;br /&gt;
        fout.write(&amp;quot;Datele de intrare corespund restrictiilor impuse\n&amp;quot;)&lt;br /&gt;
        prev = None&lt;br /&gt;
        node = head&lt;br /&gt;
        while node is not None:&lt;br /&gt;
            if node.a % 2 == 0 and node.b % 2 == 1:&lt;br /&gt;
                insert_after(node, 2*(node.a+node.b), 2*(node.a+node.b)-node.b)&lt;br /&gt;
            elif node.a % 2 == 1 and node.b % 2 == 0:&lt;br /&gt;
                head = insert_before(head, prev, node, 2*(node.a+node.b)-node.a, 2*(node.a+node.b))&lt;br /&gt;
            elif node.a % 2 == 0 and node.b % 2 == 0:&lt;br /&gt;
                insert_after(node, (node.a+node.b)//2, (node.a+node.b)//2+node.b)&lt;br /&gt;
            elif node.a % 2 == 1 and node.b % 2 == 1:&lt;br /&gt;
                head = insert_before(head, prev, node, (node.a+node.b)//2+node.a, (node.a+node.b)//2)&lt;br /&gt;
            prev = node&lt;br /&gt;
            node = node.next_node&lt;br /&gt;
        node = head&lt;br /&gt;
        while node is not None:&lt;br /&gt;
            fout.write(str(node.a) + &#039; &#039; + str(node.b) + &#039;\n&#039;)&lt;br /&gt;
            node = node.next_node&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>Brianna Waltner</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=0676_-_Count_Prim_Sub&amp;diff=8843</id>
		<title>0676 - Count Prim Sub</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=0676_-_Count_Prim_Sub&amp;diff=8843"/>
		<updated>2024-01-03T14:00:57Z</updated>

		<summary type="html">&lt;p&gt;Brianna Waltner: Pagină nouă: == Cerinţa == Considerăm un arbore binar cu &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039; noduri în care fiecare nod este numerotat de la &amp;#039;&amp;#039;&amp;#039;1&amp;#039;&amp;#039;&amp;#039; la &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039; și conține o valoare număr natural. Se dau &amp;#039;&amp;#039;&amp;#039;k&amp;#039;&amp;#039;&amp;#039; noduri din arbore și se cere determinarea, pentru fiecare nod, a numărului de noduri din subarborele cu rădăcina în acel nod care conțin valori prime. == Date de intrare == Fișierul de intrare &amp;#039;&amp;#039;&amp;#039;countprimsubin.txt&amp;#039;&amp;#039;&amp;#039; conține pe prima linie numărul &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039;. Fiecare dintre următoarele &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039; l...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cerinţa ==&lt;br /&gt;
Considerăm un arbore binar cu &#039;&#039;&#039;n&#039;&#039;&#039; noduri în care fiecare nod este numerotat de la &#039;&#039;&#039;1&#039;&#039;&#039; la &#039;&#039;&#039;n&#039;&#039;&#039; și conține o valoare număr natural. Se dau &#039;&#039;&#039;k&#039;&#039;&#039; noduri din arbore și se cere determinarea, pentru fiecare nod, a numărului de noduri din subarborele cu rădăcina în acel nod care conțin valori prime.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Fișierul de intrare &#039;&#039;&#039;countprimsubin.txt&#039;&#039;&#039; conține pe prima linie numărul &#039;&#039;&#039;n&#039;&#039;&#039;. Fiecare dintre următoarele &#039;&#039;&#039;n&#039;&#039;&#039; linii contine câte &#039;&#039;&#039;3&#039;&#039;&#039; numere &#039;&#039;&#039;X st dr&#039;&#039;&#039;; linia &#039;&#039;&#039;i + 1&#039;&#039;&#039; din fișier conține informatiile despre nodul numerotat cu &#039;&#039;&#039;i&#039;&#039;&#039;: &#039;&#039;&#039;X&#039;&#039;&#039; reprezintă valoare din nod, &#039;&#039;&#039;st&#039;&#039;&#039; reprezintă numărul de ordine al descendentului stâng sau &#039;&#039;&#039;0&#039;&#039;&#039; dacă nodul &#039;&#039;&#039;i&#039;&#039;&#039; nu are descendent stâng, iar &#039;&#039;&#039;dr&#039;&#039;&#039; reprezintă numărul de ordine al descendentului drept sau &#039;&#039;&#039;0&#039;&#039;&#039; dacă nodul &#039;&#039;&#039;i&#039;&#039;&#039; nu are descendent drept.&lt;br /&gt;
&lt;br /&gt;
Pe următoarea linie se află numărul &#039;&#039;&#039;k&#039;&#039;&#039;, iar pe fiecare dintre următoarele&#039;&#039;&#039;k&#039;&#039;&#039; linii se află câte un număr natural cuprins între &#039;&#039;&#039;1&#039;&#039;&#039; și &#039;&#039;&#039;n&#039;&#039;&#039;, reprezentând nodul curent.&lt;br /&gt;
== Date de ieșire ==&lt;br /&gt;
Fișierul de ieșire &#039;&#039;&#039;countprimsubout.txt&#039;&#039;&#039; va conține &#039;&#039;&#039;k&#039;&#039;&#039; linii; fiecare linie va conține numărul de noduri din subarborele cu rădăcina în nodul corespunzător.&lt;br /&gt;
== Restricţii şi precizări ==&lt;br /&gt;
* &#039;&#039;&#039;1 ≤ n ≤ 1000&#039;&#039;&#039;&lt;br /&gt;
* valorile din nodurile arborelui vor fi mai mici sau egale cu &#039;&#039;&#039;1.000.000&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;1 ≤ k ≤ 1000&#039;&#039;&#039;&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
; &#039;&#039;&#039;countprimsubin.txt&#039;&#039;&#039;&lt;br /&gt;
 6&lt;br /&gt;
 2 3 5&lt;br /&gt;
 6 0 6&lt;br /&gt;
 1 0 0&lt;br /&gt;
 7 1 2&lt;br /&gt;
 4 0 0&lt;br /&gt;
 10 0 0&lt;br /&gt;
 4&lt;br /&gt;
 1&lt;br /&gt;
 2&lt;br /&gt;
 4&lt;br /&gt;
 2&lt;br /&gt;
; &#039;&#039;&#039;countprimsubout.txt&#039;&#039;&#039;&lt;br /&gt;
 Datele de intrare corespund restrictiilor impuse&lt;br /&gt;
 1&lt;br /&gt;
 0&lt;br /&gt;
 2&lt;br /&gt;
 0&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
; &#039;&#039;&#039;countprimsubin.txt&#039;&#039;&#039; &lt;br /&gt;
 1002&lt;br /&gt;
 2 0 0&lt;br /&gt;
 3 0 0&lt;br /&gt;
 5 0 0&lt;br /&gt;
 7 0 0&lt;br /&gt;
 1000001 0 0&lt;br /&gt;
 2&lt;br /&gt;
 1&lt;br /&gt;
 5&lt;br /&gt;
; &#039;&#039;&#039;countprimsubout.txt&#039;&#039;&#039;&lt;br /&gt;
 Datele de intrare nu corespund restrictiilor impuse&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
tree = []&lt;br /&gt;
prime_count = []&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def is_prime(n):&lt;br /&gt;
    if n &amp;lt; 2:&lt;br /&gt;
        return False&lt;br /&gt;
    if n == 2 or n == 3:&lt;br /&gt;
        return True&lt;br /&gt;
    if n % 2 == 0 or n % 3 == 0:&lt;br /&gt;
        return False&lt;br /&gt;
    i = 5&lt;br /&gt;
    w = 2&lt;br /&gt;
    while i * i &amp;lt;= n:&lt;br /&gt;
        if n % i == 0:&lt;br /&gt;
            return False&lt;br /&gt;
        i += w&lt;br /&gt;
        w = 6 - w&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def dfs(node):&lt;br /&gt;
    global tree, prime_count&lt;br /&gt;
    prime_count[node] = is_prime(tree[node][0])&lt;br /&gt;
    if tree[node][1] != 0:&lt;br /&gt;
        prime_count[node] += dfs(tree[node][1])&lt;br /&gt;
    if tree[node][2] != 0:&lt;br /&gt;
        prime_count[node] += dfs(tree[node][2])&lt;br /&gt;
    return prime_count[node]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
    global tree, prime_count&lt;br /&gt;
    with open(&#039;countprimsubin.txt&#039;, &#039;r&#039;) as fin, open(&#039;countprimsubout.txt&#039;, &#039;w&#039;) as fout:&lt;br /&gt;
        n = int(fin.readline().strip())&lt;br /&gt;
        tree = [[0, 0, 0] for _ in range(n+1)]&lt;br /&gt;
        prime_count = [0 for _ in range(n+1)]&lt;br /&gt;
        for i in range(1, n+1):&lt;br /&gt;
            x, st, dr = map(int, fin.readline().strip().split())&lt;br /&gt;
            tree[i] = [x, st, dr]&lt;br /&gt;
        k = int(fin.readline().strip())&lt;br /&gt;
        nodes = [int(fin.readline().strip()) for _ in range(k)]&lt;br /&gt;
        if n &amp;lt; 1 or n &amp;gt; 1000 or any(x &amp;lt; 1 or x &amp;gt; 1000000 for x, _, _ in tree[1:]) or k &amp;lt; 1 or k &amp;gt; 1000:&lt;br /&gt;
            fout.write(&amp;quot;Datele de intrare nu corespund restrictiilor impuse\n&amp;quot;)&lt;br /&gt;
            return&lt;br /&gt;
        fout.write(&amp;quot;Datele de intrare corespund restrictiilor impuse\n&amp;quot;)&lt;br /&gt;
        for node in nodes:&lt;br /&gt;
            fout.write(str(dfs(node)) + &#039;\n&#039;)&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>Brianna Waltner</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=1163_-_CowboysAndAliens&amp;diff=8838</id>
		<title>1163 - CowboysAndAliens</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=1163_-_CowboysAndAliens&amp;diff=8838"/>
		<updated>2024-01-03T12:59:28Z</updated>

		<summary type="html">&lt;p&gt;Brianna Waltner: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cerinţa ==&lt;br /&gt;
Cei &#039;&#039;&#039;m&#039;&#039;&#039; cowboys și cei &#039;&#039;&#039;n&#039;&#039;&#039; aliens s-au întâlnit în vestul sălbatic și, păstrând tradiția locului, s-au așezat în șir indian. Cum cowboys erau gazde primitoare și în special foarte precaute, s-au gândit că între doi cowboys consecutivi ar fi bine să fie cel mult un alien (din motive de securitate). De asemenea primul și ultimul din șir să fie cawboys. Dilema care s-a ivit a fost numărul de moduri în care s-ar putea așeza în șir indian ținând cont de condițiile de securitate impuse.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Fișierul de intrare &#039;&#039;&#039;cowboysandaliensin.txt&#039;&#039;&#039; conține pe prima linie numerele naturale &#039;&#039;&#039;m&#039;&#039;&#039; și &#039;&#039;&#039;n&#039;&#039;&#039;.&lt;br /&gt;
== Date de ieșire ==&lt;br /&gt;
Fișierul de ieșire &#039;&#039;&#039;cowboysandaliensout.txt&#039;&#039;&#039; va conține pe prima linie numărul &#039;&#039;&#039;S&#039;&#039;&#039;, reprezentând numărul de moduri modulo &#039;&#039;&#039;555557&#039;&#039;&#039;, în care s-ar putea așeza în șir indian.&lt;br /&gt;
== Restricţii şi precizări ==&lt;br /&gt;
* &#039;&#039;&#039;1 &amp;amp;les; n &amp;amp;les; m &amp;amp;les; 500.000&lt;br /&gt;
* reprezentările în baza &#039;&#039;&#039;10&#039;&#039;&#039; ale lui &#039;&#039;&#039;x&#039;&#039;&#039;, &#039;&#039;&#039;y&#039;&#039;&#039; şi suma lor nu depăşesc &#039;&#039;&#039;2 000 000 000&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
; &#039;&#039;&#039;cowboysandaliensin.txt&#039;&#039;&#039;&lt;br /&gt;
 3 1&lt;br /&gt;
; &#039;&#039;&#039;cowboysandaliensout.txt&#039;&#039;&#039;&lt;br /&gt;
 Datele de intrare corespund restrictiilor impuse&lt;br /&gt;
 12&lt;br /&gt;
&lt;br /&gt;
== Exemplu 2 ==&lt;br /&gt;
; &#039;&#039;&#039;cowboysandaliensin.txt&#039;&#039;&#039;&lt;br /&gt;
 2 2 &lt;br /&gt;
; &#039;&#039;&#039;cowboysandaliensout.txt&#039;&#039;&#039;&lt;br /&gt;
 Datele de intrare nu corespund restrictiilor impuse&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
MOD = 555557&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
    with open(&#039;cowboysandaliensin.txt&#039;, &#039;r&#039;) as fin, open(&#039;cowboysandaliensout.txt&#039;, &#039;w&#039;) as fout:&lt;br /&gt;
        m, n = map(int, fin.readline().strip().split())&lt;br /&gt;
        if n &amp;gt; m or m &amp;gt; 2 * n + 2:&lt;br /&gt;
            fout.write(&amp;quot;Datele de intrare nu corespund restrictiilor impuse\n&amp;quot;)&lt;br /&gt;
            return&lt;br /&gt;
        dp = [[0 for _ in range(n+1)] for _ in range(m+1)]&lt;br /&gt;
        dp[0][0] = 1&lt;br /&gt;
        for i in range(1, m+1):&lt;br /&gt;
            dp[i][0] = 1&lt;br /&gt;
            for j in range(1, min(i, n)+1):&lt;br /&gt;
                dp[i][j] = (dp[i-1][j-1] + dp[i-1][j]) % MOD&lt;br /&gt;
                if j &amp;lt; i:&lt;br /&gt;
                    dp[i][j] = (dp[i][j] + dp[i-1][j]) % MOD&lt;br /&gt;
        fout.write(&amp;quot;Datele de intrare corespund restrictiilor impuse\n&amp;quot;)&lt;br /&gt;
        fout.write(str(dp[m][n]) + &#039;\n&#039;)&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;br /&gt;
&lt;br /&gt;
== Explicatie ==&lt;br /&gt;
 Dacă cei trei cawboys ar fi Jake, Percy și Roy pe care-i vom nota J, P, R iar alien ar fi Bronc, notat B, atunci ei s-ar putea așeza în șir indian în următoarele moduri: &#039;&#039;&#039;JBPR&#039;&#039;&#039; , &#039;&#039;&#039;JPBR&#039;&#039;&#039; , &#039;&#039;&#039;JBRP&#039;&#039;&#039; , &#039;&#039;&#039;JRBP&#039;&#039;&#039; , &#039;&#039;&#039;PBJR&#039;&#039;&#039; , &#039;&#039;&#039;PJBR&#039;&#039;&#039; , &#039;&#039;&#039;PBRJ&#039;&#039;&#039; , &#039;&#039;&#039;PRBJ&#039;&#039;&#039; , &#039;&#039;&#039;RBPJ&#039;&#039;&#039; , &#039;&#039;&#039;RPBJ&#039;&#039;&#039; , &#039;&#039;&#039;RBJP&#039;&#039;&#039; , &#039;&#039;&#039;RJBP&#039;&#039;&#039;. În total avem 12 moduri.&lt;/div&gt;</summary>
		<author><name>Brianna Waltner</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=1003_-_Baze1&amp;diff=8835</id>
		<title>1003 - Baze1</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=1003_-_Baze1&amp;diff=8835"/>
		<updated>2024-01-03T12:34:56Z</updated>

		<summary type="html">&lt;p&gt;Brianna Waltner: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cerinţa ==&lt;br /&gt;
Se dau două numere &#039;&#039;&#039;b1 b2&#039;&#039;&#039;, reprezentând două baze de numeraţie şi două şiruri de cifre &#039;&#039;&#039;x y&#039;&#039;&#039;, reprezentând două numere: &#039;&#039;&#039;x&#039;&#039;&#039; în baza &#039;&#039;&#039;b1&#039;&#039;&#039;, &#039;&#039;&#039;y&#039;&#039;&#039; în baza &#039;&#039;&#039;b2&#039;&#039;&#039;. Determinaţi suma numerelor &#039;&#039;&#039;x&#039;&#039;&#039; şi &#039;&#039;&#039;y&#039;&#039;&#039; în baza &#039;&#039;&#039;10&#039;&#039;&#039;.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Fișierul de intrare &#039;&#039;&#039;baze1in.txt&#039;&#039;&#039; conține pe prima linie numerele &#039;&#039;&#039;b1 b2&#039;&#039;&#039;, iar pe a doua linie cele două şiruri de cifre cu semnificaţia de mai sus.&lt;br /&gt;
== Date de ieșire ==&lt;br /&gt;
Fișierul de ieșire &#039;&#039;&#039;baze1out.txt&#039;&#039;&#039; va conține pe prima linie numărul &#039;&#039;&#039;S&#039;&#039;&#039;, reprezentând suma dintre &#039;&#039;&#039;x&#039;&#039;&#039; şi &#039;&#039;&#039;y&#039;&#039;&#039;.&lt;br /&gt;
== Restricţii şi precizări ==&lt;br /&gt;
* &#039;&#039;&#039;2 &amp;amp;les; b1,b2 &amp;amp;les; 10&#039;&#039;&#039;&lt;br /&gt;
* reprezentările în baza &#039;&#039;&#039;10&#039;&#039;&#039; ale lui &#039;&#039;&#039;x&#039;&#039;&#039;, &#039;&#039;&#039;y&#039;&#039;&#039; şi suma lor nu depăşesc &#039;&#039;&#039;2 000 000 000&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
; baze1in.txt&lt;br /&gt;
 2 5 &lt;br /&gt;
 110 213&lt;br /&gt;
; baze1out.txt&lt;br /&gt;
 Datele de intrare corespund restrictiilor impuse&lt;br /&gt;
 64&lt;br /&gt;
&lt;br /&gt;
== Exemplu 2 ==&lt;br /&gt;
; baze1in.txt&lt;br /&gt;
 2 5 &lt;br /&gt;
 110 213333333333333333333&lt;br /&gt;
; baze1out.txt&lt;br /&gt;
 Datele de intrare nu corespund restrictiilor impuse&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
def main():&lt;br /&gt;
    with open(&#039;baze1in.txt&#039;, &#039;r&#039;) as fin, open(&#039;baze1out.txt&#039;, &#039;w&#039;) as fout:&lt;br /&gt;
        b1, b2 = map(int, fin.readline().strip().split())&lt;br /&gt;
        x, y = fin.readline().strip().split()&lt;br /&gt;
&lt;br /&gt;
        if any(len(numar) &amp;gt; 10 for numar in [x, y]):&lt;br /&gt;
            fout.write(&amp;quot;Datele de intrare nu corespund restrictiilor impuse\n&amp;quot;)&lt;br /&gt;
            return&lt;br /&gt;
&lt;br /&gt;
        fout.write(&amp;quot;Datele de intrare corespund restrictiilor impuse\n&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
        x_10 = int(x, b1)&lt;br /&gt;
        y_10 = int(y, b2)&lt;br /&gt;
&lt;br /&gt;
        suma_10 = x_10 + y_10&lt;br /&gt;
&lt;br /&gt;
        fout.write(str(suma_10) + &#039;\n&#039;)&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;br /&gt;
&lt;br /&gt;
== Explicatie ==&lt;br /&gt;
 &#039;&#039;&#039;110(2) = 6&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;213(5) = 58&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;6 + 58 = 64&#039;&#039;&#039;&lt;/div&gt;</summary>
		<author><name>Brianna Waltner</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=1003_-_Baze1&amp;diff=8817</id>
		<title>1003 - Baze1</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=1003_-_Baze1&amp;diff=8817"/>
		<updated>2024-01-02T22:24:38Z</updated>

		<summary type="html">&lt;p&gt;Brianna Waltner: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cerinţa ==&lt;br /&gt;
Se dau două numere &#039;&#039;&#039;b1 b2&#039;&#039;&#039;, reprezentând două baze de numeraţie şi două şiruri de cifre &#039;&#039;&#039;x y&#039;&#039;&#039;, reprezentând două numere: &#039;&#039;&#039;x&#039;&#039;&#039; în baza &#039;&#039;&#039;b1&#039;&#039;&#039;, &#039;&#039;&#039;y&#039;&#039;&#039; în baza &#039;&#039;&#039;b2&#039;&#039;&#039;. Determinaţi suma numerelor &#039;&#039;&#039;x&#039;&#039;&#039; şi &#039;&#039;&#039;y&#039;&#039;&#039; în baza &#039;&#039;&#039;10&#039;&#039;&#039;.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Fișierul de intrare &#039;&#039;&#039;baze1in.txt&#039;&#039;&#039; conține pe prima linie numerele &#039;&#039;&#039;b1 b2&#039;&#039;&#039;, iar pe a doua linie cele două şiruri de cifre cu semnificaţia de mai sus.&lt;br /&gt;
== Date de ieșire ==&lt;br /&gt;
Fișierul de ieșire &#039;&#039;&#039;baze1out.txt&#039;&#039;&#039; va conține pe prima linie numărul &#039;&#039;&#039;S&#039;&#039;&#039;, reprezentând suma dintre &#039;&#039;&#039;x&#039;&#039;&#039; şi &#039;&#039;&#039;y&#039;&#039;&#039;.&lt;br /&gt;
== Restricţii şi precizări ==&lt;br /&gt;
* &#039;&#039;&#039;2 &amp;amp;les; b1,b2 &amp;amp;les; 10&#039;&#039;&#039;&lt;br /&gt;
* reprezentările în baza &#039;&#039;&#039;10&#039;&#039;&#039; ale lui &#039;&#039;&#039;x&#039;&#039;&#039;, &#039;&#039;&#039;y&#039;&#039;&#039; şi suma lor nu depăşesc &#039;&#039;&#039;2 000 000 000&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
; baze1in.txt&lt;br /&gt;
 2 5 &lt;br /&gt;
 110 213&lt;br /&gt;
; baze1out.txt&lt;br /&gt;
 Datele de intrare corespund restrictiilor impuse&lt;br /&gt;
 64&lt;br /&gt;
&lt;br /&gt;
== Exemplu 2 ==&lt;br /&gt;
; baze1in.txt&lt;br /&gt;
 2 5 &lt;br /&gt;
 110 213333333333333333333&lt;br /&gt;
; baze1out.txt&lt;br /&gt;
 Datele de intrare nu corespund restrictiilor impuse&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
def main():&lt;br /&gt;
    with open(&#039;baze1in.txt&#039;, &#039;r&#039;) as fin, open(&#039;baze1out.txt&#039;, &#039;w&#039;) as fout:&lt;br /&gt;
        # Citirea bazelor și a numerelor din fișierul de intrare&lt;br /&gt;
        b1, b2 = map(int, fin.readline().strip().split())&lt;br /&gt;
        x, y = fin.readline().strip().split()&lt;br /&gt;
&lt;br /&gt;
        if any(len(numar) &amp;gt; 10 for numar in [x, y]):&lt;br /&gt;
            fout.write(&amp;quot;Datele de intrare nu corespund restrictiilor impuse\n&amp;quot;)&lt;br /&gt;
            return&lt;br /&gt;
&lt;br /&gt;
        fout.write(&amp;quot;Datele de intrare corespund restrictiilor impuse\n&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
        x_10 = int(x, b1)&lt;br /&gt;
        y_10 = int(y, b2)&lt;br /&gt;
&lt;br /&gt;
        suma_10 = x_10 + y_10&lt;br /&gt;
&lt;br /&gt;
        fout.write(str(suma_10) + &#039;\n&#039;)&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;br /&gt;
&lt;br /&gt;
== Explicatie ==&lt;br /&gt;
 &#039;&#039;&#039;110(2) = 6&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;213(5) = 58&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;6 + 58 = 64&#039;&#039;&#039;&lt;/div&gt;</summary>
		<author><name>Brianna Waltner</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=1003_-_Baze1&amp;diff=8816</id>
		<title>1003 - Baze1</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=1003_-_Baze1&amp;diff=8816"/>
		<updated>2024-01-02T22:23:45Z</updated>

		<summary type="html">&lt;p&gt;Brianna Waltner: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cerinţa ==&lt;br /&gt;
Se dau două numere &#039;&#039;&#039;b1 b2&#039;&#039;&#039;, reprezentând două baze de numeraţie şi două şiruri de cifre &#039;&#039;&#039;x y&#039;&#039;&#039;, reprezentând două numere: &#039;&#039;&#039;x&#039;&#039;&#039; în baza &#039;&#039;&#039;b1&#039;&#039;&#039;, &#039;&#039;&#039;y&#039;&#039;&#039; în baza &#039;&#039;&#039;b2&#039;&#039;&#039;. Determinaţi suma numerelor &#039;&#039;&#039;x&#039;&#039;&#039; şi &#039;&#039;&#039;y&#039;&#039;&#039; în baza &#039;&#039;&#039;10&#039;&#039;&#039;.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Fișierul de intrare &#039;&#039;&#039;baze1in.txt&#039;&#039;&#039; conține pe prima linie numerele &#039;&#039;&#039;b1 b2&#039;&#039;&#039;, iar pe a doua linie cele două şiruri de cifre cu semnificaţia de mai sus.&lt;br /&gt;
== Date de ieșire ==&lt;br /&gt;
Fișierul de ieșire &#039;&#039;&#039;baze1out.txt&#039;&#039;&#039; va conține pe prima linie numărul &#039;&#039;&#039;S&#039;&#039;&#039;, reprezentând suma dintre &#039;&#039;&#039;x&#039;&#039;&#039; şi &#039;&#039;&#039;y&#039;&#039;&#039;.&lt;br /&gt;
== Restricţii şi precizări ==&lt;br /&gt;
* &#039;&#039;&#039;2 &amp;amp;les; b1,b2 &amp;amp;les; 10&#039;&#039;&#039;&lt;br /&gt;
* reprezentările în baza &#039;&#039;&#039;10&#039;&#039;&#039; ale lui &#039;&#039;&#039;x&#039;&#039;&#039;, &#039;&#039;&#039;y&#039;&#039;&#039; şi suma lor nu depăşesc &#039;&#039;&#039;2 000 000 000&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
; baze1in.txt&lt;br /&gt;
 2 5 &lt;br /&gt;
 110 213&lt;br /&gt;
; baze1out.txt&lt;br /&gt;
 Datele de intrare corespund restrictiilor impuse&lt;br /&gt;
 64&lt;br /&gt;
&lt;br /&gt;
== Exemplu 2 ==&lt;br /&gt;
; baze1in.txt&lt;br /&gt;
 2 5 &lt;br /&gt;
 110 213333333333333333333&lt;br /&gt;
; baze1out.txt&lt;br /&gt;
 Datele de intrare nu corespund restrictiilor impuse&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
    def main():&lt;br /&gt;
    with open(&#039;baze1in.txt&#039;, &#039;r&#039;) as fin, open(&#039;baze1out.txt&#039;, &#039;w&#039;) as fout:&lt;br /&gt;
        # Citirea bazelor și a numerelor din fișierul de intrare&lt;br /&gt;
        b1, b2 = map(int, fin.readline().strip().split())&lt;br /&gt;
        x, y = fin.readline().strip().split()&lt;br /&gt;
&lt;br /&gt;
        if any(len(numar) &amp;gt; 10 for numar in [x, y]):&lt;br /&gt;
            fout.write(&amp;quot;Datele de intrare nu corespund restrictiilor impuse\n&amp;quot;)&lt;br /&gt;
            return&lt;br /&gt;
&lt;br /&gt;
        fout.write(&amp;quot;Datele de intrare corespund restrictiilor impuse\n&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
        x_10 = int(x, b1)&lt;br /&gt;
        y_10 = int(y, b2)&lt;br /&gt;
&lt;br /&gt;
        suma_10 = x_10 + y_10&lt;br /&gt;
&lt;br /&gt;
        fout.write(str(suma_10) + &#039;\n&#039;)&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;br /&gt;
&lt;br /&gt;
== Explicatie ==&lt;br /&gt;
 &#039;&#039;&#039;110(2) = 6&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;213(5) = 58&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;6 + 58 = 64&#039;&#039;&#039;&lt;/div&gt;</summary>
		<author><name>Brianna Waltner</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=1016_-_imparpar&amp;diff=8815</id>
		<title>1016 - imparpar</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=1016_-_imparpar&amp;diff=8815"/>
		<updated>2024-01-02T22:23:04Z</updated>

		<summary type="html">&lt;p&gt;Brianna Waltner: Pagină nouă: == Cerinţa == Se dă &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039; un număr natural. Să se afle în câte moduri putem aranja numerele de la &amp;#039;&amp;#039;&amp;#039;1&amp;#039;&amp;#039;&amp;#039; la &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039; astfel încât numerele pare să fie situate pe poziții impare iar cele impare pe poziții pare ? == Date de intrare == Programul citește de la tastatură numărul natural &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039;. == Date de ieșire == Programul va afișa pe ecran numărul de moduri în care putem aranja numerele de la &amp;#039;&amp;#039;&amp;#039;1&amp;#039;&amp;#039;&amp;#039; la &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039; astfel încât numerele pare să fie situate p...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cerinţa ==&lt;br /&gt;
Se dă &#039;&#039;&#039;n&#039;&#039;&#039; un număr natural. Să se afle în câte moduri putem aranja numerele de la &#039;&#039;&#039;1&#039;&#039;&#039; la &#039;&#039;&#039;n&#039;&#039;&#039; astfel încât numerele pare să fie situate pe poziții impare iar cele impare pe poziții pare ?&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Programul citește de la tastatură numărul natural &#039;&#039;&#039;n&#039;&#039;&#039;.&lt;br /&gt;
== Date de ieșire ==&lt;br /&gt;
Programul va afișa pe ecran numărul de moduri în care putem aranja numerele de la &#039;&#039;&#039;1&#039;&#039;&#039; la &#039;&#039;&#039;n&#039;&#039;&#039; astfel încât numerele pare să fie situate pe poziții impare iar cele impare pe poziții pare.&lt;br /&gt;
== Restricţii şi precizări ==&lt;br /&gt;
* &#039;&#039;&#039;1 &amp;amp;les; n &amp;amp;les; 20&#039;&#039;&#039;&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
 4&lt;br /&gt;
; Iesire&lt;br /&gt;
 Datele de intrare corespund restrictiilor impuse&lt;br /&gt;
 4&lt;br /&gt;
&lt;br /&gt;
== Exemplu 2 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
 25 &lt;br /&gt;
; Iesire&lt;br /&gt;
 Datele de intrare nu corespund restrictiilor impuse&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
from math import factorial&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def compute_arrangements(n):&lt;br /&gt;
    even_positions = n // 2&lt;br /&gt;
    odd_positions = n - even_positions&lt;br /&gt;
&lt;br /&gt;
    even_numbers = n // 2&lt;br /&gt;
    odd_numbers = n - even_numbers&lt;br /&gt;
&lt;br /&gt;
    if even_positions &amp;lt; even_numbers or odd_positions &amp;lt; odd_numbers:&lt;br /&gt;
        return 0&lt;br /&gt;
    else:&lt;br /&gt;
        return factorial(even_positions) * factorial(odd_positions)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
    n = int(input())&lt;br /&gt;
&lt;br /&gt;
    if n &amp;gt; 20:&lt;br /&gt;
        print(&amp;quot;Datele de intrare nu corespund restrictiilor impuse&amp;quot;)&lt;br /&gt;
        return&lt;br /&gt;
&lt;br /&gt;
    arrangements = compute_arrangements(n)&lt;br /&gt;
    print(&amp;quot;Datele de intrare corespund restrictiilor impuse&amp;quot;)&lt;br /&gt;
    print(arrangements)&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;br /&gt;
&lt;br /&gt;
== Explicatie ==&lt;br /&gt;
 Numerele de la &#039;&#039;&#039;1&#039;&#039;&#039; la &#039;&#039;&#039;4&#039;&#039;&#039; se pot aranja astfel : &#039;&#039;&#039;(2,1,4,3)&#039;&#039;&#039;, &#039;&#039;&#039;(2,3,4,1)&#039;&#039;&#039;, &#039;&#039;&#039;(4,1,2,3)&#039;&#039;&#039;, &#039;&#039;&#039;(4,3,2,1)&#039;&#039;&#039; astfel încât numerele pare sunt pe poziții impare și numerele impare sunt pe poziții pare. Avem &#039;&#039;&#039;4&#039;&#039;&#039; moduri de aranjare.&lt;/div&gt;</summary>
		<author><name>Brianna Waltner</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=2215_-_cifre002&amp;diff=8814</id>
		<title>2215 - cifre002</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=2215_-_cifre002&amp;diff=8814"/>
		<updated>2024-01-02T22:13:29Z</updated>

		<summary type="html">&lt;p&gt;Brianna Waltner: Pagină nouă: == Cerinţa == Se dă un număr natural &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039; format cu cifre distincte nenule. Să se afle câte numere pare se pot obţine din &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039;, prin rearanjarea cifrelor sale. == Date de intrare == Programul citește de la tastatură numărul &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039;. == Date de ieșire == Programul va afișa pe ecran numărul numerelor pare care se pot obţine prin rearanjarea cifrelor lui &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039;. == Restricţii şi precizări == * &amp;#039;&amp;#039;&amp;#039;1 &amp;amp;les; n &amp;amp;les; 2.000.000.000&amp;#039;&amp;#039;&amp;#039; == Exemplul 1 == ; Intrare...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cerinţa ==&lt;br /&gt;
Se dă un număr natural &#039;&#039;&#039;n&#039;&#039;&#039; format cu cifre distincte nenule. Să se afle câte numere pare se pot obţine din &#039;&#039;&#039;n&#039;&#039;&#039;, prin rearanjarea cifrelor sale.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Programul citește de la tastatură numărul &#039;&#039;&#039;n&#039;&#039;&#039;.&lt;br /&gt;
== Date de ieșire ==&lt;br /&gt;
Programul va afișa pe ecran numărul numerelor pare care se pot obţine prin rearanjarea cifrelor lui &#039;&#039;&#039;n&#039;&#039;&#039;.&lt;br /&gt;
== Restricţii şi precizări ==&lt;br /&gt;
* &#039;&#039;&#039;1 &amp;amp;les; n &amp;amp;les; 2.000.000.000&#039;&#039;&#039;&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
 324&lt;br /&gt;
; Iesire&lt;br /&gt;
 Datele de intrare corespund restrictiilor impuse&lt;br /&gt;
 4&lt;br /&gt;
== Exemplu 2 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
 2000000001&lt;br /&gt;
; Iesire&lt;br /&gt;
 Datele de intrare nu corespund restrictiilor impuse&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
from math import factorial&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def compute_even_numbers(n):&lt;br /&gt;
    digits = [int(d) for d in str(n)]&lt;br /&gt;
    even_digits = [d for d in digits if d % 2 == 0]&lt;br /&gt;
    if not even_digits:&lt;br /&gt;
        return 0&lt;br /&gt;
    digits.sort()&lt;br /&gt;
    count = 0&lt;br /&gt;
    for ed in even_digits:&lt;br /&gt;
        temp = digits[:]&lt;br /&gt;
        temp.remove(ed)&lt;br /&gt;
        count += factorial(len(temp)) * (len(temp) ** (len(temp) - 1))&lt;br /&gt;
    return count&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
    n = int(input())&lt;br /&gt;
&lt;br /&gt;
    if n &amp;gt; 2000000000:&lt;br /&gt;
        print(&amp;quot;Datele de intrare nu corespund restrictiilor impuse&amp;quot;)&lt;br /&gt;
        return&lt;br /&gt;
&lt;br /&gt;
    even_numbers = compute_even_numbers(n)&lt;br /&gt;
    print(&amp;quot;Datele de intrare corespund restrictiilor impuse&amp;quot;)&lt;br /&gt;
    print(even_numbers)&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;br /&gt;
== Explicatie ==&lt;br /&gt;
 Numerele pare ce se pot obţine prin rearanjarea cifrelor lui &#039;&#039;&#039;n&#039;&#039;&#039; sunt: &#039;&#039;&#039;324,342,234,432&#039;&#039;&#039;&lt;/div&gt;</summary>
		<author><name>Brianna Waltner</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=1163_-_CowboysAndAliens&amp;diff=8812</id>
		<title>1163 - CowboysAndAliens</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=1163_-_CowboysAndAliens&amp;diff=8812"/>
		<updated>2024-01-02T22:07:06Z</updated>

		<summary type="html">&lt;p&gt;Brianna Waltner: Pagină nouă: == Cerinţa == Cei &amp;#039;&amp;#039;&amp;#039;m&amp;#039;&amp;#039;&amp;#039; cowboys și cei &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039; aliens s-au întâlnit în vestul sălbatic și, păstrând tradiția locului, s-au așezat în șir indian. Cum cowboys erau gazde primitoare și în special foarte precaute, s-au gândit că între doi cowboys consecutivi ar fi bine să fie cel mult un alien (din motive de securitate). De asemenea primul și ultimul din șir să fie cawboys. Dilema care s-a ivit a fost numărul de moduri în care s-ar putea așeza în șir...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cerinţa ==&lt;br /&gt;
Cei &#039;&#039;&#039;m&#039;&#039;&#039; cowboys și cei &#039;&#039;&#039;n&#039;&#039;&#039; aliens s-au întâlnit în vestul sălbatic și, păstrând tradiția locului, s-au așezat în șir indian. Cum cowboys erau gazde primitoare și în special foarte precaute, s-au gândit că între doi cowboys consecutivi ar fi bine să fie cel mult un alien (din motive de securitate). De asemenea primul și ultimul din șir să fie cawboys. Dilema care s-a ivit a fost numărul de moduri în care s-ar putea așeza în șir indian ținând cont de condițiile de securitate impuse.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Fișierul de intrare &#039;&#039;&#039;cowboysandaliensin.txt&#039;&#039;&#039; conține pe prima linie numerele naturale &#039;&#039;&#039;m&#039;&#039;&#039; și &#039;&#039;&#039;n&#039;&#039;&#039;.&lt;br /&gt;
== Date de ieșire ==&lt;br /&gt;
Fișierul de ieșire &#039;&#039;&#039;cowboysandaliensout.txt&#039;&#039;&#039; va conține pe prima linie numărul &#039;&#039;&#039;S&#039;&#039;&#039;, reprezentând numărul de moduri modulo &#039;&#039;&#039;555557&#039;&#039;&#039;, în care s-ar putea așeza în șir indian.&lt;br /&gt;
== Restricţii şi precizări ==&lt;br /&gt;
* &#039;&#039;&#039;1 &amp;amp;les; n &amp;amp;les; m &amp;amp;les; 500.000&lt;br /&gt;
* reprezentările în baza &#039;&#039;&#039;10&#039;&#039;&#039; ale lui &#039;&#039;&#039;x&#039;&#039;&#039;, &#039;&#039;&#039;y&#039;&#039;&#039; şi suma lor nu depăşesc &#039;&#039;&#039;2 000 000 000&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
; &#039;&#039;&#039;cowboysandaliensin.txt&#039;&#039;&#039;&lt;br /&gt;
 3 1&lt;br /&gt;
; &#039;&#039;&#039;cowboysandaliensout.txt&#039;&#039;&#039;&lt;br /&gt;
 Datele de intrare corespund restrictiilor impuse&lt;br /&gt;
 12&lt;br /&gt;
&lt;br /&gt;
== Exemplu 2 ==&lt;br /&gt;
; &#039;&#039;&#039;cowboysandaliensin.txt&#039;&#039;&#039;&lt;br /&gt;
 2 2 &lt;br /&gt;
; &#039;&#039;&#039;cowboysandaliensout.txt&#039;&#039;&#039;&lt;br /&gt;
 Datele de intrare nu corespund restrictiilor impuse&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
def compute_ways(m, n):&lt;br /&gt;
    mod = 555557&lt;br /&gt;
    dp = [[0 for _ in range(n+1)] for _ in range(m+1)]&lt;br /&gt;
    dp[1][0] = 1&lt;br /&gt;
    dp[2][0] = 2&lt;br /&gt;
    dp[2][1] = 2&lt;br /&gt;
    for i in range(3, m+1):&lt;br /&gt;
        dp[i][0] = dp[i-1][0] + dp[i-2][0]&lt;br /&gt;
        for j in range(1, min(i, n+1)):&lt;br /&gt;
            dp[i][j] = dp[i-1][j] + dp[i-2][j] + dp[i-1][j-1] + dp[i-2][j-1]&lt;br /&gt;
    return sum(dp[m]) % mod&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
    m, n = map(int, input().split())&lt;br /&gt;
&lt;br /&gt;
    if m &amp;gt; 500000 or n &amp;gt;= m:&lt;br /&gt;
        print(&amp;quot;Datele de intrare nu corespund restrictiilor impuse&amp;quot;)&lt;br /&gt;
        return&lt;br /&gt;
&lt;br /&gt;
    ways = compute_ways(m, n)&lt;br /&gt;
    print(&amp;quot;Datele de intrare corespund restrictiilor impuse&amp;quot;)&lt;br /&gt;
    print(ways)&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;br /&gt;
&lt;br /&gt;
== Explicatie ==&lt;br /&gt;
 Dacă cei trei cawboys ar fi Jake, Percy și Roy pe care-i vom nota J, P, R iar alien ar fi Bronc, notat B, atunci ei s-ar putea așeza în șir indian în următoarele moduri: &#039;&#039;&#039;JBPR&#039;&#039;&#039; , &#039;&#039;&#039;JPBR&#039;&#039;&#039; , &#039;&#039;&#039;JBRP&#039;&#039;&#039; , &#039;&#039;&#039;JRBP&#039;&#039;&#039; , &#039;&#039;&#039;PBJR&#039;&#039;&#039; , &#039;&#039;&#039;PJBR&#039;&#039;&#039; , &#039;&#039;&#039;PBRJ&#039;&#039;&#039; , &#039;&#039;&#039;PRBJ&#039;&#039;&#039; , &#039;&#039;&#039;RBPJ&#039;&#039;&#039; , &#039;&#039;&#039;RPBJ&#039;&#039;&#039; , &#039;&#039;&#039;RBJP&#039;&#039;&#039; , &#039;&#039;&#039;RJBP&#039;&#039;&#039;. În total avem 12 moduri.&lt;/div&gt;</summary>
		<author><name>Brianna Waltner</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=3623_-_insule01&amp;diff=8810</id>
		<title>3623 - insule01</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=3623_-_insule01&amp;diff=8810"/>
		<updated>2024-01-02T21:51:16Z</updated>

		<summary type="html">&lt;p&gt;Brianna Waltner: Pagină nouă: == Cerinţa == Se dă &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039; un număr natural. Într-un şir de lungime &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039;, format cu cifrele &amp;#039;&amp;#039;&amp;#039;0&amp;#039;&amp;#039;&amp;#039; şi &amp;#039;&amp;#039;&amp;#039;1&amp;#039;&amp;#039;&amp;#039;, numim &amp;#039;&amp;#039;&amp;#039;insulă&amp;#039;&amp;#039;&amp;#039; o secvenţă maximă de cifre egale. Să se afle câte &amp;#039;&amp;#039;&amp;#039;insule&amp;#039;&amp;#039;&amp;#039; se află în toate şirurile de lungime &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039;, formate cu cifrele &amp;#039;&amp;#039;&amp;#039;0&amp;#039;&amp;#039;&amp;#039; şi &amp;#039;&amp;#039;&amp;#039;1&amp;#039;&amp;#039;&amp;#039;. == Date de intrare == Programul citește de la tastatură numărul &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039;. == Date de ieșire == Programul va afișa pe ecran numărul &amp;#039;&amp;#039;&amp;#039;insulelor&amp;#039;&amp;#039;&amp;#039; care se află în toate şiru...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cerinţa ==&lt;br /&gt;
Se dă &#039;&#039;&#039;n&#039;&#039;&#039; un număr natural. Într-un şir de lungime &#039;&#039;&#039;n&#039;&#039;&#039;, format cu cifrele &#039;&#039;&#039;0&#039;&#039;&#039; şi &#039;&#039;&#039;1&#039;&#039;&#039;, numim &#039;&#039;&#039;insulă&#039;&#039;&#039; o secvenţă maximă de cifre egale. Să se afle câte &#039;&#039;&#039;insule&#039;&#039;&#039; se află în toate şirurile de lungime &#039;&#039;&#039;n&#039;&#039;&#039;, formate cu cifrele &#039;&#039;&#039;0&#039;&#039;&#039; şi &#039;&#039;&#039;1&#039;&#039;&#039;.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Programul citește de la tastatură numărul &#039;&#039;&#039;n&#039;&#039;&#039;.&lt;br /&gt;
== Date de ieșire ==&lt;br /&gt;
Programul va afișa pe ecran numărul &#039;&#039;&#039;insulelor&#039;&#039;&#039; care se află în toate şirurile de lungime &#039;&#039;&#039;n&#039;&#039;&#039;, formate cu cifrele &#039;&#039;&#039;0&#039;&#039;&#039; şi &#039;&#039;&#039;1&#039;&#039;&#039;. Deoarece acest număr este prea mare, se va afişa modulo &#039;&#039;&#039;1.000.000.007&#039;&#039;&#039;.&lt;br /&gt;
== Restricţii şi precizări ==&lt;br /&gt;
* &#039;&#039;&#039;1 &amp;amp;les; n &amp;amp;les; 1.000.000.000&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
 2 &lt;br /&gt;
; Iesire&lt;br /&gt;
 Datele de intrare corespund restrictiilor impuse&lt;br /&gt;
 6&lt;br /&gt;
&lt;br /&gt;
== Exemplu 2 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
 1000000001&lt;br /&gt;
; Iesire&lt;br /&gt;
 Datele de intrare nu corespund restrictiilor impuse&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
def compute_islands(n):&lt;br /&gt;
    mod = 1000000007&lt;br /&gt;
    dp = [0] * (n+1)&lt;br /&gt;
    dp[1] = 2&lt;br /&gt;
    dp[2] = 6&lt;br /&gt;
    for i in range(3, n+1):&lt;br /&gt;
        dp[i] = (dp[i-1] * 2 + dp[i-2] * 2) % mod&lt;br /&gt;
    return dp[n]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
    n = int(input())&lt;br /&gt;
&lt;br /&gt;
    if n &amp;gt; pow(10, 9):&lt;br /&gt;
        print(&amp;quot;Datele de intrare nu corespund restrictiilor impuse&amp;quot;)&lt;br /&gt;
        return&lt;br /&gt;
&lt;br /&gt;
    islands = compute_islands(n)&lt;br /&gt;
    print(&amp;quot;Datele de intrare corespund restrictiilor impuse&amp;quot;)&lt;br /&gt;
    print(islands)&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;br /&gt;
&lt;br /&gt;
== Explicatie ==&lt;br /&gt;
 Şirurile de lungime &#039;&#039;&#039;2&#039;&#039;&#039; formate cu cifrele &#039;&#039;&#039;0&#039;&#039;&#039; şi &#039;&#039;&#039;1&#039;&#039;&#039; sunt &#039;&#039;&#039;00&#039;&#039;&#039;, &#039;&#039;&#039;01&#039;&#039;&#039;, &#039;&#039;&#039;10&#039;&#039;&#039;, &#039;&#039;&#039;11&#039;&#039;&#039;, acestea conţinând &#039;&#039;&#039;1&#039;&#039;&#039;, &#039;&#039;&#039;2&#039;&#039;&#039;, &#039;&#039;&#039;2&#039;&#039;&#039;, respectiv &#039;&#039;&#039;1&#039;&#039;&#039; insule. În total sunt &#039;&#039;&#039;6&#039;&#039;&#039; insule.&lt;/div&gt;</summary>
		<author><name>Brianna Waltner</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=3336_-_acadele&amp;diff=8809</id>
		<title>3336 - acadele</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=3336_-_acadele&amp;diff=8809"/>
		<updated>2024-01-02T21:39:23Z</updated>

		<summary type="html">&lt;p&gt;Brianna Waltner: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cerinţa ==&lt;br /&gt;
Candyman are acadele de trei feluri: cu căpşuni, cu vişine şi cu zmeură, oricâte acadele din fiecare fel. Cei &#039;&#039;&#039;n&#039;&#039;&#039; copii de la grupa pregătitoare şi-au ales fiecare câte o acadea astfel încât cel mult doi copii şi-au ales cu vişine. Dacă notăm cu &#039;&#039;&#039;m&#039;&#039;&#039; numărul de moduri în care puteau să-şi aleagă fiecare câte o acadea, să se afle restul împărţirii lui &#039;&#039;&#039;m&#039;&#039;&#039; la &#039;&#039;&#039;2020&#039;&#039;&#039;.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Programul citește de la tastatură numărul &#039;&#039;&#039;n&#039;&#039;&#039;.&lt;br /&gt;
== Date de ieșire ==&lt;br /&gt;
Programul va afișa pe ecran restul împărţirii lui &#039;&#039;&#039;m&#039;&#039;&#039; la &#039;&#039;&#039;2020&#039;&#039;&#039;.&lt;br /&gt;
== Restricţii şi precizări ==&lt;br /&gt;
* &#039;&#039;&#039;1 &amp;amp;les; n &amp;amp;les; 1018&#039;&#039;&#039;&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
 2 &lt;br /&gt;
; Iesire&lt;br /&gt;
 Datele de intrare corespund restrictiilor impuse&lt;br /&gt;
 9&lt;br /&gt;
== Exemplu 2 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
 10000000000000000000&lt;br /&gt;
; Iesire&lt;br /&gt;
 Datele de intrare nu corespund restrictiilor impuse&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
def compute_ways(n):&lt;br /&gt;
    mod = 2020&lt;br /&gt;
    if n == 1:&lt;br /&gt;
        return 3 % mod&lt;br /&gt;
    elif n == 2:&lt;br /&gt;
        return 9 % mod&lt;br /&gt;
    else:&lt;br /&gt;
        return (3 * 3 * pow(2, n-2, mod)) % mod&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
    n = int(input())&lt;br /&gt;
&lt;br /&gt;
    if n &amp;gt; pow(10, 18):&lt;br /&gt;
        print(&amp;quot;Datele de intrare nu corespund restrictiilor impuse&amp;quot;)&lt;br /&gt;
        return&lt;br /&gt;
&lt;br /&gt;
    ways = compute_ways(n)&lt;br /&gt;
    print(&amp;quot;Datele de intrare corespund restrictiilor impuse&amp;quot;)&lt;br /&gt;
    print(ways)&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;br /&gt;
== Explicatie ==&lt;br /&gt;
 Cei doi copii puteau să-şi aleagă acadelele astfel: (c,c), (z,z), (v,v), (c,v), (v,c), (c,z), (z,c), (v,z), (z,v).&lt;/div&gt;</summary>
		<author><name>Brianna Waltner</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=3630_-_codred&amp;diff=8808</id>
		<title>3630 - codred</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=3630_-_codred&amp;diff=8808"/>
		<updated>2024-01-02T21:38:57Z</updated>

		<summary type="html">&lt;p&gt;Brianna Waltner: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cerinţa ==&lt;br /&gt;
Se dă &#039;&#039;&#039;n&#039;&#039;&#039; un număr natural. Să se calculeze suma &#039;&#039;&#039;∑nk=1(k!⋅(k2+k+1))&#039;&#039;&#039;.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Programul citește de la tastatură numărul &#039;&#039;&#039;n&#039;&#039;&#039;.&lt;br /&gt;
== Date de ieșire ==&lt;br /&gt;
Programul va afișa pe ecran valoarea sumei, modulo &#039;&#039;&#039;1.000.000.007&#039;&#039;&#039;.&lt;br /&gt;
== Restricţii şi precizări ==&lt;br /&gt;
* &#039;&#039;&#039;1 &amp;amp;les; n &amp;amp;les; 10.000.000&#039;&#039;&#039;&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
 3&lt;br /&gt;
; Iesire&lt;br /&gt;
 Datele de intrare corespund restrictiilor impuse&lt;br /&gt;
 95&lt;br /&gt;
== Exemplu 2 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
 100000000&lt;br /&gt;
; Iesire&lt;br /&gt;
 Datele de intrare nu corespund restrictiilor impuse&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
def factorial(n, mod):&lt;br /&gt;
    fact = 1&lt;br /&gt;
    for i in range(1, n + 1):&lt;br /&gt;
        fact = (fact * i) % mod&lt;br /&gt;
    return fact&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def compute_sum(n):&lt;br /&gt;
    mod = 1000000007&lt;br /&gt;
    suma = 0&lt;br /&gt;
    for k in range(1, n + 1):&lt;br /&gt;
        term = (factorial(k, mod) * (k*k + k + 1)) % mod&lt;br /&gt;
        suma = (suma + term) % mod&lt;br /&gt;
    return suma&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
    n = int(input())&lt;br /&gt;
&lt;br /&gt;
    if n &amp;gt; 10000000:&lt;br /&gt;
        print(&amp;quot;Datele de intrare nu corespund restrictiilor impuse&amp;quot;)&lt;br /&gt;
        return&lt;br /&gt;
&lt;br /&gt;
    suma = compute_sum(n)&lt;br /&gt;
    print(&amp;quot;Datele de intrare corespund restrictiilor impuse&amp;quot;)&lt;br /&gt;
    print(suma)&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;br /&gt;
== Explicatie ==&lt;br /&gt;
 Suma este &#039;&#039;&#039;1!⋅3+2!⋅7+3!⋅13=3+14+78=95&#039;&#039;&#039;.&lt;/div&gt;</summary>
		<author><name>Brianna Waltner</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=2198_%E2%80%93_Elimin_Prime&amp;diff=8807</id>
		<title>2198 – Elimin Prime</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=2198_%E2%80%93_Elimin_Prime&amp;diff=8807"/>
		<updated>2024-01-02T21:38:06Z</updated>

		<summary type="html">&lt;p&gt;Brianna Waltner: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Se consideră un șir de n numere întregi, cu n număr natural nenul. Se elimină primul element din șir și toate elementele șirului aflate pe poziții care reprezintă numere prime, în ordinea crescătoare a pozițiilor. Operația de eliminare se repetă cu elementele rămase în șir, repoziționate după eliminarea celorlalte, până când este eliminat și ultimul element rămas.&lt;br /&gt;
== Cerinţa ==&lt;br /&gt;
Să se scrie un program care afișează elementele șirului inițial, în ordinea în care au fost eliminate conform algoritmului descris mai sus.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Fișierul de intrare &#039;&#039;&#039;elimin_primein.txt&#039;&#039;&#039; conține pe prima linie numărul &#039;&#039;&#039;n&#039;&#039;&#039;, iar pe a doua linie &#039;&#039;&#039;n&#039;&#039;&#039; numere întregi separate prin spații.&lt;br /&gt;
== Date de ieșire ==&lt;br /&gt;
Fișierul de ieșire &#039;&#039;&#039;elimin_primeout.txt&#039;&#039;&#039; va conține pe prima linie, separate prin spațiu, numerele din fișierul de intrare în ordinea eliminării acestora.&lt;br /&gt;
== Restricţii şi precizări ==&lt;br /&gt;
* &#039;&#039;&#039;1 &amp;amp;les; n &amp;amp;les; 100.000&#039;&#039;&#039;&lt;br /&gt;
* numerele de pe a doua linie a fișierului de intrare sun cuprinse în intervalul &#039;&#039;&#039;[-1.000.000.000, 1.000.000.000]&#039;&#039;&#039;&lt;br /&gt;
* elementele șirului sunt indexate de la &#039;&#039;&#039;1&#039;&#039;&#039; la &#039;&#039;&#039;n&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
; elimin_primein.txt&lt;br /&gt;
 10 &lt;br /&gt;
 1 2 3 4 5 6 7 8 9 10&lt;br /&gt;
; elimin_primeout.txt&lt;br /&gt;
 Datele de intrare corespund restrictiilor impuse&lt;br /&gt;
 1 2 3 5 7 4 6 8 10 9&lt;br /&gt;
&lt;br /&gt;
== Exemplu 2 ==&lt;br /&gt;
; elimin_primein.txt&lt;br /&gt;
 100001 &lt;br /&gt;
 2 3 4 5 6 7 8 9 10 4 23 16 -7 89 115 23 11 15 2 -8 -9 21 0 75 23 32 -1 4 5 ...&lt;br /&gt;
; elimin_primeout.txt&lt;br /&gt;
 Datele de intrare nu corespund restrictiilor impuse&lt;br /&gt;
&lt;br /&gt;
== Atentie! ==&lt;br /&gt;
 Programele vor folosi doar instrucțiunile de bază ale limbajului de programare ales, inclusiv cele de intrare/ieșire, dar nu și alte funcții din biblioteci specializate (&#039;&#039;&#039;algorithm&#039;&#039;&#039;, &#039;&#039;&#039;string&#039;&#039;&#039;,…).&lt;br /&gt;
&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
def este_prim(n):&lt;br /&gt;
    if n &amp;lt; 2:&lt;br /&gt;
        return False&lt;br /&gt;
    if n == 2:&lt;br /&gt;
        return True&lt;br /&gt;
    if n % 2 == 0:&lt;br /&gt;
        return False&lt;br /&gt;
    p = 3&lt;br /&gt;
    while p * p &amp;lt;= n:&lt;br /&gt;
        if n % p == 0:&lt;br /&gt;
            return False&lt;br /&gt;
        p += 2&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
    sir = list(map(int, input().split()))&lt;br /&gt;
&lt;br /&gt;
    if len(sir) &amp;gt; 100000:&lt;br /&gt;
        print(&amp;quot;Datele de intrare nu corespund restrictiilor impuse&amp;quot;)&lt;br /&gt;
        return&lt;br /&gt;
&lt;br /&gt;
    eliminat = []&lt;br /&gt;
&lt;br /&gt;
    while sir:&lt;br /&gt;
        eliminat.append(sir.pop(0))&lt;br /&gt;
        i = 1&lt;br /&gt;
        while i &amp;lt; len(sir):&lt;br /&gt;
            if este_prim(i+1):&lt;br /&gt;
                eliminat.append(sir.pop(i))&lt;br /&gt;
            else:&lt;br /&gt;
                i += 1&lt;br /&gt;
&lt;br /&gt;
    print(&amp;quot;Datele de intrare corespund restrictiilor impuse&amp;quot;)&lt;br /&gt;
    print(&#039; &#039;.join(map(str, eliminat)))&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>Brianna Waltner</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=2847_%E2%80%93_List&amp;diff=8806</id>
		<title>2847 – List</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=2847_%E2%80%93_List&amp;diff=8806"/>
		<updated>2024-01-02T21:33:25Z</updated>

		<summary type="html">&lt;p&gt;Brianna Waltner: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cerinţa ==&lt;br /&gt;
Se dă o listă simplu înlănțuită care conține &#039;&#039;&#039;n&#039;&#039;&#039; perechi de numere naturale &#039;&#039;&#039;(a,b)&#039;&#039;&#039;. Fiecare pereche este stocată în câte un nod al listei; notăm cu &#039;&#039;&#039;a&#039;&#039;&#039; primul număr stocat într-un nod și cu &#039;&#039;&#039;b&#039;&#039;&#039; al doilea număr stocat în acel nod.&lt;br /&gt;
&lt;br /&gt;
Se cere să se insereze în listă astfel:&lt;br /&gt;
&lt;br /&gt;
Dacă pentru nodul curent:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;a&#039;&#039;&#039; este par și &#039;&#039;&#039;b&#039;&#039;&#039; este impar se inserează după nodul curent un nou nod, care conține dublul sumei lor pe prima poziție a nodului inserat iar pe a doua poziție diferența dintre dublul sumei numerelor din nodul curent și al doilea număr din nodul curent;&lt;br /&gt;
* &#039;&#039;&#039;a&#039;&#039;&#039; este impar, &#039;&#039;&#039;b&#039;&#039;&#039; este par se inserează înaintea nodului curent un nou nod, care conține dublul sumei lor pe a doua poziție a nodului inserat și pe prima poziție diferența dintre dublul sumei numerelor din nodul curent și a primului număr din nodul curent;&lt;br /&gt;
* &#039;&#039;&#039;a&#039;&#039;&#039; este par, &#039;&#039;&#039;b&#039;&#039;&#039; este par se inserează după nodul curent un nou nod, care conține jumătatea sumei lor pe prima poziție a nodului inserat iar pe a doua poziție suma dintre jumătatea sumei numerelor din nodul curent și al doilea număr din nodul curent;&lt;br /&gt;
* &#039;&#039;&#039;a&#039;&#039;&#039; este impar, &#039;&#039;&#039;b&#039;&#039;&#039; este impar se inserează înaintea nodului curent un nou nod, care conține jumătatea sumei lor pe a doua poziție a nodului inserat și pe prima poziție suma dintre jumătatea sumei numerelor din nodul curent și a primului număr din nodul curent.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Fișierul de intrare &#039;&#039;&#039;listin.txt&#039;&#039;&#039; conține pe prima linie numărul &#039;&#039;&#039;n&#039;&#039;&#039;, iar pe următoarele &#039;&#039;&#039;n&#039;&#039;&#039; linii &#039;&#039;&#039;n&#039;&#039;&#039; perechi de numere naturale separate prin spații.&lt;br /&gt;
== Date de ieșire ==&lt;br /&gt;
Fișierul de ieșire &#039;&#039;&#039;listout.txt&#039;&#039;&#039; va conține pe câte o linie numerele fiecărui nod al listei separate prin spații, după realizarea inserărilor.&lt;br /&gt;
== Restricţii şi precizări ==&lt;br /&gt;
* &#039;&#039;&#039;1 &amp;amp;les; n &amp;amp;les; 100.000&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;1 &amp;amp;les; a &amp;amp;les; b &amp;amp;les; 100&#039;&#039;&#039;&lt;br /&gt;
* se recomandă utilizarea unei liste alocate dinamic&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
; listin.txt&lt;br /&gt;
 5&lt;br /&gt;
 1 2&lt;br /&gt;
 2 4&lt;br /&gt;
 1 1&lt;br /&gt;
 2 6&lt;br /&gt;
 7 4&lt;br /&gt;
; listout.txt&lt;br /&gt;
 Datele de intrare corespund restrictiilor impuse&lt;br /&gt;
 5 6&lt;br /&gt;
 1 2&lt;br /&gt;
 2 4&lt;br /&gt;
 3 7&lt;br /&gt;
 2 1&lt;br /&gt;
 1 1&lt;br /&gt;
 2 6&lt;br /&gt;
 4 10&lt;br /&gt;
 15 22&lt;br /&gt;
 7 4&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
; listin.txt&lt;br /&gt;
 100001&lt;br /&gt;
 1 2&lt;br /&gt;
 2 3&lt;br /&gt;
 3 4&lt;br /&gt;
 ...&lt;br /&gt;
 100000 100001&lt;br /&gt;
; listout.txt&lt;br /&gt;
 Datele de intrare nu corespund restrictiilor impuse&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
class Node:&lt;br /&gt;
    def __init__(self, a, b):&lt;br /&gt;
        self.a = a&lt;br /&gt;
        self.b = b&lt;br /&gt;
        self.next = None&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def insert_after(node, a, b):&lt;br /&gt;
    new_node = Node(a, b)&lt;br /&gt;
    new_node.next = node.next&lt;br /&gt;
    node.next = new_node&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def insert_before(head, node, a, b):&lt;br /&gt;
    new_node = Node(a, b)&lt;br /&gt;
    if head == node:&lt;br /&gt;
        new_node.next = head&lt;br /&gt;
        return new_node&lt;br /&gt;
    else:&lt;br /&gt;
        prev = head&lt;br /&gt;
        while prev.next != node:&lt;br /&gt;
            prev = prev.next&lt;br /&gt;
        prev.next = new_node&lt;br /&gt;
        new_node.next = node&lt;br /&gt;
        return head&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
    n = int(input())&lt;br /&gt;
    sir = [list(map(int, input().split())) for _ in range(n)]&lt;br /&gt;
&lt;br /&gt;
    if len(sir) &amp;gt; 100000:&lt;br /&gt;
        print(&amp;quot;Datele de intrare nu corespund restrictiilor impuse&amp;quot;)&lt;br /&gt;
        return&lt;br /&gt;
&lt;br /&gt;
    head = Node(sir[0][0], sir[0][1])&lt;br /&gt;
    node = head&lt;br /&gt;
    for i in range(1, n):&lt;br /&gt;
        node.next = Node(sir[i][0], sir[i][1])&lt;br /&gt;
        node = node.next&lt;br /&gt;
&lt;br /&gt;
    node = head&lt;br /&gt;
    while node:&lt;br /&gt;
        a, b = node.a, node.b&lt;br /&gt;
        if a % 2 == 0 and b % 2 == 1:&lt;br /&gt;
            insert_after(node, 2*(a+b), 2*(a+b)-b)&lt;br /&gt;
            node = node.next&lt;br /&gt;
        elif a % 2 == 1 and b % 2 == 0:&lt;br /&gt;
            head = insert_before(head, node, 2*(a+b)-a, 2*(a+b))&lt;br /&gt;
        elif a % 2 == 0 and b % 2 == 0:&lt;br /&gt;
            insert_after(node, (a+b)//2, (a+b)//2+b)&lt;br /&gt;
            node = node.next&lt;br /&gt;
        elif a % 2 == 1 and b % 2 == 1:&lt;br /&gt;
            head = insert_before(head, node, (a+b)//2+a, (a+b)//2)&lt;br /&gt;
        node = node.next&lt;br /&gt;
&lt;br /&gt;
    print(&amp;quot;Datele de intrare corespund restrictiilor impuse&amp;quot;)&lt;br /&gt;
    node = head&lt;br /&gt;
    while node:&lt;br /&gt;
        print(node.a, node.b)&lt;br /&gt;
        node = node.next&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>Brianna Waltner</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=2847_%E2%80%93_List&amp;diff=8805</id>
		<title>2847 – List</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=2847_%E2%80%93_List&amp;diff=8805"/>
		<updated>2024-01-02T21:33:09Z</updated>

		<summary type="html">&lt;p&gt;Brianna Waltner: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cerinţa ==&lt;br /&gt;
Se dă o listă simplu înlănțuită care conține &#039;&#039;&#039;n&#039;&#039;&#039; perechi de numere naturale &#039;&#039;&#039;(a,b)&#039;&#039;&#039;. Fiecare pereche este stocată în câte un nod al listei; notăm cu &#039;&#039;&#039;a&#039;&#039;&#039; primul număr stocat într-un nod și cu &#039;&#039;&#039;b&#039;&#039;&#039; al doilea număr stocat în acel nod.&lt;br /&gt;
&lt;br /&gt;
Se cere să se insereze în listă astfel:&lt;br /&gt;
&lt;br /&gt;
Dacă pentru nodul curent:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;a&#039;&#039;&#039; este par și &#039;&#039;&#039;b&#039;&#039;&#039; este impar se inserează după nodul curent un nou nod, care conține dublul sumei lor pe prima poziție a nodului inserat iar pe a doua poziție diferența dintre dublul sumei numerelor din nodul curent și al doilea număr din nodul curent;&lt;br /&gt;
* &#039;&#039;&#039;a&#039;&#039;&#039; este impar, &#039;&#039;&#039;b&#039;&#039;&#039; este par se inserează înaintea nodului curent un nou nod, care conține dublul sumei lor pe a doua poziție a nodului inserat și pe prima poziție diferența dintre dublul sumei numerelor din nodul curent și a primului număr din nodul curent;&lt;br /&gt;
* &#039;&#039;&#039;a&#039;&#039;&#039; este par, &#039;&#039;&#039;b&#039;&#039;&#039; este par se inserează după nodul curent un nou nod, care conține jumătatea sumei lor pe prima poziție a nodului inserat iar pe a doua poziție suma dintre jumătatea sumei numerelor din nodul curent și al doilea număr din nodul curent;&lt;br /&gt;
* &#039;&#039;&#039;a&#039;&#039;&#039; este impar, &#039;&#039;&#039;b&#039;&#039;&#039; este impar se inserează înaintea nodului curent un nou nod, care conține jumătatea sumei lor pe a doua poziție a nodului inserat și pe prima poziție suma dintre jumătatea sumei numerelor din nodul curent și a primului număr din nodul curent.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Fișierul de intrare &#039;&#039;&#039;listin.txt&#039;&#039;&#039; conține pe prima linie numărul &#039;&#039;&#039;n&#039;&#039;&#039;, iar pe următoarele &#039;&#039;&#039;n&#039;&#039;&#039; linii &#039;&#039;&#039;n&#039;&#039;&#039; perechi de numere naturale separate prin spații.&lt;br /&gt;
== Date de ieșire ==&lt;br /&gt;
Fișierul de ieșire &#039;&#039;&#039;listout.txt&#039;&#039;&#039; va conține pe câte o linie numerele fiecărui nod al listei separate prin spații, după realizarea inserărilor.&lt;br /&gt;
== Restricţii şi precizări ==&lt;br /&gt;
* &#039;&#039;&#039;1 &amp;amp;les; n &amp;amp;les; 100.000&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;1 &amp;amp;les; a &amp;amp;les; b &amp;amp;les; 100&#039;&#039;&#039;&lt;br /&gt;
* se recomandă utilizarea unei liste alocate dinamic&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
; listin.txt&lt;br /&gt;
 5&lt;br /&gt;
 1 2&lt;br /&gt;
 2 4&lt;br /&gt;
 1 1&lt;br /&gt;
 2 6&lt;br /&gt;
 7 4&lt;br /&gt;
; listout.txt&lt;br /&gt;
 Datele de intrare nu corespund restrictiilor impuse&lt;br /&gt;
 5 6&lt;br /&gt;
 1 2&lt;br /&gt;
 2 4&lt;br /&gt;
 3 7&lt;br /&gt;
 2 1&lt;br /&gt;
 1 1&lt;br /&gt;
 2 6&lt;br /&gt;
 4 10&lt;br /&gt;
 15 22&lt;br /&gt;
 7 4&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
; listin.txt&lt;br /&gt;
 100001&lt;br /&gt;
 1 2&lt;br /&gt;
 2 3&lt;br /&gt;
 3 4&lt;br /&gt;
 ...&lt;br /&gt;
 100000 100001&lt;br /&gt;
; listout.txt&lt;br /&gt;
 Datele de intrare nu corespund restrictiilor impuse&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
class Node:&lt;br /&gt;
    def __init__(self, a, b):&lt;br /&gt;
        self.a = a&lt;br /&gt;
        self.b = b&lt;br /&gt;
        self.next = None&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def insert_after(node, a, b):&lt;br /&gt;
    new_node = Node(a, b)&lt;br /&gt;
    new_node.next = node.next&lt;br /&gt;
    node.next = new_node&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def insert_before(head, node, a, b):&lt;br /&gt;
    new_node = Node(a, b)&lt;br /&gt;
    if head == node:&lt;br /&gt;
        new_node.next = head&lt;br /&gt;
        return new_node&lt;br /&gt;
    else:&lt;br /&gt;
        prev = head&lt;br /&gt;
        while prev.next != node:&lt;br /&gt;
            prev = prev.next&lt;br /&gt;
        prev.next = new_node&lt;br /&gt;
        new_node.next = node&lt;br /&gt;
        return head&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
    n = int(input())&lt;br /&gt;
    sir = [list(map(int, input().split())) for _ in range(n)]&lt;br /&gt;
&lt;br /&gt;
    if len(sir) &amp;gt; 100000:&lt;br /&gt;
        print(&amp;quot;Datele de intrare nu corespund restrictiilor impuse&amp;quot;)&lt;br /&gt;
        return&lt;br /&gt;
&lt;br /&gt;
    head = Node(sir[0][0], sir[0][1])&lt;br /&gt;
    node = head&lt;br /&gt;
    for i in range(1, n):&lt;br /&gt;
        node.next = Node(sir[i][0], sir[i][1])&lt;br /&gt;
        node = node.next&lt;br /&gt;
&lt;br /&gt;
    node = head&lt;br /&gt;
    while node:&lt;br /&gt;
        a, b = node.a, node.b&lt;br /&gt;
        if a % 2 == 0 and b % 2 == 1:&lt;br /&gt;
            insert_after(node, 2*(a+b), 2*(a+b)-b)&lt;br /&gt;
            node = node.next&lt;br /&gt;
        elif a % 2 == 1 and b % 2 == 0:&lt;br /&gt;
            head = insert_before(head, node, 2*(a+b)-a, 2*(a+b))&lt;br /&gt;
        elif a % 2 == 0 and b % 2 == 0:&lt;br /&gt;
            insert_after(node, (a+b)//2, (a+b)//2+b)&lt;br /&gt;
            node = node.next&lt;br /&gt;
        elif a % 2 == 1 and b % 2 == 1:&lt;br /&gt;
            head = insert_before(head, node, (a+b)//2+a, (a+b)//2)&lt;br /&gt;
        node = node.next&lt;br /&gt;
&lt;br /&gt;
    print(&amp;quot;Datele de intrare corespund restrictiilor impuse&amp;quot;)&lt;br /&gt;
    node = head&lt;br /&gt;
    while node:&lt;br /&gt;
        print(node.a, node.b)&lt;br /&gt;
        node = node.next&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>Brianna Waltner</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=2847_%E2%80%93_List&amp;diff=8804</id>
		<title>2847 – List</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=2847_%E2%80%93_List&amp;diff=8804"/>
		<updated>2024-01-02T21:31:28Z</updated>

		<summary type="html">&lt;p&gt;Brianna Waltner: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cerinţa ==&lt;br /&gt;
Se dă o listă simplu înlănțuită care conține &#039;&#039;&#039;n&#039;&#039;&#039; perechi de numere naturale &#039;&#039;&#039;(a,b)&#039;&#039;&#039;. Fiecare pereche este stocată în câte un nod al listei; notăm cu &#039;&#039;&#039;a&#039;&#039;&#039; primul număr stocat într-un nod și cu &#039;&#039;&#039;b&#039;&#039;&#039; al doilea număr stocat în acel nod.&lt;br /&gt;
&lt;br /&gt;
Se cere să se insereze în listă astfel:&lt;br /&gt;
&lt;br /&gt;
Dacă pentru nodul curent:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;a&#039;&#039;&#039; este par și &#039;&#039;&#039;b&#039;&#039;&#039; este impar se inserează după nodul curent un nou nod, care conține dublul sumei lor pe prima poziție a nodului inserat iar pe a doua poziție diferența dintre dublul sumei numerelor din nodul curent și al doilea număr din nodul curent;&lt;br /&gt;
* &#039;&#039;&#039;a&#039;&#039;&#039; este impar, &#039;&#039;&#039;b&#039;&#039;&#039; este par se inserează înaintea nodului curent un nou nod, care conține dublul sumei lor pe a doua poziție a nodului inserat și pe prima poziție diferența dintre dublul sumei numerelor din nodul curent și a primului număr din nodul curent;&lt;br /&gt;
* &#039;&#039;&#039;a&#039;&#039;&#039; este par, &#039;&#039;&#039;b&#039;&#039;&#039; este par se inserează după nodul curent un nou nod, care conține jumătatea sumei lor pe prima poziție a nodului inserat iar pe a doua poziție suma dintre jumătatea sumei numerelor din nodul curent și al doilea număr din nodul curent;&lt;br /&gt;
* &#039;&#039;&#039;a&#039;&#039;&#039; este impar, &#039;&#039;&#039;b&#039;&#039;&#039; este impar se inserează înaintea nodului curent un nou nod, care conține jumătatea sumei lor pe a doua poziție a nodului inserat și pe prima poziție suma dintre jumătatea sumei numerelor din nodul curent și a primului număr din nodul curent.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Fișierul de intrare &#039;&#039;&#039;listin.txt&#039;&#039;&#039; conține pe prima linie numărul &#039;&#039;&#039;n&#039;&#039;&#039;, iar pe următoarele &#039;&#039;&#039;n&#039;&#039;&#039; linii &#039;&#039;&#039;n&#039;&#039;&#039; perechi de numere naturale separate prin spații.&lt;br /&gt;
== Date de ieșire ==&lt;br /&gt;
Fișierul de ieșire &#039;&#039;&#039;listout.txt&#039;&#039;&#039; va conține pe câte o linie numerele fiecărui nod al listei separate prin spații, după realizarea inserărilor.&lt;br /&gt;
== Restricţii şi precizări ==&lt;br /&gt;
* &#039;&#039;&#039;1 &amp;amp;les; n &amp;amp;les; 100.000&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;1 &amp;amp;les; a &amp;amp;les; b &amp;amp;les; 100&#039;&#039;&#039;&lt;br /&gt;
* se recomandă utilizarea unei liste alocate dinamic&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
; listin.txt&lt;br /&gt;
 5&lt;br /&gt;
 1 2&lt;br /&gt;
 2 4&lt;br /&gt;
 1 1&lt;br /&gt;
 2 6&lt;br /&gt;
 7 4&lt;br /&gt;
; listout.txt&lt;br /&gt;
 5 6&lt;br /&gt;
 1 2&lt;br /&gt;
 2 4&lt;br /&gt;
 3 7&lt;br /&gt;
 2 1&lt;br /&gt;
 1 1&lt;br /&gt;
 2 6&lt;br /&gt;
 4 10&lt;br /&gt;
 15 22&lt;br /&gt;
 7 4&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
; listin.txt&lt;br /&gt;
 100001&lt;br /&gt;
 1 2&lt;br /&gt;
 2 3&lt;br /&gt;
 3 4&lt;br /&gt;
 ...&lt;br /&gt;
 100000 100001&lt;br /&gt;
; listout.txt&lt;br /&gt;
 Datele de intrare nu corespund restrictiilor impuse&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
class Node:&lt;br /&gt;
    def __init__(self, a, b):&lt;br /&gt;
        self.a = a&lt;br /&gt;
        self.b = b&lt;br /&gt;
        self.next = None&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def insert_after(node, a, b):&lt;br /&gt;
    new_node = Node(a, b)&lt;br /&gt;
    new_node.next = node.next&lt;br /&gt;
    node.next = new_node&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def insert_before(head, node, a, b):&lt;br /&gt;
    new_node = Node(a, b)&lt;br /&gt;
    if head == node:&lt;br /&gt;
        new_node.next = head&lt;br /&gt;
        return new_node&lt;br /&gt;
    else:&lt;br /&gt;
        prev = head&lt;br /&gt;
        while prev.next != node:&lt;br /&gt;
            prev = prev.next&lt;br /&gt;
        prev.next = new_node&lt;br /&gt;
        new_node.next = node&lt;br /&gt;
        return head&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
    n = int(input())&lt;br /&gt;
    sir = [list(map(int, input().split())) for _ in range(n)]&lt;br /&gt;
&lt;br /&gt;
    if len(sir) &amp;gt; 100000:&lt;br /&gt;
        print(&amp;quot;Datele de intrare nu corespund restrictiilor impuse&amp;quot;)&lt;br /&gt;
        return&lt;br /&gt;
&lt;br /&gt;
    head = Node(sir[0][0], sir[0][1])&lt;br /&gt;
    node = head&lt;br /&gt;
    for i in range(1, n):&lt;br /&gt;
        node.next = Node(sir[i][0], sir[i][1])&lt;br /&gt;
        node = node.next&lt;br /&gt;
&lt;br /&gt;
    node = head&lt;br /&gt;
    while node:&lt;br /&gt;
        a, b = node.a, node.b&lt;br /&gt;
        if a % 2 == 0 and b % 2 == 1:&lt;br /&gt;
            insert_after(node, 2*(a+b), 2*(a+b)-b)&lt;br /&gt;
            node = node.next&lt;br /&gt;
        elif a % 2 == 1 and b % 2 == 0:&lt;br /&gt;
            head = insert_before(head, node, 2*(a+b)-a, 2*(a+b))&lt;br /&gt;
        elif a % 2 == 0 and b % 2 == 0:&lt;br /&gt;
            insert_after(node, (a+b)//2, (a+b)//2+b)&lt;br /&gt;
            node = node.next&lt;br /&gt;
        elif a % 2 == 1 and b % 2 == 1:&lt;br /&gt;
            head = insert_before(head, node, (a+b)//2+a, (a+b)//2)&lt;br /&gt;
        node = node.next&lt;br /&gt;
&lt;br /&gt;
    print(&amp;quot;Datele de intrare corespund restrictiilor impuse&amp;quot;)&lt;br /&gt;
    node = head&lt;br /&gt;
    while node:&lt;br /&gt;
        print(node.a, node.b)&lt;br /&gt;
        node = node.next&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>Brianna Waltner</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=2847_%E2%80%93_List&amp;diff=8802</id>
		<title>2847 – List</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=2847_%E2%80%93_List&amp;diff=8802"/>
		<updated>2024-01-02T21:27:40Z</updated>

		<summary type="html">&lt;p&gt;Brianna Waltner: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cerinţa ==&lt;br /&gt;
Se dă o listă simplu înlănțuită care conține &#039;&#039;&#039;n&#039;&#039;&#039; perechi de numere naturale &#039;&#039;&#039;(a,b)&#039;&#039;&#039;. Fiecare pereche este stocată în câte un nod al listei; notăm cu &#039;&#039;&#039;a&#039;&#039;&#039; primul număr stocat într-un nod și cu &#039;&#039;&#039;b&#039;&#039;&#039; al doilea număr stocat în acel nod.&lt;br /&gt;
&lt;br /&gt;
Se cere să se insereze în listă astfel:&lt;br /&gt;
&lt;br /&gt;
Dacă pentru nodul curent:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;a&#039;&#039;&#039; este par și &#039;&#039;&#039;b&#039;&#039;&#039; este impar se inserează după nodul curent un nou nod, care conține dublul sumei lor pe prima poziție a nodului inserat iar pe a doua poziție diferența dintre dublul sumei numerelor din nodul curent și al doilea număr din nodul curent;&lt;br /&gt;
* &#039;&#039;&#039;a&#039;&#039;&#039; este impar, &#039;&#039;&#039;b&#039;&#039;&#039; este par se inserează înaintea nodului curent un nou nod, care conține dublul sumei lor pe a doua poziție a nodului inserat și pe prima poziție diferența dintre dublul sumei numerelor din nodul curent și a primului număr din nodul curent;&lt;br /&gt;
* &#039;&#039;&#039;a&#039;&#039;&#039; este par, &#039;&#039;&#039;b&#039;&#039;&#039; este par se inserează după nodul curent un nou nod, care conține jumătatea sumei lor pe prima poziție a nodului inserat iar pe a doua poziție suma dintre jumătatea sumei numerelor din nodul curent și al doilea număr din nodul curent;&lt;br /&gt;
* &#039;&#039;&#039;a&#039;&#039;&#039; este impar, &#039;&#039;&#039;b&#039;&#039;&#039; este impar se inserează înaintea nodului curent un nou nod, care conține jumătatea sumei lor pe a doua poziție a nodului inserat și pe prima poziție suma dintre jumătatea sumei numerelor din nodul curent și a primului număr din nodul curent.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Fișierul de intrare &#039;&#039;&#039;listin.txt&#039;&#039;&#039; conține pe prima linie numărul &#039;&#039;&#039;n&#039;&#039;&#039;, iar pe următoarele &#039;&#039;&#039;n&#039;&#039;&#039; linii &#039;&#039;&#039;n&#039;&#039;&#039; perechi de numere naturale separate prin spații.&lt;br /&gt;
== Date de ieșire ==&lt;br /&gt;
Fișierul de ieșire &#039;&#039;&#039;listout.txt&#039;&#039;&#039; va conține pe câte o linie numerele fiecărui nod al listei separate prin spații, după realizarea inserărilor.&lt;br /&gt;
== Restricţii şi precizări ==&lt;br /&gt;
* &#039;&#039;&#039;1 &amp;amp;les; n &amp;amp;les; 100.000&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;1 &amp;amp;les; a &amp;amp;les; b &amp;amp;les; 100&#039;&#039;&#039;&lt;br /&gt;
* se recomandă utilizarea unei liste alocate dinamic&lt;br /&gt;
== Exemplul ==&lt;br /&gt;
; listin.txt&lt;br /&gt;
 5&lt;br /&gt;
 1 2&lt;br /&gt;
 2 4&lt;br /&gt;
 1 1&lt;br /&gt;
 2 6&lt;br /&gt;
 7 4&lt;br /&gt;
; listout.txt&lt;br /&gt;
 5 6&lt;br /&gt;
 1 2&lt;br /&gt;
 2 4&lt;br /&gt;
 3 7&lt;br /&gt;
 2 1&lt;br /&gt;
 1 1&lt;br /&gt;
 2 6&lt;br /&gt;
 4 10&lt;br /&gt;
 15 22&lt;br /&gt;
 7 4&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
class Node:&lt;br /&gt;
    def __init__(self, a, b):&lt;br /&gt;
        self.a = a&lt;br /&gt;
        self.b = b&lt;br /&gt;
        self.next = None&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def insert_after(node, a, b):&lt;br /&gt;
    new_node = Node(a, b)&lt;br /&gt;
    new_node.next = node.next&lt;br /&gt;
    node.next = new_node&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def insert_before(head, node, a, b):&lt;br /&gt;
    new_node = Node(a, b)&lt;br /&gt;
    if head == node:&lt;br /&gt;
        new_node.next = head&lt;br /&gt;
        return new_node&lt;br /&gt;
    else:&lt;br /&gt;
        prev = head&lt;br /&gt;
        while prev.next != node:&lt;br /&gt;
            prev = prev.next&lt;br /&gt;
        prev.next = new_node&lt;br /&gt;
        new_node.next = node&lt;br /&gt;
        return head&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
    n = int(input())&lt;br /&gt;
    sir = [list(map(int, input().split())) for _ in range(n)]&lt;br /&gt;
&lt;br /&gt;
    if len(sir) &amp;gt; 100000:&lt;br /&gt;
        print(&amp;quot;Datele de intrare nu corespund restrictiilor impuse&amp;quot;)&lt;br /&gt;
        return&lt;br /&gt;
&lt;br /&gt;
    head = Node(sir[0][0], sir[0][1])&lt;br /&gt;
    node = head&lt;br /&gt;
    for i in range(1, n):&lt;br /&gt;
        node.next = Node(sir[i][0], sir[i][1])&lt;br /&gt;
        node = node.next&lt;br /&gt;
&lt;br /&gt;
    node = head&lt;br /&gt;
    while node:&lt;br /&gt;
        a, b = node.a, node.b&lt;br /&gt;
        if a % 2 == 0 and b % 2 == 1:&lt;br /&gt;
            insert_after(node, 2*(a+b), 2*(a+b)-b)&lt;br /&gt;
            node = node.next&lt;br /&gt;
        elif a % 2 == 1 and b % 2 == 0:&lt;br /&gt;
            head = insert_before(head, node, 2*(a+b)-a, 2*(a+b))&lt;br /&gt;
        elif a % 2 == 0 and b % 2 == 0:&lt;br /&gt;
            insert_after(node, (a+b)//2, (a+b)//2+b)&lt;br /&gt;
            node = node.next&lt;br /&gt;
        elif a % 2 == 1 and b % 2 == 1:&lt;br /&gt;
            head = insert_before(head, node, (a+b)//2+a, (a+b)//2)&lt;br /&gt;
        node = node.next&lt;br /&gt;
&lt;br /&gt;
    print(&amp;quot;Datele de intrare corespund restrictiilor impuse&amp;quot;)&lt;br /&gt;
    node = head&lt;br /&gt;
    while node:&lt;br /&gt;
        print(node.a, node.b)&lt;br /&gt;
        node = node.next&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>Brianna Waltner</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=3336_-_acadele&amp;diff=8801</id>
		<title>3336 - acadele</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=3336_-_acadele&amp;diff=8801"/>
		<updated>2024-01-02T21:27:07Z</updated>

		<summary type="html">&lt;p&gt;Brianna Waltner: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cerinţa ==&lt;br /&gt;
Candyman are acadele de trei feluri: cu căpşuni, cu vişine şi cu zmeură, oricâte acadele din fiecare fel. Cei &#039;&#039;&#039;n&#039;&#039;&#039; copii de la grupa pregătitoare şi-au ales fiecare câte o acadea astfel încât cel mult doi copii şi-au ales cu vişine. Dacă notăm cu &#039;&#039;&#039;m&#039;&#039;&#039; numărul de moduri în care puteau să-şi aleagă fiecare câte o acadea, să se afle restul împărţirii lui &#039;&#039;&#039;m&#039;&#039;&#039; la &#039;&#039;&#039;2020&#039;&#039;&#039;.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Programul citește de la tastatură numărul &#039;&#039;&#039;n&#039;&#039;&#039;.&lt;br /&gt;
== Date de ieșire ==&lt;br /&gt;
Programul va afișa pe ecran restul împărţirii lui &#039;&#039;&#039;m&#039;&#039;&#039; la &#039;&#039;&#039;2020&#039;&#039;&#039;.&lt;br /&gt;
== Restricţii şi precizări ==&lt;br /&gt;
* &#039;&#039;&#039;1 &amp;amp;les; n &amp;amp;les; 1018&#039;&#039;&#039;&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
 2 &lt;br /&gt;
; Iesire&lt;br /&gt;
 9&lt;br /&gt;
== Exemplu 2 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
 10000000000000000000&lt;br /&gt;
; Iesire&lt;br /&gt;
 Datele de intrare nu corespund restrictiilor impuse&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
def compute_ways(n):&lt;br /&gt;
    mod = 2020&lt;br /&gt;
    if n == 1:&lt;br /&gt;
        return 3 % mod&lt;br /&gt;
    elif n == 2:&lt;br /&gt;
        return 9 % mod&lt;br /&gt;
    else:&lt;br /&gt;
        return (3 * 3 * pow(2, n-2, mod)) % mod&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
    n = int(input())&lt;br /&gt;
&lt;br /&gt;
    if n &amp;gt; pow(10, 18):&lt;br /&gt;
        print(&amp;quot;Datele de intrare nu corespund restrictiilor impuse&amp;quot;)&lt;br /&gt;
        return&lt;br /&gt;
&lt;br /&gt;
    ways = compute_ways(n)&lt;br /&gt;
    print(&amp;quot;Datele de intrare corespund restrictiilor impuse&amp;quot;)&lt;br /&gt;
    print(ways)&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;br /&gt;
== Explicatie ==&lt;br /&gt;
 Cei doi copii puteau să-şi aleagă acadelele astfel: (c,c), (z,z), (v,v), (c,v), (v,c), (c,z), (z,c), (v,z), (z,v).&lt;/div&gt;</summary>
		<author><name>Brianna Waltner</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=3630_-_codred&amp;diff=8800</id>
		<title>3630 - codred</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=3630_-_codred&amp;diff=8800"/>
		<updated>2024-01-02T21:26:37Z</updated>

		<summary type="html">&lt;p&gt;Brianna Waltner: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cerinţa ==&lt;br /&gt;
Se dă &#039;&#039;&#039;n&#039;&#039;&#039; un număr natural. Să se calculeze suma &#039;&#039;&#039;∑nk=1(k!⋅(k2+k+1))&#039;&#039;&#039;.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Programul citește de la tastatură numărul &#039;&#039;&#039;n&#039;&#039;&#039;.&lt;br /&gt;
== Date de ieșire ==&lt;br /&gt;
Programul va afișa pe ecran valoarea sumei, modulo &#039;&#039;&#039;1.000.000.007&#039;&#039;&#039;.&lt;br /&gt;
== Restricţii şi precizări ==&lt;br /&gt;
* &#039;&#039;&#039;1 &amp;amp;les; n &amp;amp;les; 10.000.000&#039;&#039;&#039;&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
 3&lt;br /&gt;
; Iesire&lt;br /&gt;
 95&lt;br /&gt;
== Exemplu 2 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
 100000000&lt;br /&gt;
; Iesire&lt;br /&gt;
 Datele de intrare nu corespund restrictiilor impuse&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
def factorial(n, mod):&lt;br /&gt;
    fact = 1&lt;br /&gt;
    for i in range(1, n + 1):&lt;br /&gt;
        fact = (fact * i) % mod&lt;br /&gt;
    return fact&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def compute_sum(n):&lt;br /&gt;
    mod = 1000000007&lt;br /&gt;
    suma = 0&lt;br /&gt;
    for k in range(1, n + 1):&lt;br /&gt;
        term = (factorial(k, mod) * (k*k + k + 1)) % mod&lt;br /&gt;
        suma = (suma + term) % mod&lt;br /&gt;
    return suma&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
    n = int(input())&lt;br /&gt;
&lt;br /&gt;
    if n &amp;gt; 10000000:&lt;br /&gt;
        print(&amp;quot;Datele de intrare nu corespund restrictiilor impuse&amp;quot;)&lt;br /&gt;
        return&lt;br /&gt;
&lt;br /&gt;
    suma = compute_sum(n)&lt;br /&gt;
    print(&amp;quot;Datele de intrare corespund restrictiilor impuse&amp;quot;)&lt;br /&gt;
    print(suma)&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;br /&gt;
== Explicatie ==&lt;br /&gt;
 Suma este &#039;&#039;&#039;1!⋅3+2!⋅7+3!⋅13=3+14+78=95&#039;&#039;&#039;.&lt;/div&gt;</summary>
		<author><name>Brianna Waltner</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=3336_-_acadele&amp;diff=8799</id>
		<title>3336 - acadele</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=3336_-_acadele&amp;diff=8799"/>
		<updated>2024-01-02T21:21:02Z</updated>

		<summary type="html">&lt;p&gt;Brianna Waltner: Pagină nouă: == Cerinţa == Candyman are acadele de trei feluri: cu căpşuni, cu vişine şi cu zmeură, oricâte acadele din fiecare fel. Cei &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039; copii de la grupa pregătitoare şi-au ales fiecare câte o acadea astfel încât cel mult doi copii şi-au ales cu vişine. Dacă notăm cu &amp;#039;&amp;#039;&amp;#039;m&amp;#039;&amp;#039;&amp;#039; numărul de moduri în care puteau să-şi aleagă fiecare câte o acadea, să se afle restul împărţirii lui &amp;#039;&amp;#039;&amp;#039;m&amp;#039;&amp;#039;&amp;#039; la &amp;#039;&amp;#039;&amp;#039;2020&amp;#039;&amp;#039;&amp;#039;. == Date de intrare == Programul citește de la tastatură...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cerinţa ==&lt;br /&gt;
Candyman are acadele de trei feluri: cu căpşuni, cu vişine şi cu zmeură, oricâte acadele din fiecare fel. Cei &#039;&#039;&#039;n&#039;&#039;&#039; copii de la grupa pregătitoare şi-au ales fiecare câte o acadea astfel încât cel mult doi copii şi-au ales cu vişine. Dacă notăm cu &#039;&#039;&#039;m&#039;&#039;&#039; numărul de moduri în care puteau să-şi aleagă fiecare câte o acadea, să se afle restul împărţirii lui &#039;&#039;&#039;m&#039;&#039;&#039; la &#039;&#039;&#039;2020&#039;&#039;&#039;.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Programul citește de la tastatură numărul &#039;&#039;&#039;n&#039;&#039;&#039;.&lt;br /&gt;
== Date de ieșire ==&lt;br /&gt;
Programul va afișa pe ecran restul împărţirii lui &#039;&#039;&#039;m&#039;&#039;&#039; la &#039;&#039;&#039;2020&#039;&#039;&#039;.&lt;br /&gt;
== Restricţii şi precizări ==&lt;br /&gt;
* &#039;&#039;&#039;1 &amp;amp;les; n &amp;amp;les; 1018&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
 2 &lt;br /&gt;
; Iesire&lt;br /&gt;
 9&lt;br /&gt;
&lt;br /&gt;
== Exemplu 2 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
 10000000000000000000&lt;br /&gt;
; Iesire&lt;br /&gt;
 Datele de intrare nu corespund restrictiilor impuse&lt;br /&gt;
&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
def compute_ways(n):&lt;br /&gt;
    mod = 2020&lt;br /&gt;
    if n == 1:&lt;br /&gt;
        return 3 % mod&lt;br /&gt;
    elif n == 2:&lt;br /&gt;
        return 9 % mod&lt;br /&gt;
    else:&lt;br /&gt;
        return (3 * 3 * pow(2, n-2, mod)) % mod&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
    n = int(input())&lt;br /&gt;
&lt;br /&gt;
    if n &amp;gt; pow(10, 18):&lt;br /&gt;
        print(&amp;quot;Datele de intrare nu corespund restrictiilor impuse&amp;quot;)&lt;br /&gt;
        return&lt;br /&gt;
&lt;br /&gt;
    ways = compute_ways(n)&lt;br /&gt;
    print(&amp;quot;Datele de intrare corespund restrictiilor impuse&amp;quot;)&lt;br /&gt;
    print(ways)&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;br /&gt;
&lt;br /&gt;
== Explicatie ==&lt;br /&gt;
 Cei doi copii puteau să-şi aleagă acadelele astfel: (c,c), (z,z), (v,v), (c,v), (v,c), (c,z), (z,c), (v,z), (z,v).&lt;/div&gt;</summary>
		<author><name>Brianna Waltner</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=3630_-_codred&amp;diff=8797</id>
		<title>3630 - codred</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=3630_-_codred&amp;diff=8797"/>
		<updated>2024-01-02T21:10:32Z</updated>

		<summary type="html">&lt;p&gt;Brianna Waltner: Pagină nouă: == Cerinţa == Se dă &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039; un număr natural. Să se calculeze suma &amp;#039;&amp;#039;&amp;#039;∑nk=1(k!⋅(k2+k+1))&amp;#039;&amp;#039;&amp;#039;. == Date de intrare == Programul citește de la tastatură numărul &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039;. == Date de ieșire == Programul va afișa pe ecran valoarea sumei, modulo &amp;#039;&amp;#039;&amp;#039;1.000.000.007&amp;#039;&amp;#039;&amp;#039;. == Restricţii şi precizări == * &amp;#039;&amp;#039;&amp;#039;1 &amp;amp;les; n &amp;amp;les; 10.000.000&amp;#039;&amp;#039;&amp;#039;  == Exemplul 1 == ; Intrare  3 ; Iesire  95  == Exemplu 2 == ; Intrare  100000000 ; Iesire  Datele de intrare nu corespund restrictiilor imp...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cerinţa ==&lt;br /&gt;
Se dă &#039;&#039;&#039;n&#039;&#039;&#039; un număr natural. Să se calculeze suma &#039;&#039;&#039;∑nk=1(k!⋅(k2+k+1))&#039;&#039;&#039;.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Programul citește de la tastatură numărul &#039;&#039;&#039;n&#039;&#039;&#039;.&lt;br /&gt;
== Date de ieșire ==&lt;br /&gt;
Programul va afișa pe ecran valoarea sumei, modulo &#039;&#039;&#039;1.000.000.007&#039;&#039;&#039;.&lt;br /&gt;
== Restricţii şi precizări ==&lt;br /&gt;
* &#039;&#039;&#039;1 &amp;amp;les; n &amp;amp;les; 10.000.000&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
 3&lt;br /&gt;
; Iesire&lt;br /&gt;
 95&lt;br /&gt;
&lt;br /&gt;
== Exemplu 2 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
 100000000&lt;br /&gt;
; Iesire&lt;br /&gt;
 Datele de intrare nu corespund restrictiilor impuse&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
def factorial(n, mod):&lt;br /&gt;
    fact = 1&lt;br /&gt;
    for i in range(1, n + 1):&lt;br /&gt;
        fact = (fact * i) % mod&lt;br /&gt;
    return fact&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def compute_sum(n):&lt;br /&gt;
    mod = 1000000007&lt;br /&gt;
    suma = 0&lt;br /&gt;
    for k in range(1, n + 1):&lt;br /&gt;
        term = (factorial(k, mod) * (k*k + k + 1)) % mod&lt;br /&gt;
        suma = (suma + term) % mod&lt;br /&gt;
    return suma&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
    n = int(input())&lt;br /&gt;
&lt;br /&gt;
    if n &amp;gt; 10000000:&lt;br /&gt;
        print(&amp;quot;Datele de intrare nu corespund restrictiilor impuse&amp;quot;)&lt;br /&gt;
        return&lt;br /&gt;
&lt;br /&gt;
    suma = compute_sum(n)&lt;br /&gt;
    print(&amp;quot;Datele de intrare corespund restrictiilor impuse&amp;quot;)&lt;br /&gt;
    print(suma)&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;br /&gt;
&lt;br /&gt;
== Explicatie ==&lt;br /&gt;
 Suma este &#039;&#039;&#039;1!⋅3+2!⋅7+3!⋅13=3+14+78=95&#039;&#039;&#039;.&lt;/div&gt;</summary>
		<author><name>Brianna Waltner</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=3387_-_Veverita&amp;diff=8796</id>
		<title>3387 - Veverita</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=3387_-_Veverita&amp;diff=8796"/>
		<updated>2024-01-02T21:03:16Z</updated>

		<summary type="html">&lt;p&gt;Brianna Waltner: Ștergerea conținutului paginii&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Brianna Waltner</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=3387_-_Veverita&amp;diff=8794</id>
		<title>3387 - Veverita</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=3387_-_Veverita&amp;diff=8794"/>
		<updated>2024-01-02T20:47:35Z</updated>

		<summary type="html">&lt;p&gt;Brianna Waltner: Pagină nouă: == Cerinţa == Se dă o matrice cu &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039; linii și &amp;#039;&amp;#039;&amp;#039;m&amp;#039;&amp;#039;&amp;#039; coloane cu valori de &amp;#039;&amp;#039;&amp;#039;0&amp;#039;&amp;#039;&amp;#039; și &amp;#039;&amp;#039;&amp;#039;1&amp;#039;&amp;#039;&amp;#039;. Numim &amp;#039;&amp;#039;&amp;#039;dreptunghi de extrem&amp;#039;&amp;#039;&amp;#039; un dreptunghi ale cărui vârfuri au valori egale. Determinați numărul acestor dreptunghiuri, aria dreptunghiului de arie maximă și câte dreptunghiuri au aceeași valoare a vârfurilor ca și dreptunghiul de arie maximă. == Date de intrare == Fișierul de intrare &amp;#039;&amp;#039;&amp;#039;colturi_drin.txt&amp;#039;&amp;#039;&amp;#039; conține pe prima linie numărul &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039; de linii,...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cerinţa ==&lt;br /&gt;
Se dă o matrice cu &#039;&#039;&#039;n&#039;&#039;&#039; linii și &#039;&#039;&#039;m&#039;&#039;&#039; coloane cu valori de &#039;&#039;&#039;0&#039;&#039;&#039; și &#039;&#039;&#039;1&#039;&#039;&#039;. Numim &#039;&#039;&#039;dreptunghi de extrem&#039;&#039;&#039; un dreptunghi ale cărui vârfuri au valori egale. Determinați numărul acestor dreptunghiuri, aria dreptunghiului de arie maximă și câte dreptunghiuri au aceeași valoare a vârfurilor ca și dreptunghiul de arie maximă.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Fișierul de intrare &#039;&#039;&#039;colturi_drin.txt&#039;&#039;&#039; conține pe prima linie numărul &#039;&#039;&#039;n&#039;&#039;&#039; de linii, numărul &#039;&#039;&#039;m&#039;&#039;&#039; de coloane, iar pe următoarele linii se află cele &#039;&#039;&#039;n * m&#039;&#039;&#039; numere naturale.&lt;br /&gt;
== Date de ieșire ==&lt;br /&gt;
Fișierul de ieșire &#039;&#039;&#039;colturi_dr.out&#039;&#039;&#039; va conține pe prima linie numerele &#039;&#039;&#039;nr&#039;&#039;&#039;, &#039;&#039;&#039;A&#039;&#039;&#039; si &#039;&#039;&#039;cnt&#039;&#039;&#039; reprezentând cele trei numere specificate în cerință.&lt;br /&gt;
== Restricţii şi precizări ==&lt;br /&gt;
* &#039;&#039;&#039;1 &amp;amp;les; n, m &amp;amp;les; 100&#039;&#039;&#039;&lt;br /&gt;
* numărul de dreptunghiuri de extrem cu vârfuri de 1 este diferit de numărul de dreptunghiuri de extrem cu vârfuri de &#039;&#039;&#039;0&#039;&#039;&#039;.&lt;br /&gt;
* un &#039;&#039;&#039;dreptunghi de extrem&#039;&#039;&#039; are cel puțin două linii și două coloane&lt;br /&gt;
&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
; colturi_drin.txt&lt;br /&gt;
 5 5&lt;br /&gt;
 1  0  1  0  1&lt;br /&gt;
 1  1  1  1  0&lt;br /&gt;
 0  1  1  0  1&lt;br /&gt;
 0  1  0  0  1&lt;br /&gt;
 1  0  1  0  1&lt;br /&gt;
; colturi_dr.out&lt;br /&gt;
 11 25 9&lt;br /&gt;
&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
def count_extreme_rectangles(matrix):&lt;br /&gt;
    n = len(matrix)&lt;br /&gt;
    m = len(matrix[0])&lt;br /&gt;
    cnt = [0, 0]&lt;br /&gt;
    max_area = [0, 0]&lt;br /&gt;
    max_area_cnt = [0, 0]&lt;br /&gt;
&lt;br /&gt;
    for i in range(n):&lt;br /&gt;
        for j in range(m):&lt;br /&gt;
            for k in range(i+1, n):&lt;br /&gt;
                for o in range(j+1, m):&lt;br /&gt;
                    if matrix[i][j] == matrix[k][o] == matrix[i][o] == matrix[k][j]:&lt;br /&gt;
                        cnt[matrix[i][j]] += 1&lt;br /&gt;
                        area = (k-i+1) * (o-j+1)&lt;br /&gt;
                        if area &amp;gt; max_area[matrix[i][j]]:&lt;br /&gt;
                            max_area[matrix[i][j]] = area&lt;br /&gt;
                            max_area_cnt[matrix[i][j]] = 1&lt;br /&gt;
                        elif area == max_area[matrix[i][j]]:&lt;br /&gt;
                            max_area_cnt[matrix[i][j]] += 1&lt;br /&gt;
&lt;br /&gt;
    if max_area[0] &amp;gt; max_area[1]:&lt;br /&gt;
        return cnt[0], max_area[0], max_area_cnt[0]&lt;br /&gt;
    else:&lt;br /&gt;
        return cnt[1], max_area[1], max_area_cnt[1]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
    n, m = map(int, input().split())&lt;br /&gt;
    matrix = [list(map(int, input().split())) for _ in range(n)]&lt;br /&gt;
&lt;br /&gt;
    if n &amp;gt; 100 or m &amp;gt; 100:&lt;br /&gt;
        print(&amp;quot;Datele de intrare nu corespund restrictiilor impuse&amp;quot;)&lt;br /&gt;
        return&lt;br /&gt;
&lt;br /&gt;
    nr, A, cnt = count_extreme_rectangles(matrix)&lt;br /&gt;
    print(&amp;quot;Datele de intrare corespund restrictiilor impuse&amp;quot;)&lt;br /&gt;
    print(nr, A, cnt)&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;br /&gt;
&lt;br /&gt;
== Explicatie ==&lt;br /&gt;
 Sunt &#039;&#039;&#039;9&#039;&#039;&#039; dreptunghiuri de extrem a cărui vârfuri sunt &#039;&#039;&#039;1&#039;&#039;&#039;, respectiv &#039;&#039;&#039;2&#039;&#039;&#039; ale cărui vârfuri sunt &#039;&#039;&#039;0&#039;&#039;&#039;. Dreptunghiul de extrem de arie maximă are colțul stânga sus la &#039;&#039;&#039;(0,0)&#039;&#039;&#039; și colțul dreapta jos la &#039;&#039;&#039;(5,5)&#039;&#039;&#039;.&lt;/div&gt;</summary>
		<author><name>Brianna Waltner</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=2847_%E2%80%93_List&amp;diff=8793</id>
		<title>2847 – List</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=2847_%E2%80%93_List&amp;diff=8793"/>
		<updated>2024-01-02T20:27:31Z</updated>

		<summary type="html">&lt;p&gt;Brianna Waltner: Pagină nouă: == Cerinţa == Se dă o listă simplu înlănțuită care conține &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039; perechi de numere naturale &amp;#039;&amp;#039;&amp;#039;(a,b)&amp;#039;&amp;#039;&amp;#039;. Fiecare pereche este stocată în câte un nod al listei; notăm cu &amp;#039;&amp;#039;&amp;#039;a&amp;#039;&amp;#039;&amp;#039; primul număr stocat într-un nod și cu &amp;#039;&amp;#039;&amp;#039;b&amp;#039;&amp;#039;&amp;#039; al doilea număr stocat în acel nod.  Se cere să se insereze în listă astfel:  Dacă pentru nodul curent:  * &amp;#039;&amp;#039;&amp;#039;a&amp;#039;&amp;#039;&amp;#039; este par și &amp;#039;&amp;#039;&amp;#039;b&amp;#039;&amp;#039;&amp;#039; este impar se inserează după nodul curent un nou nod, care conține dublul sumei lor pe prima po...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cerinţa ==&lt;br /&gt;
Se dă o listă simplu înlănțuită care conține &#039;&#039;&#039;n&#039;&#039;&#039; perechi de numere naturale &#039;&#039;&#039;(a,b)&#039;&#039;&#039;. Fiecare pereche este stocată în câte un nod al listei; notăm cu &#039;&#039;&#039;a&#039;&#039;&#039; primul număr stocat într-un nod și cu &#039;&#039;&#039;b&#039;&#039;&#039; al doilea număr stocat în acel nod.&lt;br /&gt;
&lt;br /&gt;
Se cere să se insereze în listă astfel:&lt;br /&gt;
&lt;br /&gt;
Dacă pentru nodul curent:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;a&#039;&#039;&#039; este par și &#039;&#039;&#039;b&#039;&#039;&#039; este impar se inserează după nodul curent un nou nod, care conține dublul sumei lor pe prima poziție a nodului inserat iar pe a doua poziție diferența dintre dublul sumei numerelor din nodul curent și al doilea număr din nodul curent;&lt;br /&gt;
* &#039;&#039;&#039;a&#039;&#039;&#039; este impar, &#039;&#039;&#039;b&#039;&#039;&#039; este par se inserează înaintea nodului curent un nou nod, care conține dublul sumei lor pe a doua poziție a nodului inserat și pe prima poziție diferența dintre dublul sumei numerelor din nodul curent și a primului număr din nodul curent;&lt;br /&gt;
* &#039;&#039;&#039;a&#039;&#039;&#039; este par, &#039;&#039;&#039;b&#039;&#039;&#039; este par se inserează după nodul curent un nou nod, care conține jumătatea sumei lor pe prima poziție a nodului inserat iar pe a doua poziție suma dintre jumătatea sumei numerelor din nodul curent și al doilea număr din nodul curent;&lt;br /&gt;
* &#039;&#039;&#039;a&#039;&#039;&#039; este impar, &#039;&#039;&#039;b&#039;&#039;&#039; este impar se inserează înaintea nodului curent un nou nod, care conține jumătatea sumei lor pe a doua poziție a nodului inserat și pe prima poziție suma dintre jumătatea sumei numerelor din nodul curent și a primului număr din nodul curent.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Fișierul de intrare &#039;&#039;&#039;listin.txt&#039;&#039;&#039; conține pe prima linie numărul &#039;&#039;&#039;n&#039;&#039;&#039;, iar pe următoarele &#039;&#039;&#039;n&#039;&#039;&#039; linii &#039;&#039;&#039;n&#039;&#039;&#039; perechi de numere naturale separate prin spații.&lt;br /&gt;
== Date de ieșire ==&lt;br /&gt;
Fișierul de ieșire &#039;&#039;&#039;listout.txt&#039;&#039;&#039; va conține pe câte o linie numerele fiecărui nod al listei separate prin spații, după realizarea inserărilor.&lt;br /&gt;
== Restricţii şi precizări ==&lt;br /&gt;
* &#039;&#039;&#039;1 &amp;amp;les; n &amp;amp;les; 100.000&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;1 &amp;amp;les; a &amp;amp;les; b &amp;amp;les; 100&#039;&#039;&#039;&lt;br /&gt;
* se recomandă utilizarea unei liste alocate dinamic&lt;br /&gt;
&lt;br /&gt;
== Exemplul ==&lt;br /&gt;
; listin.txt&lt;br /&gt;
 5&lt;br /&gt;
 1 2&lt;br /&gt;
 2 4&lt;br /&gt;
 1 1&lt;br /&gt;
 2 6&lt;br /&gt;
 7 4&lt;br /&gt;
; listout.txt&lt;br /&gt;
 5 6&lt;br /&gt;
 1 2&lt;br /&gt;
 2 4&lt;br /&gt;
 3 7&lt;br /&gt;
 2 1&lt;br /&gt;
 1 1&lt;br /&gt;
 2 6&lt;br /&gt;
 4 10&lt;br /&gt;
 15 22&lt;br /&gt;
 7 4&lt;br /&gt;
&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
class Node:&lt;br /&gt;
    def __init__(self, a, b):&lt;br /&gt;
        self.a = a&lt;br /&gt;
        self.b = b&lt;br /&gt;
        self.next = None&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def insert_after(node, a, b):&lt;br /&gt;
    new_node = Node(a, b)&lt;br /&gt;
    new_node.next = node.next&lt;br /&gt;
    node.next = new_node&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def insert_before(head, node, a, b):&lt;br /&gt;
    new_node = Node(a, b)&lt;br /&gt;
    if head == node:&lt;br /&gt;
        new_node.next = head&lt;br /&gt;
        return new_node&lt;br /&gt;
    else:&lt;br /&gt;
        prev = head&lt;br /&gt;
        while prev.next != node:&lt;br /&gt;
            prev = prev.next&lt;br /&gt;
        prev.next = new_node&lt;br /&gt;
        new_node.next = node&lt;br /&gt;
        return head&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
    n = int(input())&lt;br /&gt;
    sir = [list(map(int, input().split())) for _ in range(n)]&lt;br /&gt;
&lt;br /&gt;
    if len(sir) &amp;gt; 100000:&lt;br /&gt;
        print(&amp;quot;Datele de intrare nu corespund restrictiilor impuse&amp;quot;)&lt;br /&gt;
        return&lt;br /&gt;
&lt;br /&gt;
    head = Node(sir[0][0], sir[0][1])&lt;br /&gt;
    node = head&lt;br /&gt;
    for i in range(1, n):&lt;br /&gt;
        node.next = Node(sir[i][0], sir[i][1])&lt;br /&gt;
        node = node.next&lt;br /&gt;
&lt;br /&gt;
    node = head&lt;br /&gt;
    while node:&lt;br /&gt;
        a, b = node.a, node.b&lt;br /&gt;
        if a % 2 == 0 and b % 2 == 1:&lt;br /&gt;
            insert_after(node, 2*(a+b), 2*(a+b)-b)&lt;br /&gt;
            node = node.next&lt;br /&gt;
        elif a % 2 == 1 and b % 2 == 0:&lt;br /&gt;
            head = insert_before(head, node, 2*(a+b)-a, 2*(a+b))&lt;br /&gt;
        elif a % 2 == 0 and b % 2 == 0:&lt;br /&gt;
            insert_after(node, (a+b)//2, (a+b)//2+b)&lt;br /&gt;
            node = node.next&lt;br /&gt;
        elif a % 2 == 1 and b % 2 == 1:&lt;br /&gt;
            head = insert_before(head, node, (a+b)//2+a, (a+b)//2)&lt;br /&gt;
        node = node.next&lt;br /&gt;
&lt;br /&gt;
    print(&amp;quot;Datele de intrare corespund restrictiilor impuse&amp;quot;)&lt;br /&gt;
    node = head&lt;br /&gt;
    while node:&lt;br /&gt;
        print(node.a, node.b)&lt;br /&gt;
        node = node.next&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>Brianna Waltner</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=2198_%E2%80%93_Elimin_Prime&amp;diff=8790</id>
		<title>2198 – Elimin Prime</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=2198_%E2%80%93_Elimin_Prime&amp;diff=8790"/>
		<updated>2024-01-02T20:13:22Z</updated>

		<summary type="html">&lt;p&gt;Brianna Waltner: Pagină nouă: Se consideră un șir de n numere întregi, cu n număr natural nenul. Se elimină primul element din șir și toate elementele șirului aflate pe poziții care reprezintă numere prime, în ordinea crescătoare a pozițiilor. Operația de eliminare se repetă cu elementele rămase în șir, repoziționate după eliminarea celorlalte, până când este eliminat și ultimul element rămas. == Cerinţa == Să se scrie un program care afișează elementele șirului inițial, în...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Se consideră un șir de n numere întregi, cu n număr natural nenul. Se elimină primul element din șir și toate elementele șirului aflate pe poziții care reprezintă numere prime, în ordinea crescătoare a pozițiilor. Operația de eliminare se repetă cu elementele rămase în șir, repoziționate după eliminarea celorlalte, până când este eliminat și ultimul element rămas.&lt;br /&gt;
== Cerinţa ==&lt;br /&gt;
Să se scrie un program care afișează elementele șirului inițial, în ordinea în care au fost eliminate conform algoritmului descris mai sus.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Fișierul de intrare &#039;&#039;&#039;elimin_primein.txt&#039;&#039;&#039; conține pe prima linie numărul &#039;&#039;&#039;n&#039;&#039;&#039;, iar pe a doua linie &#039;&#039;&#039;n&#039;&#039;&#039; numere întregi separate prin spații.&lt;br /&gt;
== Date de ieșire ==&lt;br /&gt;
Fișierul de ieșire &#039;&#039;&#039;elimin_primeout.txt&#039;&#039;&#039; va conține pe prima linie, separate prin spațiu, numerele din fișierul de intrare în ordinea eliminării acestora.&lt;br /&gt;
== Restricţii şi precizări ==&lt;br /&gt;
* &#039;&#039;&#039;1 &amp;amp;les; n &amp;amp;les; 100.000&#039;&#039;&#039;&lt;br /&gt;
* numerele de pe a doua linie a fișierului de intrare sun cuprinse în intervalul &#039;&#039;&#039;[-1.000.000.000, 1.000.000.000]&#039;&#039;&#039;&lt;br /&gt;
* elementele șirului sunt indexate de la &#039;&#039;&#039;1&#039;&#039;&#039; la &#039;&#039;&#039;n&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
; elimin_primein.txt&lt;br /&gt;
 10 &lt;br /&gt;
 1 2 3 4 5 6 7 8 9 10&lt;br /&gt;
; elimin_primeout.txt&lt;br /&gt;
 1 2 3 5 7 4 6 8 10 9&lt;br /&gt;
&lt;br /&gt;
== Exemplu 2 ==&lt;br /&gt;
; elimin_primein.txt&lt;br /&gt;
 20&lt;br /&gt;
 4 23 16 -7 89 115 23 11 15 2 -8 -9 21 0 75 23 32 -1 4 5&lt;br /&gt;
; elimin_primeout.txt&lt;br /&gt;
 4 23 16 89 23 -8 21 32 4 -7 115 11 2 0 5 15 -9 75 -1 23&lt;br /&gt;
&lt;br /&gt;
== Atentie! ==&lt;br /&gt;
 Programele vor folosi doar instrucțiunile de bază ale limbajului de programare ales, inclusiv cele de intrare/ieșire, dar nu și alte funcții din biblioteci specializate (&#039;&#039;&#039;algorithm&#039;&#039;&#039;, &#039;&#039;&#039;string&#039;&#039;&#039;,…).&lt;br /&gt;
&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
def este_prim(n):&lt;br /&gt;
    if n &amp;lt; 2:&lt;br /&gt;
        return False&lt;br /&gt;
    if n == 2:&lt;br /&gt;
        return True&lt;br /&gt;
    if n % 2 == 0:&lt;br /&gt;
        return False&lt;br /&gt;
    p = 3&lt;br /&gt;
    while p * p &amp;lt;= n:&lt;br /&gt;
        if n % p == 0:&lt;br /&gt;
            return False&lt;br /&gt;
        p += 2&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
    sir = list(map(int, input().split()))&lt;br /&gt;
&lt;br /&gt;
    if len(sir) &amp;gt; 100000:&lt;br /&gt;
        print(&amp;quot;Datele de intrare nu corespund restrictiilor impuse&amp;quot;)&lt;br /&gt;
        return&lt;br /&gt;
&lt;br /&gt;
    eliminat = []&lt;br /&gt;
&lt;br /&gt;
    while sir:&lt;br /&gt;
        eliminat.append(sir.pop(0))&lt;br /&gt;
        i = 1&lt;br /&gt;
        while i &amp;lt; len(sir):&lt;br /&gt;
            if este_prim(i+1):&lt;br /&gt;
                eliminat.append(sir.pop(i))&lt;br /&gt;
            else:&lt;br /&gt;
                i += 1&lt;br /&gt;
&lt;br /&gt;
    print(&amp;quot;Datele de intrare corespund restrictiilor impuse&amp;quot;)&lt;br /&gt;
    print(&#039; &#039;.join(map(str, eliminat)))&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>Brianna Waltner</name></author>
	</entry>
</feed>