<?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=Miawinator</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=Miawinator"/>
	<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/wiki/Special:Contributions/Miawinator"/>
	<updated>2026-05-01T04:30:09Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.42.1</generator>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=3045_-_Pro_3&amp;diff=9063</id>
		<title>3045 - Pro 3</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=3045_-_Pro_3&amp;diff=9063"/>
		<updated>2024-01-05T02:52:28Z</updated>

		<summary type="html">&lt;p&gt;Miawinator: Pagină nouă: Se consideră 3 progresii aritmetice de numere naturale nenule. Notăm cu &amp;lt;code&amp;gt;Pi&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;1 ≤ i ≤ 3&amp;lt;/code&amp;gt;, mulțimile formate cu elementele progresiei &amp;lt;code&amp;gt;i&amp;lt;/code&amp;gt;. Fie &amp;lt;code&amp;gt;P = P1&amp;lt;/code&amp;gt;  &amp;lt;code&amp;gt;P2&amp;lt;/code&amp;gt;  &amp;lt;code&amp;gt;P3&amp;lt;/code&amp;gt; reuniunea mulțimilor &amp;lt;code&amp;gt;P1&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;P2&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;P3&amp;lt;/code&amp;gt;.  = Cerința = Să se determine cardinalul mulțimii &amp;lt;code&amp;gt;P&amp;lt;/code&amp;gt;.  = Date de intrare = Fișierul de intrare &amp;lt;code&amp;gt;input.txt&amp;lt;/code&amp;gt; conține &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt; linii. Pe l...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Se consideră 3 progresii aritmetice de numere naturale nenule. Notăm cu &amp;lt;code&amp;gt;Pi&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;1 ≤ i ≤ 3&amp;lt;/code&amp;gt;, mulțimile formate cu elementele progresiei &amp;lt;code&amp;gt;i&amp;lt;/code&amp;gt;. Fie &amp;lt;code&amp;gt;P = P1&amp;lt;/code&amp;gt;  &amp;lt;code&amp;gt;P2&amp;lt;/code&amp;gt;  &amp;lt;code&amp;gt;P3&amp;lt;/code&amp;gt; reuniunea mulțimilor &amp;lt;code&amp;gt;P1&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;P2&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;P3&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= Cerința =&lt;br /&gt;
Să se determine cardinalul mulțimii &amp;lt;code&amp;gt;P&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= Date de intrare =&lt;br /&gt;
Fișierul de intrare &amp;lt;code&amp;gt;input.txt&amp;lt;/code&amp;gt; conține &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt; linii. Pe linia &amp;lt;code&amp;gt;i&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;1 ≤ i ≤ 3&amp;lt;/code&amp;gt; se vor găsi câte trei numere naturale &amp;lt;code&amp;gt;ai&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;ri&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;ni&amp;lt;/code&amp;gt;, separate prin câte un spațiu, ce reprezintă în această ordine primul termen, rația și numărul de termeni ai progresiei &amp;lt;code&amp;gt;Pi&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= Date de ieșire =&lt;br /&gt;
Fișierul de ieșire &amp;lt;code&amp;gt;output.txt&amp;lt;/code&amp;gt; va conține pe prima linie cardinalul mulțimii &amp;lt;code&amp;gt;P&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Exemplu ==&lt;br /&gt;
input.txt:&lt;br /&gt;
&lt;br /&gt;
2 2 10&lt;br /&gt;
&lt;br /&gt;
3 4 8&lt;br /&gt;
&lt;br /&gt;
1 3 12&lt;br /&gt;
&lt;br /&gt;
output.txt:&lt;br /&gt;
&lt;br /&gt;
24&lt;br /&gt;
&lt;br /&gt;
Explicație:&lt;br /&gt;
&lt;br /&gt;
Prima progresie are primul termen &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt;, rația &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt; și &amp;lt;code&amp;gt;10&amp;lt;/code&amp;gt; termeni.&lt;br /&gt;
&lt;br /&gt;
A doua progresie are primul termen &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt;, rația &amp;lt;code&amp;gt;4&amp;lt;/code&amp;gt; și &amp;lt;code&amp;gt;8&amp;lt;/code&amp;gt; termeni.&lt;br /&gt;
&lt;br /&gt;
A treia progresie are primul termen &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;, rația &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt; și &amp;lt;code&amp;gt;12&amp;lt;/code&amp;gt; termeni.&lt;br /&gt;
&lt;br /&gt;
Așadar:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;P1&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;= {2, 4, 6, 8, 10, 12, 14, 16, 18, 20}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;P2&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;= {3, 7, 11, 15, 19, 23, 27, 31}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;P3&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;= {1, 4, 7, 10, 13, 16, 19, 22, 25, 28, 31, 34}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Reuniunea termenilor celor trei progresii este mulțimea&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;P = {1, 2, 3, 4, 6, 7, 8, 10, 11, 12, 13, 14, 15, 16, 18, 19, 20, 22, 23, 25, 27, 28, 31, 34}&amp;lt;/code&amp;gt; și cardinalul mulțimii &amp;lt;code&amp;gt;P&amp;lt;/code&amp;gt; este &amp;lt;code&amp;gt;24&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python3&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
class Progresie:&lt;br /&gt;
    def __init__(self, first, ratio, n):&lt;br /&gt;
        self.first = first&lt;br /&gt;
        self.ratio = ratio&lt;br /&gt;
        self.n = n&lt;br /&gt;
&lt;br /&gt;
def read():&lt;br /&gt;
    with open(&amp;quot;input.txt&amp;quot;, &amp;quot;r&amp;quot;) as f:&lt;br /&gt;
        x_values = list(map(int, f.readline().split()))&lt;br /&gt;
        y_values = list(map(int, f.readline().split()))&lt;br /&gt;
        z_values = list(map(int, f.readline().split()))&lt;br /&gt;
    &lt;br /&gt;
    return Progresie(*x_values), Progresie(*y_values), Progresie(*z_values)&lt;br /&gt;
&lt;br /&gt;
def cmmdc(a, b):&lt;br /&gt;
    while b != 0:&lt;br /&gt;
        a, b = b, a % b&lt;br /&gt;
    return a&lt;br /&gt;
&lt;br /&gt;
def cmmmc(a, b):&lt;br /&gt;
    return a * b // cmmdc(a, b)&lt;br /&gt;
&lt;br /&gt;
def calc(a, b):&lt;br /&gt;
    Maxa = a.first + a.ratio * (a.n - 1)&lt;br /&gt;
    Maxb = b.first + b.ratio * (b.n - 1)&lt;br /&gt;
    Min = min(Maxa, Maxb)&lt;br /&gt;
    for i in range(int(1e6)):&lt;br /&gt;
        nr = a.first + i * a.ratio&lt;br /&gt;
        if nr &amp;gt;= b.first and nr &amp;lt;= Min and (nr - b.first) % b.ratio == 0:&lt;br /&gt;
            return Progresie(nr, cmmmc(a.ratio, b.ratio), (Min - nr) // cmmmc(a.ratio, b.ratio) + 1)&lt;br /&gt;
    return Progresie(0, 0, 0)&lt;br /&gt;
&lt;br /&gt;
def solve(x, y, z):&lt;br /&gt;
    xy = calc(x, y)&lt;br /&gt;
    xz = calc(x, z)&lt;br /&gt;
    yz = calc(y, z)&lt;br /&gt;
    xyz = calc(xy, z)&lt;br /&gt;
    return x.n + y.n + z.n - xy.n - xz.n - yz.n + xyz.n&lt;br /&gt;
&lt;br /&gt;
def output(rez):&lt;br /&gt;
    with open(&amp;quot;output.txt&amp;quot;, &amp;quot;w&amp;quot;) as g:&lt;br /&gt;
        g.write(str(rez))&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    x, y, z = read()&lt;br /&gt;
    rez = solve(x, y, z)&lt;br /&gt;
    output(rez)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Miawinator</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=3831_-_Medians&amp;diff=9062</id>
		<title>3831 - Medians</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=3831_-_Medians&amp;diff=9062"/>
		<updated>2024-01-05T02:44:51Z</updated>

		<summary type="html">&lt;p&gt;Miawinator: Pagină nouă: = Cerința = Se dă un vector cu &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; elemente. Să se determine numărul de secvențe care au medianul valorilor egal cu &amp;lt;code&amp;gt;k&amp;lt;/code&amp;gt;.  = Date de intrare = Fișierul de intrare &amp;lt;code&amp;gt;input.txt&amp;lt;/code&amp;gt; contine pe prima linie un număr &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt; reprezentând numărul de elemente din vector și un număr &amp;lt;code&amp;gt;k&amp;lt;/code&amp;gt; cu semnificația din enunț. Pe a doua linie se află &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt; elemente , elementele vectorului.  = Date de ieșire = Fișierul de ieșire...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Cerința =&lt;br /&gt;
Se dă un vector cu &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; elemente. Să se determine numărul de secvențe care au medianul valorilor egal cu &amp;lt;code&amp;gt;k&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= Date de intrare =&lt;br /&gt;
Fișierul de intrare &amp;lt;code&amp;gt;input.txt&amp;lt;/code&amp;gt; contine pe prima linie un număr &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt; reprezentând numărul de elemente din vector și un număr &amp;lt;code&amp;gt;k&amp;lt;/code&amp;gt; cu semnificația din enunț. Pe a doua linie se află &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt; elemente , elementele vectorului.&lt;br /&gt;
&lt;br /&gt;
= Date de ieșire =&lt;br /&gt;
Fișierul de ieșire &amp;lt;code&amp;gt;output.txt&amp;lt;/code&amp;gt; contine pe prima linie răspunsul.&lt;br /&gt;
&lt;br /&gt;
= Restricții și precizări =&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;N ≤ 100.000&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;K ≤ 1.000.000.000&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
input.txt:&lt;br /&gt;
&lt;br /&gt;
2 2&lt;br /&gt;
&lt;br /&gt;
1 2&lt;br /&gt;
&lt;br /&gt;
output.txt:&lt;br /&gt;
&lt;br /&gt;
1&lt;br /&gt;
&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
input.txt:&lt;br /&gt;
&lt;br /&gt;
3 5 &lt;br /&gt;
&lt;br /&gt;
5 1 5&lt;br /&gt;
&lt;br /&gt;
output.txt:&lt;br /&gt;
&lt;br /&gt;
3&lt;br /&gt;
&lt;br /&gt;
== Exemplul 3 ==&lt;br /&gt;
input.txt:&lt;br /&gt;
&lt;br /&gt;
3 99999999999&lt;br /&gt;
&lt;br /&gt;
5 1 5 &lt;br /&gt;
&lt;br /&gt;
Output:&lt;br /&gt;
&lt;br /&gt;
Invalid input constraints.&lt;br /&gt;
&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python3&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
MOD = 666013&lt;br /&gt;
Nmax = 100001&lt;br /&gt;
Add = 100000&lt;br /&gt;
&lt;br /&gt;
def verify_constraints(n, k):&lt;br /&gt;
    if not (1 &amp;lt;= n &amp;lt;= 100000 and 1 &amp;lt;= k &amp;lt;= 1000000000):&lt;br /&gt;
        print(&amp;quot;Invalid input constraints.&amp;quot;)&lt;br /&gt;
        exit()&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def Update(pos, val):&lt;br /&gt;
    global aib&lt;br /&gt;
    i = pos&lt;br /&gt;
    while i &amp;lt; Nmax * 2:&lt;br /&gt;
        aib[i] += val&lt;br /&gt;
        i += i &amp;amp; -i&lt;br /&gt;
&lt;br /&gt;
def Query(pos):&lt;br /&gt;
    global aib&lt;br /&gt;
    i = pos&lt;br /&gt;
    sum_ = 0&lt;br /&gt;
    while i &amp;gt; 0:&lt;br /&gt;
        sum_ += aib[i]&lt;br /&gt;
        i -= i &amp;amp; -i&lt;br /&gt;
    return sum_&lt;br /&gt;
&lt;br /&gt;
def Fx(k):&lt;br /&gt;
    global n, V, aib&lt;br /&gt;
&lt;br /&gt;
    aib = [0] * (Nmax * 2)&lt;br /&gt;
&lt;br /&gt;
    S = [0] * (n + 1)&lt;br /&gt;
&lt;br /&gt;
    for i in range(1, n + 1):&lt;br /&gt;
        if V[i] &amp;gt; k:&lt;br /&gt;
            S[i] = -1&lt;br /&gt;
        else:&lt;br /&gt;
            S[i] = 1&lt;br /&gt;
&lt;br /&gt;
    for i in range(2, n + 1):&lt;br /&gt;
        S[i] += S[i - 1]&lt;br /&gt;
&lt;br /&gt;
    for i in range(1, n + 1):&lt;br /&gt;
        Update(S[i] + Add, 1)&lt;br /&gt;
&lt;br /&gt;
    s = 0&lt;br /&gt;
&lt;br /&gt;
    for i in range(1, n + 1):&lt;br /&gt;
        s += Query(S[i] + Add - 1)&lt;br /&gt;
&lt;br /&gt;
        if S[i] &amp;lt; 0:&lt;br /&gt;
            s += 1&lt;br /&gt;
&lt;br /&gt;
        Update(S[i] + Add, -1)&lt;br /&gt;
&lt;br /&gt;
    return s&lt;br /&gt;
&lt;br /&gt;
with open(&amp;quot;input.txt&amp;quot;, &amp;quot;r&amp;quot;) as fin, open(&amp;quot;output.txt&amp;quot;, &amp;quot;w&amp;quot;) as fout:&lt;br /&gt;
    n, k = map(int, fin.readline().split())&lt;br /&gt;
    verify_constraints(n,k)&lt;br /&gt;
    V = [0] + list(map(int, fin.readline().split()))&lt;br /&gt;
&lt;br /&gt;
    sk = Fx(k)&lt;br /&gt;
    skk = Fx(k - 1)&lt;br /&gt;
&lt;br /&gt;
    fout.write(str(abs(sk - skk)))&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Miawinator</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=3758_-_inno&amp;diff=9061</id>
		<title>3758 - inno</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=3758_-_inno&amp;diff=9061"/>
		<updated>2024-01-05T02:39:28Z</updated>

		<summary type="html">&lt;p&gt;Miawinator: Pagină nouă: Se dau numerele naturale &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; și &amp;lt;code&amp;gt;k&amp;lt;/code&amp;gt;, precum și un șir &amp;lt;code&amp;gt;a[1]&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;a[2]&amp;lt;/code&amp;gt; ,…, &amp;lt;code&amp;gt;a[n]&amp;lt;/code&amp;gt; de numere naturale nenule. Din șir de poate elimina o singură secvență (eventual vidă) &amp;lt;code&amp;gt;a[i]&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;a[i+1]&amp;lt;/code&amp;gt;, …, &amp;lt;code&amp;gt;a[j]&amp;lt;/code&amp;gt; astfel că în șir rămân elementele &amp;lt;code&amp;gt;a[1]&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;a[2]&amp;lt;/code&amp;gt;, …, &amp;lt;code&amp;gt;a[i-1]&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;a[j+1]&amp;lt;/code&amp;gt;, …, &amp;lt;code&amp;gt;a[n]&amp;lt;/code&amp;gt;.  De exemplu, din șirul &amp;lt;code&amp;gt;a=(1,2,...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Se dau numerele naturale &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; și &amp;lt;code&amp;gt;k&amp;lt;/code&amp;gt;, precum și un șir &amp;lt;code&amp;gt;a[1]&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;a[2]&amp;lt;/code&amp;gt; ,…, &amp;lt;code&amp;gt;a[n]&amp;lt;/code&amp;gt; de numere naturale nenule. Din șir de poate elimina o singură secvență (eventual vidă) &amp;lt;code&amp;gt;a[i]&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;a[i+1]&amp;lt;/code&amp;gt;, …, &amp;lt;code&amp;gt;a[j]&amp;lt;/code&amp;gt; astfel că în șir rămân elementele &amp;lt;code&amp;gt;a[1]&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;a[2]&amp;lt;/code&amp;gt;, …, &amp;lt;code&amp;gt;a[i-1]&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;a[j+1]&amp;lt;/code&amp;gt;, …, &amp;lt;code&amp;gt;a[n]&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
De exemplu, din șirul &amp;lt;code&amp;gt;a=(1,2,3,4,5,7)&amp;lt;/code&amp;gt; se poate elimina secvența &amp;lt;code&amp;gt;3,4,5&amp;lt;/code&amp;gt; și rămâne &amp;lt;code&amp;gt;1,2,7&amp;lt;/code&amp;gt;; sau se poate elimina secvența vidă și rămâne șirul inițial &amp;lt;code&amp;gt;1,2,3,4,5,7&amp;lt;/code&amp;gt;; sau se poate elimina &amp;lt;code&amp;gt;1,2,3,4&amp;lt;/code&amp;gt; și rămâne șirul &amp;lt;code&amp;gt;5,7&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
După eliminarea secvenței, elementele rămase formează un șir inno dacă aplicându-se operația &amp;lt;code&amp;gt;&amp;amp;&amp;lt;/code&amp;gt; pe biți asupra lor rezultatul este un număr care are cel puțin &amp;lt;code&amp;gt;k&amp;lt;/code&amp;gt; biți de &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; în baza &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt;. De exemplu, dacă &amp;lt;code&amp;gt;a=(1,2,3,4,5,7)&amp;lt;/code&amp;gt; și &amp;lt;code&amp;gt;k=2&amp;lt;/code&amp;gt;, atunci prin eliminarea secvenței &amp;lt;code&amp;gt;1,2,3,4&amp;lt;/code&amp;gt; rămân elementele &amp;lt;code&amp;gt;5,7&amp;lt;/code&amp;gt;, iar &amp;lt;code&amp;gt;5 &amp;amp; 7 = 5&amp;lt;/code&amp;gt;, care are &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt; biți de &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; în baza &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt;. Dar dacă se elimină secvența &amp;lt;code&amp;gt;3,4,5&amp;lt;/code&amp;gt; atunci rămân elementele &amp;lt;code&amp;gt;1,2,7&amp;lt;/code&amp;gt;, iar &amp;lt;code&amp;gt;1 &amp;amp; 2 &amp;amp; 7 = 0&amp;lt;/code&amp;gt;, deci nu este șir inno.&lt;br /&gt;
&lt;br /&gt;
= Cerința =&lt;br /&gt;
Să se determine în câte moduri se poate elimina o secvență astfel încât elementele rămase să formeze șir inno.&lt;br /&gt;
&lt;br /&gt;
= Date de intrare =&lt;br /&gt;
Fișierul de intrare &amp;lt;code&amp;gt;input.txt&amp;lt;/code&amp;gt; conține pe prima linie numerele naturale &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; și &amp;lt;code&amp;gt;k&amp;lt;/code&amp;gt;. Pe linia a doua se află &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; numere naturale reprezentând elementele șirului.&lt;br /&gt;
&lt;br /&gt;
= Date de ieșire =&lt;br /&gt;
Fișierul de ieșire &amp;lt;code&amp;gt;output.txt&amp;lt;/code&amp;gt; va conține pe prima linie un singur număr natural reprezentând numărul de moduri de a elimina o secvență astfel încât șirul rămas să fie inno.&lt;br /&gt;
&lt;br /&gt;
= Restricții și precizări =&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;3 ≤ n ≤ 200.000&amp;lt;/code&amp;gt;;&lt;br /&gt;
* &amp;lt;code&amp;gt;1 ≤ k ≤ 29&amp;lt;/code&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
input.txt:&lt;br /&gt;
&lt;br /&gt;
4 2&lt;br /&gt;
&lt;br /&gt;
10 7 5 15&lt;br /&gt;
&lt;br /&gt;
output.txt:&lt;br /&gt;
&lt;br /&gt;
5&lt;br /&gt;
&lt;br /&gt;
Explicație:&lt;br /&gt;
&lt;br /&gt;
Modalitățile sunt:&lt;br /&gt;
&lt;br /&gt;
- se elimină &amp;lt;code&amp;gt;10&amp;lt;/code&amp;gt; și rămâne șirul &amp;lt;code&amp;gt;7 5 15&amp;lt;/code&amp;gt;, iar &amp;lt;code&amp;gt;7 &amp;amp; 5 &amp;amp; 15 = 5&amp;lt;/code&amp;gt;, care are &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt; biți de &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
- se elimină &amp;lt;code&amp;gt;10 7&amp;lt;/code&amp;gt; și rămâne șirul &amp;lt;code&amp;gt;5 15&amp;lt;/code&amp;gt;, iar &amp;lt;code&amp;gt;5 &amp;amp; 15 = 5&amp;lt;/code&amp;gt;, care are &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt; biți de &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
- se elimină &amp;lt;code&amp;gt;10 7 5&amp;lt;/code&amp;gt; și rămâne șirul &amp;lt;code&amp;gt;15&amp;lt;/code&amp;gt;, iar &amp;lt;code&amp;gt;15&amp;lt;/code&amp;gt; are &amp;lt;code&amp;gt;4&amp;lt;/code&amp;gt; biți de &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
- se elimină &amp;lt;code&amp;gt;7 5&amp;lt;/code&amp;gt; și rămâne șirul &amp;lt;code&amp;gt;10 15&amp;lt;/code&amp;gt;, iar &amp;lt;code&amp;gt;10 &amp;amp; 15 = 10&amp;lt;/code&amp;gt; are &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt; biți de &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
- se elimină &amp;lt;code&amp;gt;7 5 15&amp;lt;/code&amp;gt; și rămâne șirul &amp;lt;code&amp;gt;10&amp;lt;/code&amp;gt;, iar &amp;lt;code&amp;gt;10&amp;lt;/code&amp;gt; are &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt; biți de &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
input.txt:&lt;br /&gt;
&lt;br /&gt;
5 4&lt;br /&gt;
&lt;br /&gt;
7 7 6 1 62&lt;br /&gt;
&lt;br /&gt;
output.txt:&lt;br /&gt;
&lt;br /&gt;
1&lt;br /&gt;
&lt;br /&gt;
Explicație:&lt;br /&gt;
&lt;br /&gt;
Singura posibilitate este eliminarea secvenței &amp;lt;code&amp;gt;7 7 6 1&amp;lt;/code&amp;gt;. Rămâne doar numărul &amp;lt;code&amp;gt;62&amp;lt;/code&amp;gt;, care are &amp;lt;code&amp;gt;5&amp;lt;/code&amp;gt; biți de &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Exemplul 3 ==&lt;br /&gt;
input.txt:&lt;br /&gt;
&lt;br /&gt;
999999999999 4&lt;br /&gt;
&lt;br /&gt;
7 7 6 1 62&lt;br /&gt;
&lt;br /&gt;
Output:&lt;br /&gt;
&lt;br /&gt;
Invalid input constraints.&lt;br /&gt;
&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python3&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
def verify_constraints(n, k):&lt;br /&gt;
    if not (3 &amp;lt;= n &amp;lt;= 200000 and 1 &amp;lt;= k &amp;lt;= 29):&lt;br /&gt;
        print(&amp;quot;Invalid input constraints.&amp;quot;)&lt;br /&gt;
        exit()&lt;br /&gt;
&lt;br /&gt;
def count_bit(v):&lt;br /&gt;
    v = v - ((v &amp;gt;&amp;gt; 1) &amp;amp; 0x55555555)&lt;br /&gt;
    v = (v &amp;amp; 0x33333333) + ((v &amp;gt;&amp;gt; 2) &amp;amp; 0x33333333)&lt;br /&gt;
    c = ((v + (v &amp;gt;&amp;gt; 4) &amp;amp; 0xF0F0F0F) * 0x1010101) &amp;gt;&amp;gt; 24&lt;br /&gt;
    return c&lt;br /&gt;
&lt;br /&gt;
def bsearch(p, u, key, k):&lt;br /&gt;
    m = 0&lt;br /&gt;
    while p &amp;lt; u:&lt;br /&gt;
        m = (p + u) // 2&lt;br /&gt;
        if dr[m] &amp;amp; key &amp;lt; k:&lt;br /&gt;
            p = m + 1&lt;br /&gt;
        else:&lt;br /&gt;
            u = m&lt;br /&gt;
&lt;br /&gt;
    m = (p + u) // 2&lt;br /&gt;
    if dr[m] &amp;amp; key &amp;lt; k:&lt;br /&gt;
        m += 1&lt;br /&gt;
    return m&lt;br /&gt;
&lt;br /&gt;
with open(&amp;quot;input.txt&amp;quot;, &amp;quot;r&amp;quot;) as fin, open(&amp;quot;output.txt&amp;quot;, &amp;quot;w&amp;quot;) as fout:&lt;br /&gt;
    n, k = map(int, fin.readline().split())&lt;br /&gt;
    verify_constraints(n,k)&lt;br /&gt;
    a = [0] + list(map(int, fin.readline().split()))&lt;br /&gt;
    st = [0] * (n + 1)&lt;br /&gt;
    dr = [0] * (n + 1)&lt;br /&gt;
    x = -1&lt;br /&gt;
    y = 0&lt;br /&gt;
    val = 0&lt;br /&gt;
    sol = 0&lt;br /&gt;
&lt;br /&gt;
    st[1] = a[1]&lt;br /&gt;
    dr[n] = a[n]&lt;br /&gt;
&lt;br /&gt;
    for i in range(2, n + 1):&lt;br /&gt;
        st[i] = st[i - 1] &amp;amp; a[i]&lt;br /&gt;
&lt;br /&gt;
    for i in range(n - 1, 0, -1):&lt;br /&gt;
        dr[i] = dr[i + 1] &amp;amp; a[i]&lt;br /&gt;
&lt;br /&gt;
    if count_bit(st[1]) &amp;lt; k:&lt;br /&gt;
        x = 0&lt;br /&gt;
&lt;br /&gt;
    if count_bit(dr[n]) &amp;lt; k:&lt;br /&gt;
        y = n + 1&lt;br /&gt;
&lt;br /&gt;
    if x &amp;lt; 0:&lt;br /&gt;
        x = 1&lt;br /&gt;
        i = 2&lt;br /&gt;
        while i &amp;lt;= n:&lt;br /&gt;
            if count_bit(st[i]) &amp;gt;= k:&lt;br /&gt;
                x = i&lt;br /&gt;
            i += 1&lt;br /&gt;
&lt;br /&gt;
    if not y:&lt;br /&gt;
        y = n&lt;br /&gt;
        i = n - 1&lt;br /&gt;
        while i &amp;gt;= 1:&lt;br /&gt;
            if count_bit(dr[i]) &amp;gt;= k:&lt;br /&gt;
                y = i&lt;br /&gt;
            i -= 1&lt;br /&gt;
&lt;br /&gt;
    if x == n:&lt;br /&gt;
        fout.write(str(n * (n + 1) // 2))&lt;br /&gt;
    elif x == 0 and y == n + 1:&lt;br /&gt;
        fout.write(&amp;quot;0&amp;quot;)&lt;br /&gt;
    elif 1 &amp;lt;= x &amp;lt; n and y == n + 1:&lt;br /&gt;
        fout.write(str(x))&lt;br /&gt;
    elif x == 0 and 1 &amp;lt; y &amp;lt;= n:&lt;br /&gt;
        fout.write(str(n - y + 1))&lt;br /&gt;
    elif x == 0 and y == 0:&lt;br /&gt;
        fout.write(&amp;quot;1&amp;quot;)&lt;br /&gt;
    else:&lt;br /&gt;
        sol = n - y + 1&lt;br /&gt;
        for i in range(1, x + 1):&lt;br /&gt;
            val = bsearch(y, n, st[i], k)&lt;br /&gt;
            sol += (n - val + 2)&lt;br /&gt;
&lt;br /&gt;
        fout.write(str(sol))&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Miawinator</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=3748_-_Secvente5&amp;diff=9060</id>
		<title>3748 - Secvente5</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=3748_-_Secvente5&amp;diff=9060"/>
		<updated>2024-01-05T02:34:52Z</updated>

		<summary type="html">&lt;p&gt;Miawinator: Pagină nouă: Se consideră un șir cu &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt; elemente numere întregi. Definim următoarele noțiuni:  * secvență în șir = elemente situate pe poziții consecutive în șir * lungimea unei secvențe = numărul de elemente care o formează * suma unei secvențe = suma elementelor care o formează * secvența nebanală = secvența de lungime cel puțin egală cu &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt; * N-secvență = secvență a cărei sumă este divizibilă cu &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt; (secvența poate fi și b...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Se consideră un șir cu &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt; elemente numere întregi. Definim următoarele noțiuni:&lt;br /&gt;
&lt;br /&gt;
* secvență în șir = elemente situate pe poziții consecutive în șir&lt;br /&gt;
* lungimea unei secvențe = numărul de elemente care o formează&lt;br /&gt;
* suma unei secvențe = suma elementelor care o formează&lt;br /&gt;
* secvența nebanală = secvența de lungime cel puțin egală cu &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt;&lt;br /&gt;
* N-secvență = secvență a cărei sumă este divizibilă cu &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt; (secvența poate fi și banală)&lt;br /&gt;
* N-secvență nebanală = secvență nebanală a cărei sumă este divizibilă cu &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= Cerințe =&lt;br /&gt;
Scrieți un program care să citească numărul natural &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt; și apoi șirul de &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt; elemente. Programul determină:&lt;br /&gt;
&lt;br /&gt;
# numărul de N-secvențe nebanale, din șir;&lt;br /&gt;
# cea mai mare lungime a unei N-secvențe din șir;&lt;br /&gt;
# cea mai mare sumă a unei N-secvențe din șir.&lt;br /&gt;
&lt;br /&gt;
= Date de intrare =&lt;br /&gt;
Fișierul de intrare &amp;lt;code&amp;gt;input.txt&amp;lt;/code&amp;gt; conține pe prima linie numere naturale &amp;lt;code&amp;gt;C&amp;lt;/code&amp;gt; și &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt; separate printr-un singur spațiu. &amp;lt;code&amp;gt;C&amp;lt;/code&amp;gt; reprezentând cerința care trebuie rezolvată (&amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt; sau &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
= Date de ieșire =&lt;br /&gt;
Fișierul &amp;lt;code&amp;gt;output.txt&amp;lt;/code&amp;gt; va conține pe prima linie un număr natural reprezentând:&lt;br /&gt;
&lt;br /&gt;
* dacă &amp;lt;code&amp;gt;C = 1&amp;lt;/code&amp;gt;, numărul de &amp;lt;code&amp;gt;N-secvențe nebanale&amp;lt;/code&amp;gt; din șir (răspunsul la cerința &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;);&lt;br /&gt;
* dacă &amp;lt;code&amp;gt;C = 2&amp;lt;/code&amp;gt;, cea mai mare lungime a unei &amp;lt;code&amp;gt;N-secvențe&amp;lt;/code&amp;gt; din șir (răspunsul la cerința &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt;);&lt;br /&gt;
* dacă &amp;lt;code&amp;gt;C = 3&amp;lt;/code&amp;gt;, cea mai mare sumă a unei &amp;lt;code&amp;gt;N-secvențe&amp;lt;/code&amp;gt; din șir (răspunsul la cerința &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
= Restricții și precizări =&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;2 ≤ N ≤ 100.000&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
input.txt:&lt;br /&gt;
&lt;br /&gt;
1 10&lt;br /&gt;
&lt;br /&gt;
-9 -3 4 -10 -1 -16 18 18 -10 50&lt;br /&gt;
&lt;br /&gt;
output.txt:&lt;br /&gt;
&lt;br /&gt;
8&lt;br /&gt;
&lt;br /&gt;
Explicație:&lt;br /&gt;
&lt;br /&gt;
Se rezolvă cerința &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;. Șirul are &amp;lt;code&amp;gt;N=10&amp;lt;/code&amp;gt; elemente întregi: &amp;lt;code&amp;gt;-9, -3, 4, -10, -1, -16, 18, 18, -10, 50&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Cele &amp;lt;code&amp;gt;N-secvențe nebanale&amp;lt;/code&amp;gt; sunt &amp;lt;code&amp;gt;(-3, 4, -10, -1)&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;(-16, 18, 18)&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;(-10, 50)&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;(-16, 18, 18, -10)&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;(-16, 18, 18, -10, 50)&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;(-3, 4, -10, -1, -16, 18, 18)&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;(-3, 4, -10, -1, -16, 18, 18, -10)&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;(-3, 4, -10, -1, -16, 18, 18, -10, 50)&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
input.txt:&lt;br /&gt;
&lt;br /&gt;
2 10&lt;br /&gt;
&lt;br /&gt;
9 -3 4 -10 -1 -16 18 18 -10 50&lt;br /&gt;
&lt;br /&gt;
output.txt:&lt;br /&gt;
&lt;br /&gt;
9&lt;br /&gt;
&lt;br /&gt;
Explicație:&lt;br /&gt;
&lt;br /&gt;
Se rezolvă cerința &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt;. Șirul are &amp;lt;code&amp;gt;N=10&amp;lt;/code&amp;gt; elemente întregi: &amp;lt;code&amp;gt;-9, -3, 4, -10, -1, -16, 18, 18, -10, 50&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Cea mai lungă dintre aceste secvențe este N-secvența &amp;lt;code&amp;gt;(-3, 4,-10,-1,-16,18,18,-10,50)&amp;lt;/code&amp;gt;. Lungimea acestei secvențe este &amp;lt;code&amp;gt;9&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Exemplul 3 ==&lt;br /&gt;
input.txt:&lt;br /&gt;
&lt;br /&gt;
3 10&lt;br /&gt;
&lt;br /&gt;
9 -3 4 -10 -1 -16 18 18 -10 50&lt;br /&gt;
&lt;br /&gt;
output.txt:&lt;br /&gt;
&lt;br /&gt;
60&lt;br /&gt;
&lt;br /&gt;
Explicație:&lt;br /&gt;
&lt;br /&gt;
Se rezolvă cerința &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt;. Șirul are &amp;lt;code&amp;gt;N=10&amp;lt;/code&amp;gt; elemente întregi: &amp;lt;code&amp;gt;-9, -3, 4, -10, -1, -16, 18, 18, -10, 50&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Suma maximă a unei secvente este &amp;lt;code&amp;gt;60&amp;lt;/code&amp;gt; ( suma N-secvenței: &amp;lt;code&amp;gt;-16,18,18,-10,50&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
== Exemplul 4 ==&lt;br /&gt;
input.txt:&lt;br /&gt;
&lt;br /&gt;
3 999999999999&lt;br /&gt;
&lt;br /&gt;
-9 -3 4 -10 -1 -16 18 18 -10 50&lt;br /&gt;
&lt;br /&gt;
Output:&lt;br /&gt;
&lt;br /&gt;
Input-ul nu convine conditiilor&lt;br /&gt;
&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python3&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
def verificare(n):&lt;br /&gt;
    if not(2&amp;lt;=n&amp;lt;=100000):&lt;br /&gt;
        print(&amp;quot;Input-ul nu convine conditiilor&amp;quot;)&lt;br /&gt;
        exit()&lt;br /&gt;
&lt;br /&gt;
with open(&amp;quot;input.txt&amp;quot;, &amp;quot;r&amp;quot;) as f, open(&amp;quot;output.txt&amp;quot;, &amp;quot;w&amp;quot;) as g:&lt;br /&gt;
    C, N = map(int, f.readline().split())&lt;br /&gt;
    verificare(N)&lt;br /&gt;
    v = [0] * 100001&lt;br /&gt;
    prim = [0] * 100001&lt;br /&gt;
    ult = [0] * 100001&lt;br /&gt;
    s = [0] * 100001&lt;br /&gt;
    rest = [0] * 100001&lt;br /&gt;
    nrv = 0&lt;br /&gt;
    nrs = 0&lt;br /&gt;
    i = 0&lt;br /&gt;
    sc = 0&lt;br /&gt;
    r = 0&lt;br /&gt;
    smax = 0&lt;br /&gt;
    lgmax = 0&lt;br /&gt;
    lg = 0&lt;br /&gt;
    srest = [0] * 100001&lt;br /&gt;
    sumaseccurenta = 0&lt;br /&gt;
&lt;br /&gt;
    l=list(map(int, f.readline().split()))&lt;br /&gt;
&lt;br /&gt;
    for i in range(1, N + 1):&lt;br /&gt;
        x = l[i-1]&lt;br /&gt;
        if x % N == 0:&lt;br /&gt;
            nrv += 1&lt;br /&gt;
            smax = max(smax, x)&lt;br /&gt;
        s[i] = s[i - 1] + x&lt;br /&gt;
        r = s[i] % N&lt;br /&gt;
        if r == 0:&lt;br /&gt;
            smax = max(smax, s[i])&lt;br /&gt;
            lgmax = max(lgmax, i)&lt;br /&gt;
        if r &amp;lt; 0:&lt;br /&gt;
            r = N + r&lt;br /&gt;
        rest[r] += 1&lt;br /&gt;
        if prim[r] == 0:&lt;br /&gt;
            ult[r] = prim[r] = i&lt;br /&gt;
        ult[r] = i&lt;br /&gt;
        lg = i - prim[r]&lt;br /&gt;
        if lg &amp;gt; 1 and lg &amp;gt; lgmax:&lt;br /&gt;
            lgmax = lg&lt;br /&gt;
        if rest[r] == 1:&lt;br /&gt;
            srest[r] = s[i]&lt;br /&gt;
        else:&lt;br /&gt;
            if s[i] &amp;lt; srest[r]:&lt;br /&gt;
                srest[r] = s[i]&lt;br /&gt;
            smax = max(smax, s[i] - srest[r])  # suma N-secventei curecte este s[i]-srest[r]&lt;br /&gt;
&lt;br /&gt;
    nrs = rest[0]&lt;br /&gt;
    for i in range(N):&lt;br /&gt;
        nrs = nrs + rest[i] * (rest[i] - 1) // 2&lt;br /&gt;
    nrs = nrs - nrv&lt;br /&gt;
&lt;br /&gt;
    if C == 1:&lt;br /&gt;
        g.write(str(nrs) + &amp;quot;\n&amp;quot;)&lt;br /&gt;
    elif C == 2:&lt;br /&gt;
        g.write(str(lgmax) + &amp;quot;\n&amp;quot;)&lt;br /&gt;
    else:&lt;br /&gt;
        g.write(str(smax) + &amp;quot;\n&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Miawinator</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=3708_-_selectare&amp;diff=9059</id>
		<title>3708 - selectare</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=3708_-_selectare&amp;diff=9059"/>
		<updated>2024-01-05T02:29:20Z</updated>

		<summary type="html">&lt;p&gt;Miawinator: Pagină nouă: Avem un șir &amp;lt;code&amp;gt;V&amp;lt;/code&amp;gt; format din &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; cifre nenule precum și două numere naturale &amp;lt;code&amp;gt;L&amp;lt;/code&amp;gt; și &amp;lt;code&amp;gt;K&amp;lt;/code&amp;gt;. Putem efectua următoarea operație: alegem &amp;lt;code&amp;gt;L&amp;lt;/code&amp;gt; elemente aflate unul lângă altul în șir apoi selectăm &amp;lt;code&amp;gt;K&amp;lt;/code&amp;gt; dintre ele pe care le eliminăm. Cele &amp;lt;code&amp;gt;L - K&amp;lt;/code&amp;gt; cifre se așează una lângă alta formând un număr a cărui valoare ne interesează (cifrele nu își pot schimba ordinea relativă, adică se așează...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Avem un șir &amp;lt;code&amp;gt;V&amp;lt;/code&amp;gt; format din &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; cifre nenule precum și două numere naturale &amp;lt;code&amp;gt;L&amp;lt;/code&amp;gt; și &amp;lt;code&amp;gt;K&amp;lt;/code&amp;gt;. Putem efectua următoarea operație: alegem &amp;lt;code&amp;gt;L&amp;lt;/code&amp;gt; elemente aflate unul lângă altul în șir apoi selectăm &amp;lt;code&amp;gt;K&amp;lt;/code&amp;gt; dintre ele pe care le eliminăm. Cele &amp;lt;code&amp;gt;L - K&amp;lt;/code&amp;gt; cifre se așează una lângă alta formând un număr a cărui valoare ne interesează (cifrele nu își pot schimba ordinea relativă, adică se așează în ordinea crescătoare a indicilor lor în șirul inițial).&lt;br /&gt;
&lt;br /&gt;
= Cerința =&lt;br /&gt;
Trebuie să determinăm valoarea cu număr maxim de apariții pe care o obținem cu acest procedeu. Dacă sunt mai multe valori care apar de număr maxim de ori o vom alege pe cea mai mică. Două posibilități se consideră distincte dacă diferă prin indicele în șirul dat inițial al cel puțin uneia dintre cifrele de același rang în numerele asociate.&lt;br /&gt;
&lt;br /&gt;
= Date de intrare =&lt;br /&gt;
Fișierul de intrare &amp;lt;code&amp;gt;input.txt&amp;lt;/code&amp;gt; conține pe prima linie valorile &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;L&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;K&amp;lt;/code&amp;gt;, în această ordine, separate prin câte un spațiu. Pe linia a doua se află cele &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; cifre, separate prin câte un spațiu.&lt;br /&gt;
&lt;br /&gt;
= Date de ieșire =&lt;br /&gt;
Fișierul de ieșire &amp;lt;code&amp;gt;output.txt&amp;lt;/code&amp;gt; va conține pe prima linie cea mai mică valoare care are număr maxim de apariții.&lt;br /&gt;
&lt;br /&gt;
= Restricții și precizări =&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;1 ≤ n ≤ 1000&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;1 ≤ L ≤ 6&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;L ≤ n&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;0 ≤ K ≤ 2&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
innput.txt:&lt;br /&gt;
&lt;br /&gt;
8 4 0&lt;br /&gt;
&lt;br /&gt;
2 1 2 1 2 1 2 3&lt;br /&gt;
&lt;br /&gt;
output.txt:&lt;br /&gt;
&lt;br /&gt;
1212&lt;br /&gt;
&lt;br /&gt;
Explicație:&lt;br /&gt;
&lt;br /&gt;
Avem de selectat secvențe de câte &amp;lt;code&amp;gt;4&amp;lt;/code&amp;gt; cifre și nu trebuie să eliminăm nimic. Se formează numerele: &amp;lt;code&amp;gt;2121&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;1212&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;2121&amp;lt;/code&amp;gt; și &amp;lt;code&amp;gt;1212&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;2123&amp;lt;/code&amp;gt;. Avem două valori ce se pot forma și care apar de câte două ori și o valoare ce&lt;br /&gt;
&lt;br /&gt;
se poate forma o dată. Valoarea &amp;lt;code&amp;gt;1212&amp;lt;/code&amp;gt; se poate forma de două ori și este cea mai mică dintre cele cu acest număr de apariții.&lt;br /&gt;
&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
input.txt&lt;br /&gt;
&lt;br /&gt;
5 4 2&lt;br /&gt;
&lt;br /&gt;
1 1 1 1 1&lt;br /&gt;
&lt;br /&gt;
output.txt:&lt;br /&gt;
&lt;br /&gt;
11&lt;br /&gt;
&lt;br /&gt;
Explicație:&lt;br /&gt;
&lt;br /&gt;
Evident că valoarea obținută nu poate fi decât &amp;lt;code&amp;gt;11&amp;lt;/code&amp;gt;. Ea se poate obține de &amp;lt;code&amp;gt;9&amp;lt;/code&amp;gt; ori, cu cifrele de pe pozițiile: &amp;lt;code&amp;gt;(1,2)(2,3)(3,4)(4,5)(1,3)&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;(2,4)(3,5)(1,4)(2,5)&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Exemplul 3 ==&lt;br /&gt;
input.txt:&lt;br /&gt;
&lt;br /&gt;
9999999999999 4 0&lt;br /&gt;
&lt;br /&gt;
2 1 2 1 2 1 2 3&lt;br /&gt;
&lt;br /&gt;
Output:&lt;br /&gt;
&lt;br /&gt;
Invalid input constraints.&lt;br /&gt;
&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python3&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
def verify_constraints(N, L, K):&lt;br /&gt;
    if not (1 &amp;lt;= N &amp;lt;= 1000 and 1 &amp;lt;= L &amp;lt;= 6 and L &amp;lt;= N and 0 &amp;lt;= K &amp;lt;= 2 and K &amp;lt;= L - 1):&lt;br /&gt;
        print(&amp;quot;Invalid input constraints.&amp;quot;)&lt;br /&gt;
        exit()&lt;br /&gt;
&lt;br /&gt;
with open(&amp;quot;input.txt&amp;quot;, &amp;quot;r&amp;quot;) as fin, open(&amp;quot;output.txt&amp;quot;, &amp;quot;w&amp;quot;) as fout:&lt;br /&gt;
    N, L, K = map(int, fin.readline().split())&lt;br /&gt;
    verify_constraints(N, L, K)&lt;br /&gt;
    v = list(map(int, fin.readline().split()))&lt;br /&gt;
&lt;br /&gt;
    f = [0] * 1000000&lt;br /&gt;
&lt;br /&gt;
    for s in range(L - K, L + 1):&lt;br /&gt;
        for i in range(1, N - s + 2):&lt;br /&gt;
            j = i + s - 1&lt;br /&gt;
            e = s - (L - K)&lt;br /&gt;
&lt;br /&gt;
            if e == 0:&lt;br /&gt;
                val = int(&#039;&#039;.join(map(str, v[i - 1:j])))&lt;br /&gt;
                f[val] += 1&lt;br /&gt;
&lt;br /&gt;
            if e == 1:&lt;br /&gt;
                for i1 in range(i + 1, j):&lt;br /&gt;
                    val = int(&#039;&#039;.join(map(str, v[i - 1:i1] + v[i1 + 1:j])))&lt;br /&gt;
                    f[val] += 1&lt;br /&gt;
&lt;br /&gt;
            if e == 2:&lt;br /&gt;
                for i1 in range(i + 1, j - 1):&lt;br /&gt;
                    for i2 in range(i1 + 1, j):&lt;br /&gt;
                        val = int(&#039;&#039;.join(map(str, v[i - 1:i1] + v[i1 + 1:i2] + v[i2 + 1:j])))&lt;br /&gt;
                        f[val] += 1&lt;br /&gt;
&lt;br /&gt;
    p = 10 ** L&lt;br /&gt;
    sol = max(range(p), key=lambda x: f[x])&lt;br /&gt;
    fout.write(str(sol))&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Miawinator</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=3647_-_secvente4&amp;diff=9058</id>
		<title>3647 - secvente4</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=3647_-_secvente4&amp;diff=9058"/>
		<updated>2024-01-05T02:24:34Z</updated>

		<summary type="html">&lt;p&gt;Miawinator: Pagină nouă: Se dau &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; și &amp;lt;code&amp;gt;t&amp;lt;/code&amp;gt; două numere naturale nenule și &amp;lt;code&amp;gt;S&amp;lt;/code&amp;gt; un șir binar de &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; elemente indexate de la &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;. O interschimbare în acest șir constă în alegerea a doi indici &amp;lt;code&amp;gt;i&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;j&amp;lt;/code&amp;gt; (&amp;lt;code&amp;gt;1 ≤ i, j ≤ n&amp;lt;/code&amp;gt;) și schimbarea între ele a valorilor &amp;lt;code&amp;gt;S[i]&amp;lt;/code&amp;gt; și &amp;lt;code&amp;gt;S[j]&amp;lt;/code&amp;gt;. O subsecvență de lungime &amp;lt;code&amp;gt;t&amp;lt;/code&amp;gt; a șirului &amp;lt;code&amp;gt;S&amp;lt;/code&amp;gt; reprezintă &amp;lt;code&amp;gt;t&amp;lt;/code&amp;gt; elemente aflate...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Se dau &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; și &amp;lt;code&amp;gt;t&amp;lt;/code&amp;gt; două numere naturale nenule și &amp;lt;code&amp;gt;S&amp;lt;/code&amp;gt; un șir binar de &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; elemente indexate de la &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;. O interschimbare în acest șir constă în alegerea a doi indici &amp;lt;code&amp;gt;i&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;j&amp;lt;/code&amp;gt; (&amp;lt;code&amp;gt;1 ≤ i, j ≤ n&amp;lt;/code&amp;gt;) și schimbarea între ele a valorilor &amp;lt;code&amp;gt;S[i]&amp;lt;/code&amp;gt; și &amp;lt;code&amp;gt;S[j]&amp;lt;/code&amp;gt;. O subsecvență de lungime &amp;lt;code&amp;gt;t&amp;lt;/code&amp;gt; a șirului &amp;lt;code&amp;gt;S&amp;lt;/code&amp;gt; reprezintă &amp;lt;code&amp;gt;t&amp;lt;/code&amp;gt; elemente aflate pe poziții consecutive în șirul &amp;lt;code&amp;gt;S&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= Cerința =&lt;br /&gt;
Să se determine numărul minim de interschimbări ce trebuie realizate în șirul &amp;lt;code&amp;gt;S&amp;lt;/code&amp;gt; pentru a obține două subsecvențe disjuncte de lungime &amp;lt;code&amp;gt;t&amp;lt;/code&amp;gt; formate doar din elemente egale cu &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= Date de intrare =&lt;br /&gt;
Pe prima linie a fișierului &amp;lt;code&amp;gt;input.txt&amp;lt;/code&amp;gt; se află separate printr-un spațiu numere &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; și &amp;lt;code&amp;gt;t&amp;lt;/code&amp;gt;. Pe a doua linie se află &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; caractere &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; și &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= Date de ieșire =&lt;br /&gt;
Pe prima linie a fișierului de ieșire &amp;lt;code&amp;gt;output.txt&amp;lt;/code&amp;gt; se va afișa numărul minim de interschimbări necesare pentru obținerea a două subsecvențe disjuncte de lungime &amp;lt;code&amp;gt;t&amp;lt;/code&amp;gt; formate doar din elemente egale cu &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;. Dacă acest lucru este imposibil se va afișa &amp;lt;code&amp;gt;-1&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= Restricții și precizări =&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;2 ≤ n ≤ 1.000.000&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;2 * t ≤ n&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
input.txt:&lt;br /&gt;
&lt;br /&gt;
7 2&lt;br /&gt;
&lt;br /&gt;
1010101&lt;br /&gt;
&lt;br /&gt;
output.txt:&lt;br /&gt;
&lt;br /&gt;
2&lt;br /&gt;
&lt;br /&gt;
Explicație:&lt;br /&gt;
&lt;br /&gt;
Elementul de pe poziția &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; se interschimbă cu elementul de pe poziția &amp;lt;code&amp;gt;6&amp;lt;/code&amp;gt;, iar elementul de pe poziția &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt; se interschimbă cu elementul de pe poziția &amp;lt;code&amp;gt;4&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
input.txt:&lt;br /&gt;
&lt;br /&gt;
26 3&lt;br /&gt;
&lt;br /&gt;
00010100100100010111001001&lt;br /&gt;
&lt;br /&gt;
output.txt:&lt;br /&gt;
&lt;br /&gt;
1&lt;br /&gt;
&lt;br /&gt;
Explicație:&lt;br /&gt;
&lt;br /&gt;
O secvență convenabilă se situează între pozițiile &amp;lt;code&amp;gt;4&amp;lt;/code&amp;gt; și &amp;lt;code&amp;gt;6&amp;lt;/code&amp;gt; și alta între pozițiile &amp;lt;code&amp;gt;18&amp;lt;/code&amp;gt; și &amp;lt;code&amp;gt;20&amp;lt;/code&amp;gt;. Este nevoie de o singură interschimbare pentru a pune un element de &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; pe poziția &amp;lt;code&amp;gt;5&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Exemplul 3 ==&lt;br /&gt;
input.txt:&lt;br /&gt;
&lt;br /&gt;
9999999999999999 3&lt;br /&gt;
&lt;br /&gt;
00010100100100010111001001&lt;br /&gt;
&lt;br /&gt;
Output:&lt;br /&gt;
&lt;br /&gt;
Input-ul nu convine conditiilor&lt;br /&gt;
&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python3&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
def verificare(n,t):&lt;br /&gt;
    if not(2&amp;lt;=n&amp;lt;=1000000):&lt;br /&gt;
        print(&amp;quot;Input-ul nu convine conditiilor&amp;quot;)&lt;br /&gt;
        exit()&lt;br /&gt;
    if not(2*t&amp;lt;=n):&lt;br /&gt;
        print(&amp;quot;Input-ul nu convine conditiilor&amp;quot;)&lt;br /&gt;
        exit()&lt;br /&gt;
&lt;br /&gt;
with open(&amp;quot;input.txt&amp;quot;, &amp;quot;r&amp;quot;) as f, open(&amp;quot;output.txt&amp;quot;, &amp;quot;w&amp;quot;) as g:&lt;br /&gt;
    n, k = map(str, f.readline().split())&lt;br /&gt;
    s = f.readline()&lt;br /&gt;
    n = int(n)&lt;br /&gt;
    k = int(k)&lt;br /&gt;
    verificare(n,k)&lt;br /&gt;
&lt;br /&gt;
    v = [int(ch) for ch in s]&lt;br /&gt;
    st = [0] * (n + 1)&lt;br /&gt;
    dr = [0] * (n + 1)&lt;br /&gt;
    &lt;br /&gt;
    sum_value = sum(v)&lt;br /&gt;
&lt;br /&gt;
    if sum_value &amp;lt; 2 * k:&lt;br /&gt;
        g.write(&amp;quot;-1&amp;quot;)&lt;br /&gt;
        exit()&lt;br /&gt;
&lt;br /&gt;
    sum_value = 0&lt;br /&gt;
&lt;br /&gt;
    for i in range(1, n + 1):&lt;br /&gt;
        sum_value += v[i - 1]&lt;br /&gt;
        if i - k &amp;gt;= 1:&lt;br /&gt;
            sum_value -= v[i - k - 1]&lt;br /&gt;
            st[i] = max(sum_value, st[i - 1])&lt;br /&gt;
&lt;br /&gt;
        if i == k:&lt;br /&gt;
            st[i] = sum_value&lt;br /&gt;
&lt;br /&gt;
    sum_value = 0&lt;br /&gt;
&lt;br /&gt;
    for i in range(n, 0, -1):&lt;br /&gt;
        sum_value += v[i - 1]&lt;br /&gt;
        if i + k &amp;lt;= n:&lt;br /&gt;
            sum_value -= v[i + k - 1]&lt;br /&gt;
            dr[i] = max(sum_value, dr[i + 1])&lt;br /&gt;
&lt;br /&gt;
        if i == n - k + 1:&lt;br /&gt;
            dr[i] = sum_value&lt;br /&gt;
&lt;br /&gt;
    sol = 2e9&lt;br /&gt;
&lt;br /&gt;
    for i in range(k, n - k + 1):&lt;br /&gt;
        sol = min(sol, 2 * k - st[i] - dr[i + 1])&lt;br /&gt;
&lt;br /&gt;
    g.write(str(sol))&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Miawinator</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=2939_-_Permutari4&amp;diff=9057</id>
		<title>2939 - Permutari4</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=2939_-_Permutari4&amp;diff=9057"/>
		<updated>2024-01-05T02:17:41Z</updated>

		<summary type="html">&lt;p&gt;Miawinator: Pagină nouă: = Cerința = O permutare de ordin &amp;lt;code&amp;gt;K&amp;lt;/code&amp;gt; este formată din toate numerele &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt;, …, &amp;lt;code&amp;gt;K&amp;lt;/code&amp;gt; nu neapărat în această ordine.  O secvență de lungime &amp;lt;code&amp;gt;L&amp;lt;/code&amp;gt; este formată din &amp;lt;code&amp;gt;L&amp;lt;/code&amp;gt; elemente ale șirului aflate pe poziții consecutive. Spunem că o secvență de lungime &amp;lt;code&amp;gt;L&amp;lt;/code&amp;gt; este permutare de ordin &amp;lt;code&amp;gt;L&amp;lt;/code&amp;gt; dacă ea conține toate numerele &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt;, …, &amp;lt;code&amp;gt;L&amp;lt;/code&amp;gt;, nu neapăr...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Cerința =&lt;br /&gt;
O permutare de ordin &amp;lt;code&amp;gt;K&amp;lt;/code&amp;gt; este formată din toate numerele &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt;, …, &amp;lt;code&amp;gt;K&amp;lt;/code&amp;gt; nu neapărat în această ordine.&lt;br /&gt;
&lt;br /&gt;
O secvență de lungime &amp;lt;code&amp;gt;L&amp;lt;/code&amp;gt; este formată din &amp;lt;code&amp;gt;L&amp;lt;/code&amp;gt; elemente ale șirului aflate pe poziții consecutive. Spunem că o secvență de lungime &amp;lt;code&amp;gt;L&amp;lt;/code&amp;gt; este permutare de ordin &amp;lt;code&amp;gt;L&amp;lt;/code&amp;gt; dacă ea conține toate numerele &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt;, …, &amp;lt;code&amp;gt;L&amp;lt;/code&amp;gt;, nu neapărat în această ordine.&lt;br /&gt;
&lt;br /&gt;
Se dă un șir de &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt; numere naturale nenule , ce reprezintă o permutare de ordin &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt;. Să se calculeze numărul secvențelor din șirul &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt; care au proprietatea că sunt permutări.&lt;br /&gt;
&lt;br /&gt;
= Date de intrare =&lt;br /&gt;
Fișierul de intrare &amp;lt;code&amp;gt;input.txt&amp;lt;/code&amp;gt; conține pe prima linie numărul natural &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt;, iar pe a doua linie se află primele &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt; numere naturale nenule, separate prin spațiu. Cele &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt; numere date nu sunt obligatoriu în ordine strict crescătoare.&lt;br /&gt;
&lt;br /&gt;
= Date de ieșire =&lt;br /&gt;
În fișierul de ieșire &amp;lt;code&amp;gt;output.txt&amp;lt;/code&amp;gt; se va scrie un singur număr natural reprezentând numărul secvențelor de tip permutare care apar în şirul dat.&lt;br /&gt;
&lt;br /&gt;
= Restricții și precizări =&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;1 &amp;lt; N ≤ 100.000&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
input.txt:&lt;br /&gt;
&lt;br /&gt;
7&lt;br /&gt;
&lt;br /&gt;
4 2 5 1 3 7 6&lt;br /&gt;
&lt;br /&gt;
output.txt:&lt;br /&gt;
&lt;br /&gt;
3&lt;br /&gt;
&lt;br /&gt;
Explicație:&lt;br /&gt;
&lt;br /&gt;
În şir există &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt; secvențe de tip permutare, de lungimi &amp;lt;code&amp;gt;1, 5 şi 7&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;4 2 5 1 3&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;4 2 5 1 3 7 6&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nu există secvențe permutare de lungime &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;4&amp;lt;/code&amp;gt; sau &amp;lt;code&amp;gt;6&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
input.txt:&lt;br /&gt;
&lt;br /&gt;
9999999999999&lt;br /&gt;
&lt;br /&gt;
4 2 5 1 3 7 6&lt;br /&gt;
&lt;br /&gt;
Output:&lt;br /&gt;
&lt;br /&gt;
Input-ul nu convine conditiilor&lt;br /&gt;
&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python3&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
def verificare(n):&lt;br /&gt;
    if not(1&amp;lt;=n&amp;lt;=100000):&lt;br /&gt;
        print(&amp;quot;Input-ul nu convine conditiilor&amp;quot;)&lt;br /&gt;
        exit()&lt;br /&gt;
&lt;br /&gt;
f=open(&amp;quot;input.txt&amp;quot;,&amp;quot;r&amp;quot;)&lt;br /&gt;
w=open(&amp;quot;output.txt&amp;quot;,&amp;quot;w&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
n=f.readline().split()&lt;br /&gt;
n=int(n[0])&lt;br /&gt;
verificare(n)&lt;br /&gt;
q={}&lt;br /&gt;
r=0&lt;br /&gt;
v=f.readline().split()&lt;br /&gt;
for i in range(len(v)):&lt;br /&gt;
    q[int(v[i])]=i+1&lt;br /&gt;
if 1 not in q:&lt;br /&gt;
    q[1]=0&lt;br /&gt;
if q[1]!=0:&lt;br /&gt;
    r+=1&lt;br /&gt;
a=q[1]&lt;br /&gt;
b=q[1]&lt;br /&gt;
for i in range(1,len(v)):&lt;br /&gt;
    if i not in q:&lt;br /&gt;
        q[i]=0&lt;br /&gt;
    if q[i]&amp;lt;a:&lt;br /&gt;
        a=q[i]&lt;br /&gt;
    if q[i]&amp;gt;b:&lt;br /&gt;
        b=q[i]&lt;br /&gt;
    if b-a+1==i:&lt;br /&gt;
        r+=1&lt;br /&gt;
w.write(str(r))&lt;br /&gt;
w.close()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Miawinator</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=2896_-_binar1&amp;diff=9056</id>
		<title>2896 - binar1</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=2896_-_binar1&amp;diff=9056"/>
		<updated>2024-01-05T02:13:48Z</updated>

		<summary type="html">&lt;p&gt;Miawinator: Pagină nouă: Pentru a converti un număr din zecimal în binar îl vom împărți la &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt; în mod repetat, până ce obținem câtul zero. Apoi vom colecta resturile obținute de la ultimul către primul. Aceste resturi sunt cifrele din reprezentarea binară a numărului dat, de la stânga la dreapta. De exemplu, &amp;lt;code&amp;gt;13(10)&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;= 1101(2)&amp;lt;/code&amp;gt;.  = Cerința = Scrieți un program care, pentru un șir dat de n numere naturale, rezolvă următoarele cerințe:  1) Determi...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Pentru a converti un număr din zecimal în binar îl vom împărți la &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt; în mod repetat, până ce obținem câtul zero. Apoi vom colecta resturile obținute de la ultimul către primul. Aceste resturi sunt cifrele din reprezentarea binară a numărului dat, de la stânga la dreapta. De exemplu, &amp;lt;code&amp;gt;13(10)&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;= 1101(2)&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= Cerința =&lt;br /&gt;
Scrieți un program care, pentru un șir dat de n numere naturale, rezolvă următoarele cerințe:&lt;br /&gt;
&lt;br /&gt;
1) Determină cel mai mare dintre cele &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; numere date ce are număr maxim de valori de &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; în reprezentarea binară.&lt;br /&gt;
&lt;br /&gt;
2) Determină cea mai lungă secvență de numere care au număr egal de valori de &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; în reprezentarea binară. Dacă sunt mai multe astfel de secvențe de lungime maximă, se va alege cea mai din stânga. O secvență este un subșir de numere care apar pe poziții consecutive în șirul inițial.&lt;br /&gt;
&lt;br /&gt;
= Date de intrare =&lt;br /&gt;
Fișierul de intrare &amp;lt;code&amp;gt;input.txt&amp;lt;/code&amp;gt; conţine pe prima linie numărul &amp;lt;code&amp;gt;C&amp;lt;/code&amp;gt; reprezentând cerința (&amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; sau &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt;), pe a doua linie numărul natural &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;, iar pe a treia linie &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; numere naturale separate prin câte un spațiu.&lt;br /&gt;
&lt;br /&gt;
= Date de ieșire =&lt;br /&gt;
Dacă &amp;lt;code&amp;gt;C = 1&amp;lt;/code&amp;gt;, atunci pe prima linie a fișierului de ieșire &amp;lt;code&amp;gt;output.txt&amp;lt;/code&amp;gt; se va scrie numărul ce reprezintă răspunsul la cerința &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;. Dacă &amp;lt;code&amp;gt;C = 2&amp;lt;/code&amp;gt;, atunci pe prima linie a fișierului de ieșire &amp;lt;code&amp;gt;output.txt&amp;lt;/code&amp;gt; se vor scrie, separate printr-un spațiu, lungimea maximă a secvenței determinate și poziția primului termen din secvență (se consideră că primul număr din cele &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; numere date se găsește pe poziția &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
= Restricții și precizări =&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;1 ≤ n ≤ 1.000.000&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
input.txt:&lt;br /&gt;
&lt;br /&gt;
1&lt;br /&gt;
&lt;br /&gt;
7&lt;br /&gt;
&lt;br /&gt;
16 12 3 5 14 13 11&lt;br /&gt;
&lt;br /&gt;
output.txt:&lt;br /&gt;
&lt;br /&gt;
14&lt;br /&gt;
&lt;br /&gt;
Explicație:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;16(10)&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;= 10000(2)&amp;lt;/code&amp;gt;; &amp;lt;code&amp;gt;12(10)&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;= 1100(2)&amp;lt;/code&amp;gt;; &amp;lt;code&amp;gt;3(10)&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;= 11(2)&amp;lt;/code&amp;gt;; &amp;lt;code&amp;gt;5(10)&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;= 101(2)&amp;lt;/code&amp;gt;; &amp;lt;code&amp;gt;14(10)&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;= 1110(2)&amp;lt;/code&amp;gt;; &amp;lt;code&amp;gt;13(10)&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;= 1101(2)&amp;lt;/code&amp;gt;; &amp;lt;code&amp;gt;11(10)&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;= 1011(2)&amp;lt;/code&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
Cel mai mare număr de valori de &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; dintr-o reprezentare binară este &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt;; cel mai mare număr ce are &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt; de &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; în reprezentarea binară este &amp;lt;code&amp;gt;14&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
input.txt:&lt;br /&gt;
&lt;br /&gt;
2&lt;br /&gt;
&lt;br /&gt;
7&lt;br /&gt;
&lt;br /&gt;
16 12 3 5 14 13 11&lt;br /&gt;
&lt;br /&gt;
output.txt:&lt;br /&gt;
&lt;br /&gt;
3 2&lt;br /&gt;
&lt;br /&gt;
Explicație:&lt;br /&gt;
&lt;br /&gt;
Sunt două secvențe de lungime maximă de numere care au număr egal de valori de &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; în reprezentarea binară: &amp;lt;code&amp;gt;12 3 5&amp;lt;/code&amp;gt; și &amp;lt;code&amp;gt;14 13 11&amp;lt;/code&amp;gt;. O vom alege pe cea mai din stânga, care are lungimea &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt; și începe la poziția &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Exemplul 3 ==&lt;br /&gt;
input.txt:&lt;br /&gt;
&lt;br /&gt;
2&lt;br /&gt;
&lt;br /&gt;
99999999999999&lt;br /&gt;
&lt;br /&gt;
16 12 3 5 14 13 11&lt;br /&gt;
&lt;br /&gt;
Output:&lt;br /&gt;
&lt;br /&gt;
Input-ul nu convine conditiilor&lt;br /&gt;
&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python3&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
NM = 1000001&lt;br /&gt;
&lt;br /&gt;
def verificare(n):&lt;br /&gt;
    if not(1&amp;lt;=n&amp;lt;=1000000):&lt;br /&gt;
        print(&amp;quot;Input-ul nu convine conditiilor&amp;quot;)&lt;br /&gt;
        exit()&lt;br /&gt;
&lt;br /&gt;
def count_set_bits(num):&lt;br /&gt;
    count = 0&lt;br /&gt;
    while num:&lt;br /&gt;
        count += num &amp;amp; 1&lt;br /&gt;
        num &amp;gt;&amp;gt;= 1&lt;br /&gt;
    return count&lt;br /&gt;
&lt;br /&gt;
with open(&amp;quot;input.txt&amp;quot;, &amp;quot;r&amp;quot;) as fin, open(&amp;quot;output.txt&amp;quot;, &amp;quot;w&amp;quot;) as fout:&lt;br /&gt;
    c = int(fin.readline())&lt;br /&gt;
    n = int(fin.readline())&lt;br /&gt;
&lt;br /&gt;
    verificare(n)&lt;br /&gt;
&lt;br /&gt;
    l=list(map(int, fin.readline().split()))&lt;br /&gt;
&lt;br /&gt;
    a = [0] * (n + 1)&lt;br /&gt;
    &lt;br /&gt;
    xmax = 0&lt;br /&gt;
    nr1max = 0&lt;br /&gt;
    &lt;br /&gt;
    for i in range(1, n + 1):&lt;br /&gt;
        x = l[i-1]&lt;br /&gt;
        aux = x&lt;br /&gt;
        nr1 = 0&lt;br /&gt;
        &lt;br /&gt;
        while aux &amp;gt; 0:&lt;br /&gt;
            nr1 += 1&lt;br /&gt;
            aux = aux &amp;amp; (aux - 1)&lt;br /&gt;
        &lt;br /&gt;
        if nr1 &amp;gt; nr1max or (nr1 == nr1max and x &amp;gt; xmax):&lt;br /&gt;
            nr1max = nr1&lt;br /&gt;
            xmax = x&lt;br /&gt;
        &lt;br /&gt;
        a[i] = nr1&lt;br /&gt;
    &lt;br /&gt;
    if c == 1:&lt;br /&gt;
        # cerinta 1&lt;br /&gt;
        fout.write(str(xmax))&lt;br /&gt;
    else:&lt;br /&gt;
        # cerinta 2&lt;br /&gt;
        lgm = 0&lt;br /&gt;
        lgc = 1&lt;br /&gt;
        pc = 1&lt;br /&gt;
        &lt;br /&gt;
        for i in range(2, n + 1):&lt;br /&gt;
            if a[i] == a[i - 1]:&lt;br /&gt;
                lgc += 1&lt;br /&gt;
            else:&lt;br /&gt;
                if lgc &amp;gt; lgm:&lt;br /&gt;
                    lgm = lgc&lt;br /&gt;
                    pm = pc&lt;br /&gt;
                lgc = 1&lt;br /&gt;
                pc = i&lt;br /&gt;
        &lt;br /&gt;
        if lgc &amp;gt; lgm:&lt;br /&gt;
            lgm = lgc&lt;br /&gt;
            pm = pc&lt;br /&gt;
        &lt;br /&gt;
        fout.write(f&amp;quot;{lgm} {pm}&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Miawinator</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=1233_-_Paint&amp;diff=9055</id>
		<title>1233 - Paint</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=1233_-_Paint&amp;diff=9055"/>
		<updated>2024-01-05T02:05:02Z</updated>

		<summary type="html">&lt;p&gt;Miawinator: Pagină nouă: Roberto are suflet de artist. El visează să ajungă într-o bună zi un pictor celebru, dar pentru moment își câştigă existența ca zugrav.  Roberto a primit sarcina de a zugrăvi un zid având lungimea &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; metri şi înălţimea un metru. Pentru aceasta are la dispoziţie &amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt; zile. În fiecare zi &amp;lt;code&amp;gt;i&amp;lt;/code&amp;gt;, el acoperă cu un singur strat de vopsea o porţiune compactă de înălțime un metru și de lungime &amp;lt;code&amp;gt;l[i]&amp;lt;/code&amp;gt; metri, începân...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Roberto are suflet de artist. El visează să ajungă într-o bună zi un pictor celebru, dar pentru moment își câştigă existența ca zugrav.&lt;br /&gt;
&lt;br /&gt;
Roberto a primit sarcina de a zugrăvi un zid având lungimea &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; metri şi înălţimea un metru. Pentru aceasta are la dispoziţie &amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt; zile. În fiecare zi &amp;lt;code&amp;gt;i&amp;lt;/code&amp;gt;, el acoperă cu un singur strat de vopsea o porţiune compactă de înălțime un metru și de lungime &amp;lt;code&amp;gt;l[i]&amp;lt;/code&amp;gt; metri, începând de la distanţa &amp;lt;code&amp;gt;d[i]&amp;lt;/code&amp;gt; metri faţă de capătul din stânga al zidului.&lt;br /&gt;
&lt;br /&gt;
Roberto ştie din experienţă că fiecare porţiune de zid trebuie acoperită cu cel puţin &amp;lt;code&amp;gt;K&amp;lt;/code&amp;gt; straturi de vopsea pentru ca stratul final de vopsea să aibă consistenţa dorită. Din nefericire, firea lui de artist nu i-a permis să-şi poată planifica munca în mod optim, astfel că la capătul celor &amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt; zile de efort, Roberto a constatat că zidul are porţiuni pe care le-a acoperit de mai mult de &amp;lt;code&amp;gt;k&amp;lt;/code&amp;gt; ori şi alte porţiuni pe care le-a acoperit de mai puţin de &amp;lt;code&amp;gt;k&amp;lt;/code&amp;gt; ori.&lt;br /&gt;
&lt;br /&gt;
Pentru a recupera în proprii săi ochi dar mai ales în ochii şefului de echipă, el trebuie să afle mai întâi suprafaţa totală a tuturor porţiunilor de zid care mai trebuie zugrăvite.&lt;br /&gt;
&lt;br /&gt;
= Cerinţă =&lt;br /&gt;
Cunoscând lungimea zidului &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;, numărul de zile &amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt; şi porţiunile compacte pe care le zugrăveşte în fiecare zi, determinaţi suprafaţa totală a zidului care mai trebuie zugrăvită.&lt;br /&gt;
&lt;br /&gt;
= Date de intrare =&lt;br /&gt;
Fișierul de intrare &amp;lt;code&amp;gt;input.txt&amp;lt;/code&amp;gt; conține pe prima linie trei numerele naturale &amp;lt;code&amp;gt;n k m&amp;lt;/code&amp;gt; separate printr-un spațiu, unde &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; este lungimea zidului, &amp;lt;code&amp;gt;k&amp;lt;/code&amp;gt; este numărul minim de straturi de vopsea pentru a se obţine consistenţa dorită, iar &amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt; este numărul de zile în care Roberto pictează.&lt;br /&gt;
&lt;br /&gt;
Pe următoarele &amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt; linii se află câte două valori naturale separate prin câte un spațiu. Numerele &amp;lt;code&amp;gt;d[i]&amp;lt;/code&amp;gt; şi &amp;lt;code&amp;gt;l[i]&amp;lt;/code&amp;gt; de pe linia &amp;lt;code&amp;gt;i+1&amp;lt;/code&amp;gt; reprezintă distanţa faţă de capătul din stânga al zidului de la care începe să zugrăvească în ziua &amp;lt;code&amp;gt;i&amp;lt;/code&amp;gt;, respectiv lungimea în metri a porţiunii de zid zugrăvite în ziua &amp;lt;code&amp;gt;i&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= Date de ieșire =&lt;br /&gt;
Fișierul de ieșire &amp;lt;code&amp;gt;output.txt&amp;lt;/code&amp;gt; va conține pe prima linie un număr natural &amp;lt;code&amp;gt;S&amp;lt;/code&amp;gt; care reprezintă suprafaţa totală a zidului care nu a fost acoperită cu cel puţin &amp;lt;code&amp;gt;k&amp;lt;/code&amp;gt; straturi de vopsea.&lt;br /&gt;
&lt;br /&gt;
= Restricții și precizări =&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;1 ≤ n, m ≤ 250 000&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
input.txt:&lt;br /&gt;
&lt;br /&gt;
5 2 3&lt;br /&gt;
&lt;br /&gt;
0 2&lt;br /&gt;
&lt;br /&gt;
1 3&lt;br /&gt;
&lt;br /&gt;
2 3&lt;br /&gt;
&lt;br /&gt;
output.txt:&lt;br /&gt;
&lt;br /&gt;
2&lt;br /&gt;
&lt;br /&gt;
Explicație:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;n = 5&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;k = 2&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;m = 3&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
În prima zi Roberto vopsește &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt; m din zid între pozițiile &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; și &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt;. În a doua zi Roberto vopsește &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt; m din zid între pozițiile &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; și &amp;lt;code&amp;gt;4&amp;lt;/code&amp;gt;. În a treia zi Roberto vopsește &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt; m din zid între pozițiile &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt; și &amp;lt;code&amp;gt;5&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Deci, începând cu capătul din stânga al zidului, se va găsi o porțiune de zid de lungime &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;, acoperită cu un singur strat și începând de la distanța &amp;lt;code&amp;gt;4&amp;lt;/code&amp;gt; față de capăt, se va găsi o altă porțiune de zid de lungime &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;, acoperită cu un singur strat.&lt;br /&gt;
&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
input.txt:&lt;br /&gt;
&lt;br /&gt;
9999999999999999 2 3&lt;br /&gt;
&lt;br /&gt;
0 2&lt;br /&gt;
&lt;br /&gt;
1 3&lt;br /&gt;
&lt;br /&gt;
2 3&lt;br /&gt;
&lt;br /&gt;
Output:&lt;br /&gt;
&lt;br /&gt;
Invalid input. Please ensure 1 &amp;lt;= n, m &amp;lt;= 250,000.&lt;br /&gt;
&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python3&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
def validate_input(n, m):&lt;br /&gt;
    if not (1 &amp;lt;= n &amp;lt;= 250000) or not (1 &amp;lt;= m &amp;lt;= 250000):&lt;br /&gt;
        print(&amp;quot;Invalid input. Please ensure 1 &amp;lt;= n, m &amp;lt;= 250,000.&amp;quot;)&lt;br /&gt;
        exit()&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
with open(&amp;quot;input.txt&amp;quot;, &amp;quot;r&amp;quot;) as fin, open(&amp;quot;output.txt&amp;quot;, &amp;quot;w&amp;quot;) as fout:&lt;br /&gt;
    n, k, m = map(int, fin.readline().split())&lt;br /&gt;
    validate_input(n, m)&lt;br /&gt;
    a = [0] * (n + 3)&lt;br /&gt;
&lt;br /&gt;
    for _ in range(m):&lt;br /&gt;
        d, L = map(int, fin.readline().split())&lt;br /&gt;
        a[d] += 1&lt;br /&gt;
        a[d + L] -= 1&lt;br /&gt;
&lt;br /&gt;
    D = 0&lt;br /&gt;
    cnt = 0&lt;br /&gt;
&lt;br /&gt;
    for i in range(n + 1):&lt;br /&gt;
        cnt += a[i]&lt;br /&gt;
        if cnt &amp;lt; k:&lt;br /&gt;
            D += 1&lt;br /&gt;
&lt;br /&gt;
    fout.write(str(D - 1) + &#039;\n&#039;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Miawinator</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=1027_-_Cool&amp;diff=9054</id>
		<title>1027 - Cool</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=1027_-_Cool&amp;diff=9054"/>
		<updated>2024-01-05T01:59:06Z</updated>

		<summary type="html">&lt;p&gt;Miawinator: Pagină nouă: Se consideră un șir &amp;lt;code&amp;gt;A&amp;lt;/code&amp;gt; format din &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt; elemente naturale nenule. Numim secvență de lungime &amp;lt;code&amp;gt;K&amp;lt;/code&amp;gt; a șirului &amp;lt;code&amp;gt;A&amp;lt;/code&amp;gt; orice succesiune de elemente consecutive din șir de forma &amp;lt;code&amp;gt;Ai&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;Ai+1&amp;lt;/code&amp;gt; ,…, &amp;lt;code&amp;gt;Ai+K-1&amp;lt;/code&amp;gt;.  O secvență o numim &amp;#039;&amp;#039;secvență cool&amp;#039;&amp;#039; dacă elementele care o compun sunt distincte și pot fi rearanjate astfel încât să alcătuiască o secvență continuă de numere consecutive.  De exemplu,...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Se consideră un șir &amp;lt;code&amp;gt;A&amp;lt;/code&amp;gt; format din &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt; elemente naturale nenule. Numim secvență de lungime &amp;lt;code&amp;gt;K&amp;lt;/code&amp;gt; a șirului &amp;lt;code&amp;gt;A&amp;lt;/code&amp;gt; orice succesiune de elemente consecutive din șir de forma &amp;lt;code&amp;gt;Ai&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;Ai+1&amp;lt;/code&amp;gt; ,…, &amp;lt;code&amp;gt;Ai+K-1&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
O secvență o numim &#039;&#039;secvență cool&#039;&#039; dacă elementele care o compun sunt distincte și pot fi rearanjate astfel încât să alcătuiască o secvență continuă de numere consecutive.&lt;br /&gt;
&lt;br /&gt;
De exemplu, considerând șirul &amp;lt;code&amp;gt;A=(3,1,6,8,4,5,6,7,4,3,4)&amp;lt;/code&amp;gt;, atunci secvența &amp;lt;code&amp;gt;(8,4,5,6,7)&amp;lt;/code&amp;gt; este o secvență cool deoarece conține elemente distincte ce pot fi rearanjate astfel încât să alcătuiască șirul de numere consecutive &amp;lt;code&amp;gt;4,5,6,7,8,&amp;lt;/code&amp;gt; pe când secvențele &amp;lt;code&amp;gt;(4,3,4), (6,7,4,3)&amp;lt;/code&amp;gt; nu sunt considerate secvențe cool.&lt;br /&gt;
&lt;br /&gt;
= Cerinţă =&lt;br /&gt;
Fiind dat un şir de &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt; numere naturale nenule se cer următoarele:&lt;br /&gt;
&lt;br /&gt;
1. Pentru o valoare dată &amp;lt;code&amp;gt;K&amp;lt;/code&amp;gt; să se verifice dacă secvența &amp;lt;code&amp;gt;A1&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;A2&amp;lt;/code&amp;gt; ,…, &amp;lt;code&amp;gt;AK&amp;lt;/code&amp;gt; este secvență cool. Dacă secvența este cool, atunci se va afișa cea mai mare valoare ce aparține secvenței. Dacă secvența nu este cool, atunci se va afișa numărul elementelor distincte din secvența &amp;lt;code&amp;gt;A1&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;A2&amp;lt;/code&amp;gt; ,…, &amp;lt;code&amp;gt;AK&amp;lt;/code&amp;gt; , adică numărul elementelor care apar o singură dată.&lt;br /&gt;
&lt;br /&gt;
2. Lungimea maximă a unei secvențe cool și numărul secvențelor cool de lungime maximă.&lt;br /&gt;
&lt;br /&gt;
= Date de intrare =&lt;br /&gt;
Fişierul de intrare &amp;lt;code&amp;gt;input.txt&amp;lt;/code&amp;gt; conţine pe prima linie un număr natural &amp;lt;code&amp;gt;p&amp;lt;/code&amp;gt;. Pentru toate testele de intrare, numărul p poate avea doar valoarea &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; sau valoarea &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt;. Pe linia a doua se găsesc, despărțite printr-un spațiu, două numere naturale &amp;lt;code&amp;gt;N K&amp;lt;/code&amp;gt;. Pe următoarea linie se găsesc &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt; numere întregi, separate prin câte un spațiu, ce reprezintă elementele şirului.&lt;br /&gt;
&lt;br /&gt;
= Date de ieşire =&lt;br /&gt;
Dacă valoarea lui &amp;lt;code&amp;gt;p&amp;lt;/code&amp;gt; este &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;, atunci se va rezolva numai punctul &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; din cerință. În acest caz, fişierul de ieşire &amp;lt;code&amp;gt;output.txt&amp;lt;/code&amp;gt; va conţine pe prima linie un număr natural, număr ce reprezintă conform cerinței &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;, maximul secvenței &amp;lt;code&amp;gt;A1&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;A2&amp;lt;/code&amp;gt; ,…, &amp;lt;code&amp;gt;AK&amp;lt;/code&amp;gt;, dacă secvența este secvență cool, sau numărul elementelor distincte din secvență, dacă aceasta nu este secvență cool.&lt;br /&gt;
&lt;br /&gt;
Dacă valoarea lui &amp;lt;code&amp;gt;p&amp;lt;/code&amp;gt; este &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt;, se va rezolva numai punctul &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt; din cerință. În acest caz, fişierul de ieşire &amp;lt;code&amp;gt;output.txt&amp;lt;/code&amp;gt; va avea două linii. Prima linie va conține un număr natural nenul ce reprezintă lungimea maximă a unei secvențe cool, iar următoarea linie un număr natural nenul ce reprezintă numărul de secvențe cool care au lungimea maximă.&lt;br /&gt;
&lt;br /&gt;
= Restricţii și precizări =&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;1 ≤ N ≤ 5000&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;2 ≤ K ≤ 1000&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
input.txt:&lt;br /&gt;
&lt;br /&gt;
1&lt;br /&gt;
&lt;br /&gt;
7 4&lt;br /&gt;
&lt;br /&gt;
6 4 5 7 8 3 5&lt;br /&gt;
&lt;br /&gt;
output.txt:&lt;br /&gt;
&lt;br /&gt;
7&lt;br /&gt;
&lt;br /&gt;
Explicație:&lt;br /&gt;
&lt;br /&gt;
Secvența &amp;lt;code&amp;gt;6 4 5 7&amp;lt;/code&amp;gt; este cool.&lt;br /&gt;
&lt;br /&gt;
Valoarea maximă din secvență este &amp;lt;code&amp;gt;7&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
input.txt:&lt;br /&gt;
&lt;br /&gt;
1&lt;br /&gt;
&lt;br /&gt;
7 6&lt;br /&gt;
&lt;br /&gt;
6 4 5 7 5 4 3&lt;br /&gt;
&lt;br /&gt;
output.txt:&lt;br /&gt;
&lt;br /&gt;
2&lt;br /&gt;
&lt;br /&gt;
Explicație:&lt;br /&gt;
&lt;br /&gt;
Secvența &amp;lt;code&amp;gt;6 4 5 7 5 4&amp;lt;/code&amp;gt; nu este secvență cool. Numărul valorilor distincte din secvență este &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt;. Valorile distincte sunt: &amp;lt;code&amp;gt;6,7&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Exemplul 3 ==&lt;br /&gt;
input.txt:&lt;br /&gt;
&lt;br /&gt;
2&lt;br /&gt;
&lt;br /&gt;
11 4&lt;br /&gt;
&lt;br /&gt;
7 4 5 6 8 4 5 7 4 3 2&lt;br /&gt;
&lt;br /&gt;
output.txt:&lt;br /&gt;
&lt;br /&gt;
5&lt;br /&gt;
&lt;br /&gt;
2&lt;br /&gt;
&lt;br /&gt;
Explicație:&lt;br /&gt;
&lt;br /&gt;
Cele două secvențe cool de lungime maximă 5 sunt:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;7 4 5 6 8&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;6 8 4 5 7&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Exemplul 4 ==&lt;br /&gt;
input.txt:&lt;br /&gt;
&lt;br /&gt;
99999999999999999&lt;br /&gt;
&lt;br /&gt;
11 4&lt;br /&gt;
&lt;br /&gt;
7 4 5 6 8 4 5 7 4 3 2&lt;br /&gt;
&lt;br /&gt;
Output:&lt;br /&gt;
&lt;br /&gt;
Invalid input. Please ensure 1 &amp;lt;= T &amp;lt;= 2, 2 &amp;lt;= K &amp;lt;= 1000, and 1 &amp;lt;= N &amp;lt;= 5000.&lt;br /&gt;
&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python3&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
def validate_input(T, K, N):&lt;br /&gt;
    if not (1 &amp;lt;= T &amp;lt;= 2) or not (2 &amp;lt;= K &amp;lt;= 1000) or not (1 &amp;lt;= N &amp;lt;= 5000):&lt;br /&gt;
        print(&amp;quot;Invalid input. Please ensure 1 &amp;lt;= T &amp;lt;= 2, 2 &amp;lt;= K &amp;lt;= 1000, and 1 &amp;lt;= N &amp;lt;= 5000.&amp;quot;)&lt;br /&gt;
        exit()&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
    with open(&amp;quot;input.txt&amp;quot;, &amp;quot;r&amp;quot;) as fin, open(&amp;quot;output.txt&amp;quot;, &amp;quot;w&amp;quot;) as fout:&lt;br /&gt;
        cnt = [0] * 1003&lt;br /&gt;
        a = [0] * 5001&lt;br /&gt;
        nr = [0] * 5001&lt;br /&gt;
        T, K, n, maxK, minK = 0, 0, 0, 0, 5001&lt;br /&gt;
        L, Lmax, nMaxCool, amin, amax, bad = 0, 1, 1, 0, 0, 0&lt;br /&gt;
&lt;br /&gt;
        T = int(fin.readline())&lt;br /&gt;
        n, K = map(int, fin.readline().split())&lt;br /&gt;
&lt;br /&gt;
        validate_input(T,K, n)&lt;br /&gt;
&lt;br /&gt;
        l=list(map(int, fin.readline().split()))&lt;br /&gt;
&lt;br /&gt;
        for i in range(n):&lt;br /&gt;
            a[i] = l[i]&lt;br /&gt;
            if i &amp;lt; K:&lt;br /&gt;
                maxK = max(maxK, a[i])&lt;br /&gt;
                minK = min(minK, a[i])&lt;br /&gt;
                nr[a[i]] += 1&lt;br /&gt;
&lt;br /&gt;
        if T == 1:&lt;br /&gt;
            cool = True&lt;br /&gt;
            distincte = 0&lt;br /&gt;
&lt;br /&gt;
            for x in range(minK, maxK + 1):&lt;br /&gt;
                if nr[x] == 0 or nr[x] &amp;gt; 1:&lt;br /&gt;
                    cool = False&lt;br /&gt;
                if nr[x] == 1:&lt;br /&gt;
                    distincte += 1&lt;br /&gt;
&lt;br /&gt;
            if cool:&lt;br /&gt;
                fout.write(str(maxK) + &#039;\n&#039;)&lt;br /&gt;
            else:&lt;br /&gt;
                fout.write(str(distincte) + &#039;\n&#039;)&lt;br /&gt;
&lt;br /&gt;
        else:&lt;br /&gt;
            for i in range(n):&lt;br /&gt;
                cnt[a[i]] += 1&lt;br /&gt;
                bad = 0&lt;br /&gt;
                amin = amax = a[i]&lt;br /&gt;
&lt;br /&gt;
                for j in range(i + 1, n):&lt;br /&gt;
                    cnt[a[j]] += 1&lt;br /&gt;
                    L = j - i + 1&lt;br /&gt;
&lt;br /&gt;
                    if cnt[a[j]] &amp;gt; 1:&lt;br /&gt;
                        bad += 1&lt;br /&gt;
&lt;br /&gt;
                    if amax &amp;lt; a[j]:&lt;br /&gt;
                        amax = a[j]&lt;br /&gt;
                    if amin &amp;gt; a[j]:&lt;br /&gt;
                        amin = a[j]&lt;br /&gt;
&lt;br /&gt;
                    if bad or amax - amin != j - i:&lt;br /&gt;
                        continue&lt;br /&gt;
&lt;br /&gt;
                    if L &amp;gt; Lmax:&lt;br /&gt;
                        Lmax = L&lt;br /&gt;
                        nMaxCool = 1&lt;br /&gt;
                    elif L == Lmax:&lt;br /&gt;
                        nMaxCool += 1&lt;br /&gt;
&lt;br /&gt;
                cnt[a[i]] -= 1&lt;br /&gt;
                cnt = [0] * 1003&lt;br /&gt;
&lt;br /&gt;
            fout.write(str(Lmax) + &#039;\n&#039; + str(nMaxCool) + &#039;\n&#039;)&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    main()&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Miawinator</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=2411_-_secvp&amp;diff=9053</id>
		<title>2411 - secvp</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=2411_-_secvp&amp;diff=9053"/>
		<updated>2024-01-05T01:50:43Z</updated>

		<summary type="html">&lt;p&gt;Miawinator: Pagină nouă: Se consideră un şir cu &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt; numere naturale &amp;lt;code&amp;gt;a[1]&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;a[2]&amp;lt;/code&amp;gt;, …, &amp;lt;code&amp;gt;a[N]&amp;lt;/code&amp;gt;. Asupra unui element &amp;lt;code&amp;gt;a[i]&amp;lt;/code&amp;gt; din şir se pot efectua operaţii de incrementare (adunare cu &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;: &amp;lt;code&amp;gt;a[i] = a[i] + 1&amp;lt;/code&amp;gt;) sau decrementare (scădere cu &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;: &amp;lt;code&amp;gt;a[i] = a[i] - 1&amp;lt;/code&amp;gt;). Fiecare element din şir poate fi incrementat sau decrementat de oricâte ori.  = Cerința = Dat fiind șirul celor &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt; numere n...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Se consideră un şir cu &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt; numere naturale &amp;lt;code&amp;gt;a[1]&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;a[2]&amp;lt;/code&amp;gt;, …, &amp;lt;code&amp;gt;a[N]&amp;lt;/code&amp;gt;. Asupra unui element &amp;lt;code&amp;gt;a[i]&amp;lt;/code&amp;gt; din şir se pot efectua operaţii de incrementare (adunare cu &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;: &amp;lt;code&amp;gt;a[i] = a[i] + 1&amp;lt;/code&amp;gt;) sau decrementare (scădere cu &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;: &amp;lt;code&amp;gt;a[i] = a[i] - 1&amp;lt;/code&amp;gt;). Fiecare element din şir poate fi incrementat sau decrementat de oricâte ori.&lt;br /&gt;
&lt;br /&gt;
= Cerința =&lt;br /&gt;
Dat fiind șirul celor &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt; numere naturale, să se determine:&lt;br /&gt;
&lt;br /&gt;
a. numărul total minim de operaţii necesare pentru a transforma toate numerele din şir în numere prime;&lt;br /&gt;
&lt;br /&gt;
b. numărul minim de operații (incrementări şi decrementări) ce trebuie să fie efectuate asupra elementelor şirului astfel încât să existe o secvență de lungime &amp;lt;code&amp;gt;K&amp;lt;/code&amp;gt; formată numai din numere prime.&lt;br /&gt;
&lt;br /&gt;
= Date de intrare =&lt;br /&gt;
Fișierul de intrare &amp;lt;code&amp;gt;input.txt&amp;lt;/code&amp;gt; conține pe prima linie numerele naturale &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt; şi &amp;lt;code&amp;gt;K&amp;lt;/code&amp;gt;, iar pe următoarea linie &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt; numere naturale. Numerele scrise pe aceeași linie sunt separate prin spații.&lt;br /&gt;
&lt;br /&gt;
= Date de ieșire =&lt;br /&gt;
Fișierul de ieșire &amp;lt;code&amp;gt;output.txt&amp;lt;/code&amp;gt; conţine pe prima linie un număr natural &amp;lt;code&amp;gt;T&amp;lt;/code&amp;gt;, reprezentând numărul total minim de operaţii necesare pentru a transforma toate numerele din şir în numere prime. Pe a doua linie vor fi scrise două numere naturale separate prin spaţiu &amp;lt;code&amp;gt;minK nrsK&amp;lt;/code&amp;gt;, unde &amp;lt;code&amp;gt;minK&amp;lt;/code&amp;gt; reprezintă numărul minim de operaţii ce trebuie să fie efectuate asupra elementelor şirului astfel încât să existe o secvenţă de lungime &amp;lt;code&amp;gt;K&amp;lt;/code&amp;gt; formată numai din numere prime, iar &amp;lt;code&amp;gt;nrsK&amp;lt;/code&amp;gt; reprezintă numărul de secvenţe de lungime &amp;lt;code&amp;gt;K&amp;lt;/code&amp;gt; care se pot obţine cu acelaşi număr &amp;lt;code&amp;gt;minK&amp;lt;/code&amp;gt; de operaţii de incrementare/decrementare.&lt;br /&gt;
&lt;br /&gt;
= Restricții și precizări =&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;2 ≤ K ≤ N ≤ 100.000&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Exemplul 1 =&lt;br /&gt;
input.txt:&lt;br /&gt;
&lt;br /&gt;
7 3&lt;br /&gt;
&lt;br /&gt;
15 3 8 26 22 10 14&lt;br /&gt;
&lt;br /&gt;
output.txt:&lt;br /&gt;
&lt;br /&gt;
9&lt;br /&gt;
&lt;br /&gt;
3 2&lt;br /&gt;
&lt;br /&gt;
Explicație:&lt;br /&gt;
&lt;br /&gt;
Pentru a transforma &amp;lt;code&amp;gt;15&amp;lt;/code&amp;gt; în număr prim sunt necesare &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt; incrementări.&lt;br /&gt;
&lt;br /&gt;
Pentru a transforma &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt; în număr prim sunt necesare &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; operaţii.&lt;br /&gt;
&lt;br /&gt;
Pentru a transforma &amp;lt;code&amp;gt;8&amp;lt;/code&amp;gt; în număr prim e necesară &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; decrementare.&lt;br /&gt;
&lt;br /&gt;
Pentru a transforma &amp;lt;code&amp;gt;26&amp;lt;/code&amp;gt; în număr prim sunt necesare &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt; decrementări.&lt;br /&gt;
&lt;br /&gt;
Pentru a transforma &amp;lt;code&amp;gt;22&amp;lt;/code&amp;gt; în număr prim e necesară &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; incrementare.&lt;br /&gt;
&lt;br /&gt;
Pentru a transforma &amp;lt;code&amp;gt;10&amp;lt;/code&amp;gt; în număr prim e necesară &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; incrementare.&lt;br /&gt;
&lt;br /&gt;
Pentru a transforma &amp;lt;code&amp;gt;14&amp;lt;/code&amp;gt; în număr prim e necesară &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; decrementare.&lt;br /&gt;
&lt;br /&gt;
Numărul total de operaţii necesare este &amp;lt;code&amp;gt;9&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Numărul minim de operaţii necesare pentru a obţine o secvenţă de lungime &amp;lt;code&amp;gt;K&amp;lt;/code&amp;gt; este &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt;. Cele două secvenţe de lungime &amp;lt;code&amp;gt;K&amp;lt;/code&amp;gt; ce necesită &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt; operaţii sunt &amp;lt;code&amp;gt;a[1], a[2], a[3]&amp;lt;/code&amp;gt; şi &amp;lt;code&amp;gt;a[5], a[6], a[7]&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
input.txt&lt;br /&gt;
&lt;br /&gt;
9999999999 3&lt;br /&gt;
&lt;br /&gt;
15 3 8 26 22 10 14&lt;br /&gt;
&lt;br /&gt;
Output:&lt;br /&gt;
&lt;br /&gt;
Invalid input. Please ensure 2 &amp;lt;= K &amp;lt;= N &amp;lt;= 100,000.&lt;br /&gt;
&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python3&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
import bisect&lt;br /&gt;
&lt;br /&gt;
def validate_input(n, k):&lt;br /&gt;
    if not (2 &amp;lt;= k &amp;lt;= n &amp;lt;= 100000):&lt;br /&gt;
        print(&amp;quot;Invalid input. Please ensure 2 &amp;lt;= K &amp;lt;= N &amp;lt;= 100,000.&amp;quot;)&lt;br /&gt;
        exit()&lt;br /&gt;
&lt;br /&gt;
fin = open(&amp;quot;input.txt&amp;quot;, &amp;quot;r&amp;quot;)&lt;br /&gt;
fout = open(&amp;quot;output.txt&amp;quot;, &amp;quot;w&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
N = 1000100&lt;br /&gt;
&lt;br /&gt;
e = [0] * (N + 1)&lt;br /&gt;
v = []&lt;br /&gt;
a = [0] * 100001&lt;br /&gt;
iteratii = [0] * 100001&lt;br /&gt;
sp = [0] * 100001&lt;br /&gt;
&lt;br /&gt;
def ciur():&lt;br /&gt;
    global v&lt;br /&gt;
    e[0] = e[1] = 1&lt;br /&gt;
&lt;br /&gt;
    for i in range(2, N + 1):&lt;br /&gt;
        if not e[i]:&lt;br /&gt;
            v.append(i)&lt;br /&gt;
&lt;br /&gt;
            for j in range(i * 2, N + 1, i):&lt;br /&gt;
                e[j] = 1&lt;br /&gt;
&lt;br /&gt;
def read_solve1():&lt;br /&gt;
    global n, k, a, iteratii, sp&lt;br /&gt;
&lt;br /&gt;
    n, k = map(int, fin.readline().split())&lt;br /&gt;
    validate_input(n, k)&lt;br /&gt;
    s = 0&lt;br /&gt;
&lt;br /&gt;
    l=list(map(int, fin.readline().split()))&lt;br /&gt;
&lt;br /&gt;
    for i in range(1, n + 1):&lt;br /&gt;
        x = l[i-1]&lt;br /&gt;
&lt;br /&gt;
        it = bisect.bisect_left(v, x)&lt;br /&gt;
        it2 = bisect.bisect_right(v, x)&lt;br /&gt;
&lt;br /&gt;
        d1 = it&lt;br /&gt;
        d2 = it2&lt;br /&gt;
&lt;br /&gt;
        if e[x]:&lt;br /&gt;
            if d1 &amp;gt; 0:&lt;br /&gt;
                s += min(abs(x - v[d1 - 1]), abs(x - v[d2]))&lt;br /&gt;
                iteratii[i] = min(abs(x - v[d1 - 1]), abs(x - v[d2]))&lt;br /&gt;
&lt;br /&gt;
                if iteratii[i] == abs(x - v[d1 - 1]):&lt;br /&gt;
                    iteratii[i] *= -1&lt;br /&gt;
            else:&lt;br /&gt;
                s += abs(x - v[d2])&lt;br /&gt;
                iteratii[i] = abs(x - v[d2])&lt;br /&gt;
&lt;br /&gt;
        a[i] = x + iteratii[i]&lt;br /&gt;
&lt;br /&gt;
        if iteratii[i] &amp;lt; 0:&lt;br /&gt;
            iteratii[i] *= -1&lt;br /&gt;
&lt;br /&gt;
        sp[i] = sp[i - 1] + iteratii[i]&lt;br /&gt;
&lt;br /&gt;
    fout.write(str(s)+&amp;quot;\n&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
def solve2():&lt;br /&gt;
    global n, k, sp, mini, secv&lt;br /&gt;
&lt;br /&gt;
    temp = 0&lt;br /&gt;
    mini = float(&#039;inf&#039;)&lt;br /&gt;
    secv = 0&lt;br /&gt;
&lt;br /&gt;
    for i in range(k, n + 1):&lt;br /&gt;
        temp = sp[i] - sp[i - k]&lt;br /&gt;
&lt;br /&gt;
        if temp &amp;lt; mini:&lt;br /&gt;
            mini = temp&lt;br /&gt;
            secv = 1&lt;br /&gt;
        elif temp == mini:&lt;br /&gt;
            secv += 1&lt;br /&gt;
&lt;br /&gt;
    fout.write(str(mini)+&amp;quot; &amp;quot;)&lt;br /&gt;
    fout.write(str(secv))&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    ciur()&lt;br /&gt;
    read_solve1()&lt;br /&gt;
    solve2()&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Miawinator</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=3752_-_Cvintete&amp;diff=9052</id>
		<title>3752 - Cvintete</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=3752_-_Cvintete&amp;diff=9052"/>
		<updated>2024-01-05T01:43:50Z</updated>

		<summary type="html">&lt;p&gt;Miawinator: Pagină nouă: Se consideră numerele naturale nenule &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt; și &amp;lt;code&amp;gt;D&amp;lt;/code&amp;gt; urmate de o secvență &amp;lt;code&amp;gt;S&amp;lt;/code&amp;gt; de &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt; numere naturale nenule ordonate crescător, indexate de la &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; la &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt;.  = Cerința = Să se determine numărul de cvintete de indici &amp;lt;code&amp;gt;(i1, i2, i3, i4, i5)&amp;lt;/code&amp;gt; ce verifică relațiile:  * &amp;lt;code&amp;gt;a • b • c = D&amp;lt;/code&amp;gt; * &amp;lt;code&amp;gt;a • x2&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;+ b • y2&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;= c2&amp;lt;/code&amp;gt; * &amp;lt;code&amp;gt;a &amp;lt; b &amp;lt; c&amp;lt;/code&amp;gt; * &amp;lt;code&amp;gt;x...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Se consideră numerele naturale nenule &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt; și &amp;lt;code&amp;gt;D&amp;lt;/code&amp;gt; urmate de o secvență &amp;lt;code&amp;gt;S&amp;lt;/code&amp;gt; de &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt; numere naturale nenule ordonate crescător, indexate de la &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; la &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= Cerința =&lt;br /&gt;
Să se determine numărul de cvintete de indici &amp;lt;code&amp;gt;(i1, i2, i3, i4, i5)&amp;lt;/code&amp;gt; ce verifică relațiile:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;a • b • c = D&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;a • x2&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;+ b • y2&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;= c2&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;a &amp;lt; b &amp;lt; c&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;x ≠ y&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
unde am notat cu &amp;lt;code&amp;gt;a = S[i1]&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;b = S[i2]&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;c = S[i3]&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;x = S[i4]&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;y = S[i5]&amp;lt;/code&amp;gt;. Rezultatul se va afișa modulo &amp;lt;code&amp;gt;1.000.000.007&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= Date de intrare =&lt;br /&gt;
Fișierul de intrare &amp;lt;code&amp;gt;input.txt&amp;lt;/code&amp;gt; conține pe prima linie două numere naturale nenule &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt; și &amp;lt;code&amp;gt;D&amp;lt;/code&amp;gt; cu semnificația&lt;br /&gt;
&lt;br /&gt;
din enunț. Pe următoarea linie se vor afla &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt; numere naturale nenule ordonate crescător.&lt;br /&gt;
&lt;br /&gt;
= Date de ieșire =&lt;br /&gt;
Fișierul de ieșire &amp;lt;code&amp;gt;output.txt&amp;lt;/code&amp;gt; va conține un singur număr natural care reprezintă rezultatul cerinței, modulo &amp;lt;code&amp;gt;1.000.000.007&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
input.txt:&lt;br /&gt;
&lt;br /&gt;
4 6&lt;br /&gt;
&lt;br /&gt;
1 2 3 3&lt;br /&gt;
&lt;br /&gt;
output.txt:&lt;br /&gt;
&lt;br /&gt;
2&lt;br /&gt;
&lt;br /&gt;
Explicație:&lt;br /&gt;
&lt;br /&gt;
Cvintetele care respectă cerința sunt: &amp;lt;code&amp;gt;(1, 2, 3, 1, 2)&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;(1, 2, 4, 1, 2)&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
input.txt:&lt;br /&gt;
&lt;br /&gt;
10 60&lt;br /&gt;
&lt;br /&gt;
1 2 3 4 4 5 6 8 10 12&lt;br /&gt;
&lt;br /&gt;
output.txt:&lt;br /&gt;
&lt;br /&gt;
4&lt;br /&gt;
&lt;br /&gt;
Explicație:&lt;br /&gt;
&lt;br /&gt;
Cvintetele care respectă cerința sunt: &amp;lt;code&amp;gt;(1, 6, 10, 8, 4)&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;(1, 6, 10, 8, 5)&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;(1, 7, 9, 2, 4)&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;(1, 7, 9, 2, 5)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python3&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
import math&lt;br /&gt;
&lt;br /&gt;
M = 1000000007&lt;br /&gt;
N = 25000&lt;br /&gt;
P = 1235789&lt;br /&gt;
&lt;br /&gt;
def gcd(A, B):&lt;br /&gt;
    r = A % B&lt;br /&gt;
    while r != 0:&lt;br /&gt;
        A = B&lt;br /&gt;
        B = r&lt;br /&gt;
        r = A % B&lt;br /&gt;
    return B&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
    with open(&amp;quot;input.txt&amp;quot;, &amp;quot;r&amp;quot;) as infile, open(&amp;quot;output.txt&amp;quot;, &amp;quot;w&amp;quot;) as outfile:&lt;br /&gt;
        n, d = map(int, infile.readline().split())&lt;br /&gt;
        f = [0] * (N + 1)&lt;br /&gt;
        di = [0] * (N + 1)&lt;br /&gt;
        pp = [0] * (N + 1)&lt;br /&gt;
        v = [0] * (P + 1)&lt;br /&gt;
        k = 0&lt;br /&gt;
        m = 0&lt;br /&gt;
&lt;br /&gt;
        l=list(map(int, infile.readline().split()))&lt;br /&gt;
&lt;br /&gt;
        for i in range(n):&lt;br /&gt;
            x = l[i]&lt;br /&gt;
            f[x] += 1&lt;br /&gt;
            if x &amp;gt; m:&lt;br /&gt;
                m = x&lt;br /&gt;
&lt;br /&gt;
        for i in range(1, m + 1):&lt;br /&gt;
            if (d % i == 0) and (f[i] &amp;gt; 0):&lt;br /&gt;
                k += 1&lt;br /&gt;
                di[k] = i&lt;br /&gt;
            pp[i] = i * i&lt;br /&gt;
            v[pp[i] % P] = i&lt;br /&gt;
&lt;br /&gt;
        sol = 0&lt;br /&gt;
&lt;br /&gt;
        for i in range(1, k - 1):&lt;br /&gt;
            a = di[i]&lt;br /&gt;
            for j in range(i + 1, k):&lt;br /&gt;
                b = di[j]&lt;br /&gt;
                e = a * b&lt;br /&gt;
                if d % e == 0:&lt;br /&gt;
                    c = d // e&lt;br /&gt;
                    if c &amp;gt; b and c &amp;lt;= m and f[c] &amp;gt; 0:&lt;br /&gt;
                        nr = f[a] * f[b] * f[c]&lt;br /&gt;
                        w = c * c&lt;br /&gt;
                        dc = gcd(a, b)&lt;br /&gt;
                        if w % dc == 0:&lt;br /&gt;
                            l = int(math.sqrt(w / b))&lt;br /&gt;
                            for u in range(1, l + 1):&lt;br /&gt;
                                if (w - b * pp[u]) % a == 0:&lt;br /&gt;
                                    z = (w - b * pp[u]) // a&lt;br /&gt;
                                    h = v[z % P]&lt;br /&gt;
                                    if h * h == z and h != u and h &amp;lt;= m:&lt;br /&gt;
                                        sol += nr * f[u] * f[h]&lt;br /&gt;
&lt;br /&gt;
        outfile.write(str(sol % M) + &amp;quot;\n&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    main()&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Miawinator</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=3067_-_optime&amp;diff=9051</id>
		<title>3067 - optime</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=3067_-_optime&amp;diff=9051"/>
		<updated>2024-01-05T01:38:19Z</updated>

		<summary type="html">&lt;p&gt;Miawinator: Pagină nouă: Maria iubește numerele prime. Ea scrie pe o foaie de hârtie, în ordine strict crescătoare, un șir format din numerele prime care au cel puțin două cifre. Apoi, din numerele care conțin mai mult de două cifre taie cifrele din stânga, astfel încât să rămână exact două cifre. Dacă după tăierea cifrelor numărul obținut nu este cuprins între &amp;lt;code&amp;gt;10&amp;lt;/code&amp;gt; și &amp;lt;code&amp;gt;99&amp;lt;/code&amp;gt;, numărul este eliminat din șir. De exemplu, numărul prim &amp;lt;code&amp;gt;101&amp;lt;/code&amp;gt;, care...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Maria iubește numerele prime. Ea scrie pe o foaie de hârtie, în ordine strict crescătoare, un șir format din numerele prime care au cel puțin două cifre. Apoi, din numerele care conțin mai mult de două cifre taie cifrele din stânga, astfel încât să rămână exact două cifre. Dacă după tăierea cifrelor numărul obținut nu este cuprins între &amp;lt;code&amp;gt;10&amp;lt;/code&amp;gt; și &amp;lt;code&amp;gt;99&amp;lt;/code&amp;gt;, numărul este eliminat din șir. De exemplu, numărul prim &amp;lt;code&amp;gt;101&amp;lt;/code&amp;gt;, care are trei cifre, nu va fi scris, deoarece i se taie cifra din stânga, rezultând numărul &amp;lt;code&amp;gt;01&amp;lt;/code&amp;gt;, adică &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;, care nu are exact două cifre, deci după tăiere va fi eliminat din șir.&lt;br /&gt;
&lt;br /&gt;
Maria umple un tabel cu &amp;lt;code&amp;gt;2 * k&amp;lt;/code&amp;gt; linii și &amp;lt;code&amp;gt;k&amp;lt;/code&amp;gt; coloane, astfel încât, parcurgându-l pe linii, de sus în jos și fiecare linie de la stânga la dreapta, se obțin numerele din șir. Studiind numerele din tabel, constată că printre acestea se află și numere care nu sunt prime. De exemplu, pentru &amp;lt;code&amp;gt;k = 4&amp;lt;/code&amp;gt;, tabelul arată ca în imagine.&lt;br /&gt;
&lt;br /&gt;
= Cerința =&lt;br /&gt;
Cunoscând un număr natural &amp;lt;code&amp;gt;k&amp;lt;/code&amp;gt; nenul și un număr natural &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt;, ajutați-o pe Maria:&lt;br /&gt;
&lt;br /&gt;
1. Să determine suma numerelor din tabel care nu sunt prime. Dacă nu există numere care nu sunt prime, suma are valoarea &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
2. Să aleagă &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; coloane consecutive din tabel, astfel încât acestea să conțină, în total, un număr maxim de numere prime. Dacă există mai multe posibilități, se va alege secvența de coloane consecutive care are o valoare cât mai mare a coloanei de început din secvență. Să se determine numărul primei coloane din secvența aleasă, precum și numărul total de numere prime din secvență.&lt;br /&gt;
&lt;br /&gt;
= Date de intrare =&lt;br /&gt;
Fișierul de intrare &amp;lt;code&amp;gt;input.txt&amp;lt;/code&amp;gt; conține pe prima linie o cifră &amp;lt;code&amp;gt;c&amp;lt;/code&amp;gt; care poate să fie doar &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; sau &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt;. Dacă &amp;lt;code&amp;gt;c = 1&amp;lt;/code&amp;gt;, pe linia a doua se găsește un număr natural nenul &amp;lt;code&amp;gt;k&amp;lt;/code&amp;gt; cu semnificația din enunț. Dacă &amp;lt;code&amp;gt;c = 2&amp;lt;/code&amp;gt;, pe linia a doua se află două numere naturale nenule, &amp;lt;code&amp;gt;k&amp;lt;/code&amp;gt; și &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt;, cu semnificația din enunț.&lt;br /&gt;
&lt;br /&gt;
= Date de ieșire =&lt;br /&gt;
Dacă valoarea lui &amp;lt;code&amp;gt;c&amp;lt;/code&amp;gt; este &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;, atunci se va rezolva numai punctul 1 din cerință. În acest caz, fișierul de ieșire &amp;lt;code&amp;gt;output.txt&amp;lt;/code&amp;gt; va conţine pe prima linie un număr natural reprezentând valoarea sumei determinate.&lt;br /&gt;
&lt;br /&gt;
Dacă valoarea lui &amp;lt;code&amp;gt;c&amp;lt;/code&amp;gt; este &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt;, se va rezolva numai punctul 2 din cerință. În acest caz, fișierul de ieșire &amp;lt;code&amp;gt;output.txt&amp;lt;/code&amp;gt; va conține pe prima linie un număr natural reprezentând numărul de ordine al primei coloane conform cerinței, iar pe linia a doua numărul de numere prime, conform cerinței.&lt;br /&gt;
&lt;br /&gt;
= Restricții și precizări =&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;1 ≤ x ≤ k ≤ 200&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Exemplul 1 =&lt;br /&gt;
input.txt:&lt;br /&gt;
&lt;br /&gt;
1&lt;br /&gt;
&lt;br /&gt;
4&lt;br /&gt;
&lt;br /&gt;
output.txt:&lt;br /&gt;
&lt;br /&gt;
286&lt;br /&gt;
&lt;br /&gt;
Explicație:&lt;br /&gt;
&lt;br /&gt;
Pentru &amp;lt;code&amp;gt;k = 4&amp;lt;/code&amp;gt;, în tabel se află următoarele numere neprime: &amp;lt;code&amp;gt;27&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;39&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;49&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;51&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;57&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;63&amp;lt;/code&amp;gt;, suma lor fiind &amp;lt;code&amp;gt;286&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
input.txt:&lt;br /&gt;
&lt;br /&gt;
2&lt;br /&gt;
&lt;br /&gt;
4 3&lt;br /&gt;
&lt;br /&gt;
output.txt:&lt;br /&gt;
&lt;br /&gt;
2&lt;br /&gt;
&lt;br /&gt;
19&lt;br /&gt;
&lt;br /&gt;
Explicație:&lt;br /&gt;
&lt;br /&gt;
Coloana &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; conține &amp;lt;code&amp;gt;7&amp;lt;/code&amp;gt; numere prime, coloana &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt; conține &amp;lt;code&amp;gt;6&amp;lt;/code&amp;gt; numere prime, coloana &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt; conține &amp;lt;code&amp;gt;6&amp;lt;/code&amp;gt; numere prime, iar coloana &amp;lt;code&amp;gt;4&amp;lt;/code&amp;gt; conține &amp;lt;code&amp;gt;7&amp;lt;/code&amp;gt; numere prime. Putem alege fie coloanele &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt;, fie coloanele &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;4&amp;lt;/code&amp;gt;, ambele variante conținând câte &amp;lt;code&amp;gt;19&amp;lt;/code&amp;gt; numere prime. Se alege a doua variantă, pentru că are valoarea mai mare a coloanei de început a secvenței.&lt;br /&gt;
&lt;br /&gt;
== Exemplul 3 ==&lt;br /&gt;
intput.txt:&lt;br /&gt;
&lt;br /&gt;
2&lt;br /&gt;
&lt;br /&gt;
99999999999999 3&lt;br /&gt;
&lt;br /&gt;
Output:&lt;br /&gt;
&lt;br /&gt;
Input-ul nu convine conditiilor&lt;br /&gt;
&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python3&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
from math import sqrt&lt;br /&gt;
&lt;br /&gt;
def verificare(n):&lt;br /&gt;
    if not(1&amp;lt;=n&amp;lt;=200):&lt;br /&gt;
        print(&amp;quot;Input-ul nu convine conditiilor&amp;quot;)&lt;br /&gt;
        exit()&lt;br /&gt;
&lt;br /&gt;
N = 2000000&lt;br /&gt;
&lt;br /&gt;
fin = open(&amp;quot;input.txt&amp;quot;, &amp;quot;r&amp;quot;)&lt;br /&gt;
fout = open(&amp;quot;output.txt&amp;quot;, &amp;quot;w&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
task, k, x = 0, 0, 0&lt;br /&gt;
a = [[0]*201 for _ in range(401)]&lt;br /&gt;
v = [0]*201&lt;br /&gt;
sp = [0]*201&lt;br /&gt;
s = 0&lt;br /&gt;
e = [0] * (N + 1)&lt;br /&gt;
prime = []&lt;br /&gt;
&lt;br /&gt;
def ciur():&lt;br /&gt;
    global prime&lt;br /&gt;
    temp = 0&lt;br /&gt;
    &lt;br /&gt;
    e[0] = e[1] = 1&lt;br /&gt;
    for i in range(2, N + 1):&lt;br /&gt;
        if not e[i]:&lt;br /&gt;
            for j in range(i * 2, N + 1, i):&lt;br /&gt;
                e[j] = 1&lt;br /&gt;
&lt;br /&gt;
    for i in range(10, N + 1):&lt;br /&gt;
        if i &amp;lt; 100 and not e[i]:&lt;br /&gt;
            prime.append(i)&lt;br /&gt;
        elif i &amp;gt; 100 and not e[i]:&lt;br /&gt;
            temp = i % 100&lt;br /&gt;
            if temp &amp;gt;= 10:&lt;br /&gt;
                prime.append(temp)&lt;br /&gt;
&lt;br /&gt;
def read():&lt;br /&gt;
    global task, k, x&lt;br /&gt;
    task=int(fin.readline())&lt;br /&gt;
&lt;br /&gt;
    if task == 1:&lt;br /&gt;
        k = int(fin.readline())&lt;br /&gt;
        verificare(k)&lt;br /&gt;
    if task == 2:&lt;br /&gt;
        k, x = map(int, fin.readline().split())&lt;br /&gt;
        verificare(k)&lt;br /&gt;
&lt;br /&gt;
def build():&lt;br /&gt;
    global s&lt;br /&gt;
    p = 0&lt;br /&gt;
&lt;br /&gt;
    for i in range(1, 2 * k + 1):&lt;br /&gt;
        for j in range(1, k + 1):&lt;br /&gt;
            a[i][j] = prime[p]&lt;br /&gt;
            s += a[i][j] * (e[a[i][j]] == 1)&lt;br /&gt;
&lt;br /&gt;
            if a[i][j] &amp;gt; 10 and not e[a[i][j]]:&lt;br /&gt;
                v[j] += 1&lt;br /&gt;
&lt;br /&gt;
            p += 1&lt;br /&gt;
&lt;br /&gt;
def solve():&lt;br /&gt;
    global s&lt;br /&gt;
    if task == 1:&lt;br /&gt;
        fout.write(str(s))&lt;br /&gt;
    else:&lt;br /&gt;
        nr_prime = 0&lt;br /&gt;
        maxi = -1&lt;br /&gt;
        first = 0&lt;br /&gt;
&lt;br /&gt;
        for i in range(1, k + 1):&lt;br /&gt;
            sp[i] = sp[i - 1] + v[i]&lt;br /&gt;
&lt;br /&gt;
        for i in range(x, k + 1):&lt;br /&gt;
            nr_prime = sp[i] - sp[i - x]&lt;br /&gt;
            if nr_prime &amp;gt;= maxi:&lt;br /&gt;
                maxi = nr_prime&lt;br /&gt;
                first = i - x + 1&lt;br /&gt;
        fout.write(str(first)+&amp;quot;\n&amp;quot;)&lt;br /&gt;
        fout.write(str(maxi))&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    ciur()&lt;br /&gt;
    read()&lt;br /&gt;
    build()&lt;br /&gt;
    solve()&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Miawinator</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=3043_-_cub3&amp;diff=9050</id>
		<title>3043 - cub3</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=3043_-_cub3&amp;diff=9050"/>
		<updated>2024-01-05T00:53:01Z</updated>

		<summary type="html">&lt;p&gt;Miawinator: Pagină nouă: Ionel are de rezolvat o nouă problemă. El trebuie să construiască un șir de &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt; numere naturale. Numerele din șir pot avea ca divizori primi doar numere prime de o cifră. După construirea șirului, Ionel a constatat că există subsecvențe în șir pentru care produsul elementelor este cubul unui număr natural.  = Cerința = Ionel vrea să determine numărul subsecvențelor din șirul construit care au produsul elementelor o valoare ce este cubul unui num...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Ionel are de rezolvat o nouă problemă. El trebuie să construiască un șir de &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt; numere naturale. Numerele din șir pot avea ca divizori primi doar numere prime de o cifră. După construirea șirului, Ionel a constatat că există subsecvențe în șir pentru care produsul elementelor este cubul unui număr natural.&lt;br /&gt;
&lt;br /&gt;
= Cerința =&lt;br /&gt;
Ionel vrea să determine numărul subsecvențelor din șirul construit care au produsul elementelor o valoare ce este cubul unui număr natural.&lt;br /&gt;
&lt;br /&gt;
= Date de intrare =&lt;br /&gt;
Fișierul de intrare &amp;lt;code&amp;gt;input.txt&amp;lt;/code&amp;gt; va conține pe prima linie numărul natural &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt;, iar pe linia următoare se vor afla &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt; numere naturale separate prin câte un spațiu, elementele șirului construit de Ionel.&lt;br /&gt;
&lt;br /&gt;
= Date de ieșire =&lt;br /&gt;
Fișierul de ieșire &amp;lt;code&amp;gt;output.txt&amp;lt;/code&amp;gt; va conține pe prima linie un număr natural reprezentând numărul subsecvenţelor din șirul construit care au produsul elementelor egal cu o valoare ce este cubul unui număr natural.&lt;br /&gt;
&lt;br /&gt;
= Restricții și precizări =&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt; și elemente șirului sunt numere naturale din intervalul &amp;lt;code&amp;gt;[2, 1.000.000]&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
input.txt:&lt;br /&gt;
&lt;br /&gt;
8&lt;br /&gt;
&lt;br /&gt;
15 3 5 15 7 63 21 125&lt;br /&gt;
&lt;br /&gt;
output.txt:&lt;br /&gt;
&lt;br /&gt;
6&lt;br /&gt;
&lt;br /&gt;
Explicație:&lt;br /&gt;
&lt;br /&gt;
Sunt &amp;lt;code&amp;gt;6&amp;lt;/code&amp;gt; subsecvențe în șir cu produsul elementelor egal cu o valoare care este cubul unui număr natural:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;15 3 5 15&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;7 63 21&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;125&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;15 3 5 15 7 63 21&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;7 63 21 125&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;15 3 5 15 7 63 21 125&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
input.txt:&lt;br /&gt;
&lt;br /&gt;
99999999999&lt;br /&gt;
&lt;br /&gt;
15 3 5 15 7 63 21 125&lt;br /&gt;
&lt;br /&gt;
Output:&lt;br /&gt;
&lt;br /&gt;
Input-ul nu convine conditiilor&lt;br /&gt;
&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python3&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
import math&lt;br /&gt;
&lt;br /&gt;
def verificare(n):&lt;br /&gt;
    if not(2&amp;lt;=n&amp;lt;=1000000):&lt;br /&gt;
        print(&amp;quot;Input-ul nu convine conditiilor&amp;quot;)&lt;br /&gt;
        exit()&lt;br /&gt;
&lt;br /&gt;
def convert():&lt;br /&gt;
    return crtState[3] * 3 * 3 * 3 + crtState[2] * 3 * 3 + crtState[1] * 3 + crtState[0]&lt;br /&gt;
&lt;br /&gt;
fin = open(&amp;quot;input.txt&amp;quot;, &amp;quot;r&amp;quot;)&lt;br /&gt;
fout = open(&amp;quot;output.txt&amp;quot;, &amp;quot;w&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
n = int(fin.readline())&lt;br /&gt;
verificare(n)&lt;br /&gt;
i, j, nr, x, mul, sol = 0, 0, 0, 0, 0, 0&lt;br /&gt;
crtState = [0] * 4&lt;br /&gt;
states = [0] * 100&lt;br /&gt;
divs = [2, 3, 5, 7]&lt;br /&gt;
&lt;br /&gt;
l=list(map(int, fin.readline().split()))&lt;br /&gt;
&lt;br /&gt;
for _ in range(1, n + 1):&lt;br /&gt;
    x = l[i-1]&lt;br /&gt;
&lt;br /&gt;
    for j in range(4):&lt;br /&gt;
        nr = 0&lt;br /&gt;
        while x % divs[j] == 0:&lt;br /&gt;
            nr += 1&lt;br /&gt;
            x //= divs[j]&lt;br /&gt;
            crtState[j] += 1&lt;br /&gt;
&lt;br /&gt;
        crtState[j] %= 3&lt;br /&gt;
&lt;br /&gt;
    states[convert()] += 1&lt;br /&gt;
&lt;br /&gt;
states[0] += 1&lt;br /&gt;
&lt;br /&gt;
for i in range(81):&lt;br /&gt;
    sol += states[i] * (states[i] - 1) // 2&lt;br /&gt;
&lt;br /&gt;
fout.write(str(int(math.sqrt(sol))))&lt;br /&gt;
&lt;br /&gt;
fin.close()&lt;br /&gt;
fout.close()&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Miawinator</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=2897_-_numere26&amp;diff=9049</id>
		<title>2897 - numere26</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=2897_-_numere26&amp;diff=9049"/>
		<updated>2024-01-05T00:14:30Z</updated>

		<summary type="html">&lt;p&gt;Miawinator: Pagină nouă: Se consideră un șir format din &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; numere naturale. Asupra numerelor din șir se face următoarea prelucrare: fiecare valoare este înlocuită cu cel mai mare divizor prim al său. În noul șir se formează secvențe de numere care încep și se termină cu aceeași valoare, numite secvențe neuniforme.  = Cerința = Cunoscând numerele naturale &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; și &amp;lt;code&amp;gt;c&amp;lt;/code&amp;gt;, și un șir de &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; numere naturale, se cere să se rezolve următoarele...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Se consideră un șir format din &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; numere naturale. Asupra numerelor din șir se face următoarea prelucrare: fiecare valoare este înlocuită cu cel mai mare divizor prim al său. În noul șir se formează secvențe de numere care încep și se termină cu aceeași valoare, numite secvențe neuniforme.&lt;br /&gt;
&lt;br /&gt;
= Cerința =&lt;br /&gt;
Cunoscând numerele naturale &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; și &amp;lt;code&amp;gt;c&amp;lt;/code&amp;gt;, și un șir de &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; numere naturale, se cere să se rezolve următoarele cerințe:&lt;br /&gt;
&lt;br /&gt;
1. dacă &amp;lt;code&amp;gt;c = 1&amp;lt;/code&amp;gt;, atunci se cere să se afișeze lungimea maximă a unei secvențe neuniforme.&lt;br /&gt;
&lt;br /&gt;
2. dacă &amp;lt;code&amp;gt;c = 2&amp;lt;/code&amp;gt;, atunci se cere să se afișeze numărul total de secvențe neuniforme din șir.&lt;br /&gt;
&lt;br /&gt;
= Date de intrare =&lt;br /&gt;
Fișierul de intrare &amp;lt;code&amp;gt;input.txt&amp;lt;/code&amp;gt; conține pe prima linie, despărțite prin câte un spațiu, numerele naturale &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; și &amp;lt;code&amp;gt;c&amp;lt;/code&amp;gt;, cu semnificația din enunț. A doua linie conține &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; numere naturale, despărțite prin câte un spațiu.&lt;br /&gt;
&lt;br /&gt;
= Date de ieșire =&lt;br /&gt;
Dacă &amp;lt;code&amp;gt;c = 1&amp;lt;/code&amp;gt;, atunci pe prima linie a fișierului &amp;lt;code&amp;gt;output.txt&amp;lt;/code&amp;gt; va fi scris un singur număr ce reprezintă lungimea maximă a unei secvențe neuniforme. Dacă &amp;lt;code&amp;gt;c = 2&amp;lt;/code&amp;gt;, atunci fișierul &amp;lt;code&amp;gt;output.txt&amp;lt;/code&amp;gt; va conține un singur număr ce reprezintă numărul total de secvențe neuniforme.&lt;br /&gt;
&lt;br /&gt;
= Restricții și precizări =&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;0 &amp;lt; n &amp;lt; 10.000&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
input.txt:&lt;br /&gt;
&lt;br /&gt;
6  1&lt;br /&gt;
&lt;br /&gt;
14 2 49 3 35 1024  &lt;br /&gt;
&lt;br /&gt;
output.txt:&lt;br /&gt;
&lt;br /&gt;
5&lt;br /&gt;
&lt;br /&gt;
Explicație:&lt;br /&gt;
&lt;br /&gt;
Cele &amp;lt;code&amp;gt;10&amp;lt;/code&amp;gt; numere sunt înlocuite cu valorile: &amp;lt;code&amp;gt;7&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;5&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;5&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;5&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt;. Numărul total de secvențe neuniforme din șir este &amp;lt;code&amp;gt;3 + 3 + 3 = 9&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
input.txt:&lt;br /&gt;
&lt;br /&gt;
10 2&lt;br /&gt;
&lt;br /&gt;
14 8 3 25 6 24 20 1024 100 2&lt;br /&gt;
&lt;br /&gt;
output.txt:&lt;br /&gt;
&lt;br /&gt;
9&lt;br /&gt;
&lt;br /&gt;
Explicație:&lt;br /&gt;
&lt;br /&gt;
Cele &amp;lt;code&amp;gt;10&amp;lt;/code&amp;gt; numere sunt înlocuite cu valorile: &amp;lt;code&amp;gt;7&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;5&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;5&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;5&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt;. Numărul total de secvențe neuniforme din șir este &amp;lt;code&amp;gt;3 + 3 + 3 = 9&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Exemplul 3 ==&lt;br /&gt;
input.txt:&lt;br /&gt;
&lt;br /&gt;
999999999999 2&lt;br /&gt;
&lt;br /&gt;
14 8 3 25 6 24 20 1024 100 2&lt;br /&gt;
&lt;br /&gt;
Output:&lt;br /&gt;
&lt;br /&gt;
Input-ul nu convine conditiilor&lt;br /&gt;
&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python3&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
def verificare(n):&lt;br /&gt;
    if not(1&amp;lt;=n&amp;lt;=10000):&lt;br /&gt;
        print(&amp;quot;Input-ul nu convine conditiilor&amp;quot;)&lt;br /&gt;
        exit()&lt;br /&gt;
&lt;br /&gt;
def fact_max(a):&lt;br /&gt;
    f = 2&lt;br /&gt;
    r = 0&lt;br /&gt;
    if a % 2 == 0:&lt;br /&gt;
        r = 2&lt;br /&gt;
        while a % 2 == 0:&lt;br /&gt;
            a //= 2&lt;br /&gt;
    for f in range(3, a + 1, 2):&lt;br /&gt;
        if a % f == 0:&lt;br /&gt;
            r = f&lt;br /&gt;
            while a % f == 0:&lt;br /&gt;
                a //= f&lt;br /&gt;
    return r&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
    with open(&amp;quot;input.txt&amp;quot;, &amp;quot;r&amp;quot;) as fin, open(&amp;quot;output.txt&amp;quot;, &amp;quot;w&amp;quot;) as fout:&lt;br /&gt;
        s = 0&lt;br /&gt;
        n, c = map(int, fin.readline().split())&lt;br /&gt;
        verificare(n)&lt;br /&gt;
        fr1 = [0] * 10000&lt;br /&gt;
        fr2 = [0] * 10000&lt;br /&gt;
        mx = 0&lt;br /&gt;
        lmax = 0&lt;br /&gt;
&lt;br /&gt;
        l=list(map(int, fin.readline().split()))&lt;br /&gt;
&lt;br /&gt;
        for i in range(1, n + 1):&lt;br /&gt;
            a = l[i-1]&lt;br /&gt;
            x = fact_max(a)&lt;br /&gt;
&lt;br /&gt;
            if x &amp;gt; mx:&lt;br /&gt;
                mx = x  # cel mai mare nr prim care apare in urma prelucrarii sirului initial&lt;br /&gt;
&lt;br /&gt;
            # cerinta 1&lt;br /&gt;
            if fr1[x] == 0:&lt;br /&gt;
                fr1[x] = i&lt;br /&gt;
            else:&lt;br /&gt;
                d = i - fr1[x] + 1&lt;br /&gt;
                if d &amp;gt; lmax:&lt;br /&gt;
                    lmax = d&lt;br /&gt;
&lt;br /&gt;
            # cerinta 2&lt;br /&gt;
            fr2[x] += 1&lt;br /&gt;
&lt;br /&gt;
        if c == 1:&lt;br /&gt;
            fout.write(str(lmax) + &amp;quot;\n&amp;quot;)&lt;br /&gt;
        else:&lt;br /&gt;
            # rezolvarea de la cerinta 2&lt;br /&gt;
            # calculez suma de x*(x-1)/2, unde x=fr2[i]&lt;br /&gt;
&lt;br /&gt;
            if fr2[2] &amp;gt; 1:&lt;br /&gt;
                s += fr2[2] * (fr2[2] - 1) // 2&lt;br /&gt;
&lt;br /&gt;
            # i-au mai ramas numai valori prime impare&lt;br /&gt;
            for i in range(3, mx + 1, 2):&lt;br /&gt;
                if fr2[i] &amp;gt; 1:&lt;br /&gt;
                    s += fr2[i] * (fr2[i] - 1) // 2&lt;br /&gt;
&lt;br /&gt;
            fout.write(str(s) + &amp;quot;\n&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    main()&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Miawinator</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=2440_-_puzzle&amp;diff=9048</id>
		<title>2440 - puzzle</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=2440_-_puzzle&amp;diff=9048"/>
		<updated>2024-01-05T00:03:29Z</updated>

		<summary type="html">&lt;p&gt;Miawinator: Pagină nouă: Mihai a primit de ziua lui un joc de puzzle. Jocul are &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt; piese confecţionate prin lipirea unor bucăţi de dimensiune &amp;lt;code&amp;gt;1x1&amp;lt;/code&amp;gt; (ilustrate în figurile de mai jos prin &amp;lt;code&amp;gt;X&amp;lt;/code&amp;gt;); aceste bucăţi le vom numi în continuare, pe scurt, &amp;lt;code&amp;gt;X&amp;lt;/code&amp;gt;-uri. Pentru confecţionarea unei piese se respectă următoarele reguli:  1. &amp;lt;code&amp;gt;X&amp;lt;/code&amp;gt;-urile sunt aşezate unul peste altul, formând coloane ce pot avea înălţimi diferite, apoi coloanele se alinia...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Mihai a primit de ziua lui un joc de puzzle. Jocul are &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt; piese confecţionate prin lipirea unor bucăţi de dimensiune &amp;lt;code&amp;gt;1x1&amp;lt;/code&amp;gt; (ilustrate în figurile de mai jos prin &amp;lt;code&amp;gt;X&amp;lt;/code&amp;gt;); aceste bucăţi le vom numi în continuare, pe scurt, &amp;lt;code&amp;gt;X&amp;lt;/code&amp;gt;-uri. Pentru confecţionarea unei piese se respectă următoarele reguli:&lt;br /&gt;
&lt;br /&gt;
1. &amp;lt;code&amp;gt;X&amp;lt;/code&amp;gt;-urile sunt aşezate unul peste altul, formând coloane ce pot avea înălţimi diferite, apoi coloanele se aliniază în partea de jos şi se lipesc între ele, una după cealaltă, de la stânga spre dreapta;&lt;br /&gt;
&lt;br /&gt;
2. pe o coloană sunt cel mult nouă &amp;lt;code&amp;gt;X&amp;lt;/code&amp;gt;-uri;&lt;br /&gt;
&lt;br /&gt;
3. toate piesele au acelaşi număr de coloane.&lt;br /&gt;
&lt;br /&gt;
Exemple:&lt;br /&gt;
&lt;br /&gt;
În figurile 1, 2, 3, 4 sunt piese de puzzle care respectă regulile descrise, iar în figura 5 și în figura 6 NU sunt piese de puzzle, pentru că nu pot fi obţinute prin lipirea unor coloane de &amp;lt;code&amp;gt;X&amp;lt;/code&amp;gt;-uri, una după cealaltă, de la stânga spre dreapta.&lt;br /&gt;
&lt;br /&gt;
Fiind mic, Mihai nu poate rezolva puzzle-ul, dar poate face o singură operaţie: alege două piese şi le îmbină în dreptul laturilor de sus, răsturnând una dintre piese sus-jos (fără să o rotească sau să o răstoarne stânga-dreapta). Dacă în urma acestei operaţii el obţine un dreptunghi format din coloane complete de &amp;lt;code&amp;gt;X&amp;lt;/code&amp;gt;-uri, toate coloanele având aceeaşi înălţime, este mulţumit. De exemplu, piesa din figura 1 și cea din figura 2 pot fi îmbinate în modul descris.&lt;br /&gt;
&lt;br /&gt;
În figura 7 este piesa din figura 2 răsturnată sus-jos. În figura 8 este ilustrat dreptunghiul care se obţine din piesa din figura 1 şi piesa din figura 2 răsturnată sus-jos.&lt;br /&gt;
&lt;br /&gt;
Observaţi că, dacă am roti piesa din figura 4, am putea să o îmbinăm cu piesa din figura 1, dar rotaţia nu este permisă.&lt;br /&gt;
&lt;br /&gt;
Vom codifica o piesă printr-un număr natural, fiecare cifră din număr reprezentând (în ordine de la stânga la dreapta) câte &amp;lt;code&amp;gt;X&amp;lt;/code&amp;gt;-uri se află pe coloana corespunzătoare din piesă.&lt;br /&gt;
&lt;br /&gt;
De exemplu:&lt;br /&gt;
&lt;br /&gt;
– piesa din figura 1 este codificată &amp;lt;code&amp;gt;4232&amp;lt;/code&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
– piesa din figura 2 este codificată &amp;lt;code&amp;gt;1323&amp;lt;/code&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
– piesa din figura 3 este codificată &amp;lt;code&amp;gt;4444&amp;lt;/code&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
– piesa din figura 4 este codificată &amp;lt;code&amp;gt;3231&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= Cerința =&lt;br /&gt;
Determinați care este numărul de moduri în care Mihai poate alege câte două piese dintre cele &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt; pentru a face o operaţie în modul descris mai sus.&lt;br /&gt;
&lt;br /&gt;
= Date de intrare =&lt;br /&gt;
Fișierul de intrare &amp;lt;code&amp;gt;input.txt&amp;lt;/code&amp;gt; conține pe prima linie un număr natural &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt; ce reprezintă numărul de piese din joc. Pe linia a doua se găsesc &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt; numere naturale, separate prin câte un singur spațiu, reprezentând codificările celor &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt; piese.&lt;br /&gt;
&lt;br /&gt;
= Date de ieșire =&lt;br /&gt;
Fișierul de ieșire &amp;lt;code&amp;gt;output.txt&amp;lt;/code&amp;gt; va conține o singură linie pe care va fi scris numărul cerut.&lt;br /&gt;
&lt;br /&gt;
= Restricții și precizări =&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;2 ≤ N ≤ 100 000&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
input.txt:&lt;br /&gt;
&lt;br /&gt;
5&lt;br /&gt;
&lt;br /&gt;
222 432 234 123 111&lt;br /&gt;
&lt;br /&gt;
output.txt:&lt;br /&gt;
&lt;br /&gt;
3&lt;br /&gt;
&lt;br /&gt;
Explicație:&lt;br /&gt;
&lt;br /&gt;
Se pot îmbina &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt; perechi de piese: piesa &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; cu piesa &amp;lt;code&amp;gt;5&amp;lt;/code&amp;gt;, piesa &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt; cu piesa &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt;, piesa &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt; cu piesa &amp;lt;code&amp;gt;4&amp;lt;/code&amp;gt;. Piesele &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt; și &amp;lt;code&amp;gt;4&amp;lt;/code&amp;gt; s-ar putea îmbina corect dacă una dintre ele ar fi răsturnată stânga-dreapta sau rotită, dar acest lucru nu e permis.&lt;br /&gt;
&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
input.txt:&lt;br /&gt;
&lt;br /&gt;
99999999999999999&lt;br /&gt;
&lt;br /&gt;
32 3 2 1 31 4 1&lt;br /&gt;
&lt;br /&gt;
Output:&lt;br /&gt;
&lt;br /&gt;
Input-ul nu convine conditiilor&lt;br /&gt;
&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python3&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
def verificare(n):&lt;br /&gt;
    if not(2&amp;lt;=n&amp;lt;=100000):&lt;br /&gt;
        print(&amp;quot;Input-ul nu convine conditiilor&amp;quot;)&lt;br /&gt;
        exit()&lt;br /&gt;
&lt;br /&gt;
f = [0] * 100001&lt;br /&gt;
v = []&lt;br /&gt;
frecv = [0] * 12&lt;br /&gt;
rez = 0&lt;br /&gt;
n = 0&lt;br /&gt;
k = 0&lt;br /&gt;
&lt;br /&gt;
def fa(numar):&lt;br /&gt;
    global frecv&lt;br /&gt;
    t = 0&lt;br /&gt;
    mi = 9&lt;br /&gt;
    while numar:&lt;br /&gt;
        t += 1&lt;br /&gt;
        frecv[t] = numar % 10&lt;br /&gt;
        numar //= 10&lt;br /&gt;
        if frecv[t] &amp;lt; mi:&lt;br /&gt;
            mi = frecv[t]&lt;br /&gt;
    r = 0&lt;br /&gt;
    for i in range(t, 0, -1):&lt;br /&gt;
        r = r * 10 + (frecv[i] - mi)&lt;br /&gt;
    return r&lt;br /&gt;
&lt;br /&gt;
def intoarce(code, k):&lt;br /&gt;
    global frecv&lt;br /&gt;
    t = 0&lt;br /&gt;
    aux = code&lt;br /&gt;
    ma = 0&lt;br /&gt;
    for i in range(1, k + 1):&lt;br /&gt;
        t += 1&lt;br /&gt;
        frecv[t] = aux % 10&lt;br /&gt;
        aux //= 10&lt;br /&gt;
        ma = max(ma, frecv[t])&lt;br /&gt;
    r = 0&lt;br /&gt;
    for i in range(t, 0, -1):&lt;br /&gt;
        r = r * 10 + (ma - frecv[i])&lt;br /&gt;
    return r&lt;br /&gt;
&lt;br /&gt;
def lungime_nr(n):&lt;br /&gt;
    cnt = 0&lt;br /&gt;
    while n:&lt;br /&gt;
        cnt += 1&lt;br /&gt;
        n //= 10&lt;br /&gt;
    return cnt&lt;br /&gt;
&lt;br /&gt;
with open(&amp;quot;input.txt&amp;quot;, &amp;quot;r&amp;quot;) as fin, open(&amp;quot;output.txt&amp;quot;, &amp;quot;w&amp;quot;) as fout:&lt;br /&gt;
    n = int(fin.readline().strip())&lt;br /&gt;
    verificare(n)&lt;br /&gt;
    v = list(map(int, fin.readline().split()))&lt;br /&gt;
    if n &amp;gt; 0:&lt;br /&gt;
        k = lungime_nr(v[0])&lt;br /&gt;
    &lt;br /&gt;
    for i in range(1, n + 1):&lt;br /&gt;
        f[fa(v[i - 1])] += 1&lt;br /&gt;
&lt;br /&gt;
    rez = 0&lt;br /&gt;
    for i in range(1, 100001):&lt;br /&gt;
        rez += 1 * f[i] * f[intoarce(i, k)]&lt;br /&gt;
&lt;br /&gt;
    rez //= 2&lt;br /&gt;
    rez += 1 * f[0] * (f[0] - 1) // 2&lt;br /&gt;
    fout.write(str(rez) + &amp;quot;\n&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Miawinator</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=2350_-_grup&amp;diff=9047</id>
		<title>2350 - grup</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=2350_-_grup&amp;diff=9047"/>
		<updated>2024-01-04T23:58:13Z</updated>

		<summary type="html">&lt;p&gt;Miawinator: Pagină nouă: Ionel este pasionat de problemele cu șiruri de numere naturale. Pornind de la un șir dat, el numește grup un subșir de numere care se formează după criterii precizate. De aceasta dată, el alege două criterii:  Criteriul 1: grupează numerele după prima lor cifră. De exemplu, numerele &amp;lt;code&amp;gt;231&amp;lt;/code&amp;gt; și &amp;lt;code&amp;gt;2745&amp;lt;/code&amp;gt; aparțin aceluiași grup deoarece ambele încep cu aceeași cifră (&amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt;).  Criteriul 2: pune în același grup toate numerele care au...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Ionel este pasionat de problemele cu șiruri de numere naturale. Pornind de la un șir dat, el numește grup un subșir de numere care se formează după criterii precizate. De aceasta dată, el alege două criterii:&lt;br /&gt;
&lt;br /&gt;
Criteriul 1: grupează numerele după prima lor cifră. De exemplu, numerele &amp;lt;code&amp;gt;231&amp;lt;/code&amp;gt; și &amp;lt;code&amp;gt;2745&amp;lt;/code&amp;gt; aparțin aceluiași grup deoarece ambele încep cu aceeași cifră (&amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
Criteriul 2: pune în același grup toate numerele care au în componența lor aceleași cifre, indiferent de numărul de apariții a fiecărei cifre. De exemplu, numerele &amp;lt;code&amp;gt;234372&amp;lt;/code&amp;gt; și &amp;lt;code&amp;gt;3224727&amp;lt;/code&amp;gt; vor fi plasate în același grup deoarece în componența ambelor intră cifrele &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;4&amp;lt;/code&amp;gt; si &amp;lt;code&amp;gt;7&amp;lt;/code&amp;gt;, și numai acestea.&lt;br /&gt;
&lt;br /&gt;
= Cerința =&lt;br /&gt;
Scrieţi un program care, pentru un şir dat de n numere naturale, rezolvă următoarele cerințe:&lt;br /&gt;
&lt;br /&gt;
# determină numărul minim dintre numerele aparținând celui mai numeros grup care se formează conform Criteriului 1. Dacă sunt mai multe grupuri cu număr maxim de elemente, se va determina numărul minim din grupul pentru care prima cifra este cea mai mică.&lt;br /&gt;
# determină numărul de elemente ale celui mai numeros grup care se formează conform Criteriului 2.&lt;br /&gt;
&lt;br /&gt;
= Date de intrare =&lt;br /&gt;
Fișierul de intrare &amp;lt;code&amp;gt;input.txt&amp;lt;/code&amp;gt; conţine pe prima linie două numere naturale &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; și &amp;lt;code&amp;gt;c&amp;lt;/code&amp;gt;, separate printr-un spațiu. Valoarea lui &amp;lt;code&amp;gt;c&amp;lt;/code&amp;gt; este &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; sau &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt;, în funcție de cerința problemei. Pe a doua linie se găsesc &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; numere naturale, separate prin câte un spațiu.&lt;br /&gt;
&lt;br /&gt;
= Date de ieșire =&lt;br /&gt;
Fișierul de ieșire &amp;lt;code&amp;gt;output.txt&amp;lt;/code&amp;gt; va conţine pe prima linie rezultatul cerut în funcție de cerința indicată în fișierul de intrare.&lt;br /&gt;
&lt;br /&gt;
= Restricții și precizări =&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;0 &amp;lt;  n ≤ 10000&amp;lt;/code&amp;gt;&lt;br /&gt;
* Valorile din șirul de intrare sunt numere naturale cu maxim &amp;lt;code&amp;gt;9&amp;lt;/code&amp;gt; cifre.&lt;br /&gt;
&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
input.txt:&lt;br /&gt;
&lt;br /&gt;
7 1&lt;br /&gt;
&lt;br /&gt;
73532 344 739 34343 34 735 23757&lt;br /&gt;
&lt;br /&gt;
output.txt:&lt;br /&gt;
&lt;br /&gt;
34&lt;br /&gt;
&lt;br /&gt;
Explicație:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;c = 1&amp;lt;/code&amp;gt;; Se formează următoarele grupuri:&lt;br /&gt;
&lt;br /&gt;
G1: &amp;lt;code&amp;gt;73532&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;739&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;735&amp;lt;/code&amp;gt; (încep cu cifra &amp;lt;code&amp;gt;7&amp;lt;/code&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
G2: &amp;lt;code&amp;gt;344&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;34343&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;34&amp;lt;/code&amp;gt; (încep cu cifra &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
G3: &amp;lt;code&amp;gt;23753&amp;lt;/code&amp;gt; (începe cu cifra &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
G1 si G2 au număr maxim de elemente (&amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt;) dar se va afișa minimul din grupul G2 (&amp;lt;code&amp;gt;34&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
input.txt:&lt;br /&gt;
&lt;br /&gt;
7 2&lt;br /&gt;
&lt;br /&gt;
73532 344 739 34343 34 433 23757&lt;br /&gt;
&lt;br /&gt;
output.txt:&lt;br /&gt;
&lt;br /&gt;
4&lt;br /&gt;
&lt;br /&gt;
Explicație:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;c = 2&amp;lt;/code&amp;gt;; Se formează următoarele grupuri:&lt;br /&gt;
&lt;br /&gt;
G1: &amp;lt;code&amp;gt;73532&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;23757&amp;lt;/code&amp;gt; (cifrele &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;7&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;5&amp;lt;/code&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
G2: &amp;lt;code&amp;gt;739&amp;lt;/code&amp;gt; (cifrele &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;7&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;9&amp;lt;/code&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
G3: &amp;lt;code&amp;gt;344&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;34343&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;34&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;433&amp;lt;/code&amp;gt; (cifrele &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;4&amp;lt;/code&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
G3 are numărul maxim de elemente (&amp;lt;code&amp;gt;4&amp;lt;/code&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
== Exemplul 3 ==&lt;br /&gt;
input.txt:&lt;br /&gt;
&lt;br /&gt;
999999999999999999 2&lt;br /&gt;
&lt;br /&gt;
73532 344 739 34343 34 433 23757&lt;br /&gt;
&lt;br /&gt;
Output:&lt;br /&gt;
&lt;br /&gt;
Input-ul nu convine conditiilor&lt;br /&gt;
&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python3&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
def verificare(n):&lt;br /&gt;
    if not(1&amp;lt;=n&amp;lt;=10000):&lt;br /&gt;
        print(&amp;quot;Input-ul nu convine conditiilor&amp;quot;)&lt;br /&gt;
        exit()&lt;br /&gt;
&lt;br /&gt;
def prima_cifra(n):&lt;br /&gt;
    while n &amp;gt; 9:&lt;br /&gt;
        n //= 10&lt;br /&gt;
    return n&lt;br /&gt;
&lt;br /&gt;
with open(&amp;quot;input.txt&amp;quot;, &amp;quot;r&amp;quot;) as fin, open(&amp;quot;output.txt&amp;quot;, &amp;quot;w&amp;quot;) as fout:&lt;br /&gt;
    n, optiune = map(int, fin.readline().split())&lt;br /&gt;
    verificare(n)&lt;br /&gt;
    NR = [0] * 11&lt;br /&gt;
    M = [1000000000] * 11&lt;br /&gt;
    a = [0] * 1025&lt;br /&gt;
&lt;br /&gt;
    l=list(map(int, fin.readline().split()))&lt;br /&gt;
&lt;br /&gt;
    if optiune == 1:&lt;br /&gt;
        for i in range(1, n + 1):&lt;br /&gt;
            x = l[i-1]&lt;br /&gt;
            c = prima_cifra(x)&lt;br /&gt;
            NR[c] += 1&lt;br /&gt;
            M[c] = min(M[c], x)&lt;br /&gt;
&lt;br /&gt;
        x = NR[0]&lt;br /&gt;
        c = M[0]&lt;br /&gt;
        for i in range(1, 10):&lt;br /&gt;
            if NR[i] &amp;gt; x:&lt;br /&gt;
                x = NR[i]&lt;br /&gt;
                c = M[i]&lt;br /&gt;
            elif x == NR[i]:&lt;br /&gt;
                c = min(c, M[i])&lt;br /&gt;
&lt;br /&gt;
        fout.write(str(c) + &amp;quot;\n&amp;quot;)&lt;br /&gt;
    else:&lt;br /&gt;
        for i in range(1, n + 1):&lt;br /&gt;
            x = l[i-1]&lt;br /&gt;
            c = 0&lt;br /&gt;
            if x == 0:&lt;br /&gt;
                c = 1&lt;br /&gt;
            else:&lt;br /&gt;
                while x &amp;gt; 0:&lt;br /&gt;
                    c |= 1 &amp;lt;&amp;lt; (x % 10)&lt;br /&gt;
                    x //= 10&lt;br /&gt;
            a[c] += 1&lt;br /&gt;
&lt;br /&gt;
        x = a[0]&lt;br /&gt;
        for i in range(1, 1025):&lt;br /&gt;
            x = max(x, a[i])&lt;br /&gt;
&lt;br /&gt;
        fout.write(str(x) + &amp;quot;\n&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Miawinator</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=2230_-_paindrom3&amp;diff=9046</id>
		<title>2230 - paindrom3</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=2230_-_paindrom3&amp;diff=9046"/>
		<updated>2024-01-04T23:38:39Z</updated>

		<summary type="html">&lt;p&gt;Miawinator: Pagină nouă: Gigel a învăţat la şcoală un nou cuvânt: palindrom. El ştie acum că un palindrom este o construcţie formată din litere sau/şi cifre care arată la fel citită de la început spre sfârşit sau citită de la sfârşit spre început. De exemplu numerele &amp;lt;code&amp;gt;2552&amp;lt;/code&amp;gt; și &amp;lt;code&amp;gt;12321&amp;lt;/code&amp;gt; au proprietatea de palindrom. Deoarece lui Gigel îi place să se joace cu cifrele, el îşi pune următoarea problemă: dat fiind un număr natural, pot fi rearanjate cifrele...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Gigel a învăţat la şcoală un nou cuvânt: palindrom. El ştie acum că un palindrom este o construcţie formată din litere sau/şi cifre care arată la fel citită de la început spre sfârşit sau citită de la sfârşit spre început. De exemplu numerele &amp;lt;code&amp;gt;2552&amp;lt;/code&amp;gt; și &amp;lt;code&amp;gt;12321&amp;lt;/code&amp;gt; au proprietatea de palindrom. Deoarece lui Gigel îi place să se joace cu cifrele, el îşi pune următoarea problemă: dat fiind un număr natural, pot fi rearanjate cifrele lui astfel încât să obţinem un palindrom? Dacă da, care este numărul maxim palindrom care poate fi obţinut?&lt;br /&gt;
&lt;br /&gt;
= Cerința =&lt;br /&gt;
Fiind dat un număr natural &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; să se determine cel mai mare număr palindrom care se poate obţine cu cifrele numărului &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= Date de intrare =&lt;br /&gt;
Fișierul de intrare &amp;lt;code&amp;gt;input.txt&amp;lt;/code&amp;gt; conţine pe prima linie numărul natural &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= Date de ieșire =&lt;br /&gt;
Fișierul de ieșire &amp;lt;code&amp;gt;output.txt&amp;lt;/code&amp;gt; conţine pe prima linie cel mai mare număr palindrom care se poate obţine cu cifrele numărului &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= Restricții și precizări =&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;0 &amp;lt; n &amp;lt; 2 147 483 648&amp;lt;/code&amp;gt;&lt;br /&gt;
* Pentru datele de test există întotdeauna soluţie&lt;br /&gt;
&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
input.txt:&lt;br /&gt;
&lt;br /&gt;
3121321&lt;br /&gt;
&lt;br /&gt;
output.txt:&lt;br /&gt;
&lt;br /&gt;
3211123&lt;br /&gt;
&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
input.txt:&lt;br /&gt;
&lt;br /&gt;
999999999999999999999999999999&lt;br /&gt;
&lt;br /&gt;
Output:&lt;br /&gt;
&lt;br /&gt;
Input-ul nu convine conditiilor&lt;br /&gt;
&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python3&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
def verificare(n):&lt;br /&gt;
    if not(1&amp;lt;=n&amp;lt;=2147483648):&lt;br /&gt;
        print(&amp;quot;Input-ul nu convine conditiilor&amp;quot;)&lt;br /&gt;
        exit()&lt;br /&gt;
&lt;br /&gt;
with open(&amp;quot;input.txt&amp;quot;) as f:&lt;br /&gt;
    n = int(next(f))&lt;br /&gt;
    verificare(n)&lt;br /&gt;
&lt;br /&gt;
f = [0] * 10&lt;br /&gt;
while n:&lt;br /&gt;
    f[n % 10] += 1&lt;br /&gt;
    n //= 10&lt;br /&gt;
&lt;br /&gt;
k = -1&lt;br /&gt;
for i in range(10):&lt;br /&gt;
    if f[i] % 2:&lt;br /&gt;
        f[i] -= 1&lt;br /&gt;
        k = i&lt;br /&gt;
&lt;br /&gt;
with open(&amp;quot;output.txt&amp;quot;, &amp;quot;w&amp;quot;) as fout:&lt;br /&gt;
    for i in range(9, -1, -1):&lt;br /&gt;
        if f[i]:&lt;br /&gt;
            print(str(i) * (f[i] // 2), end=&amp;quot;&amp;quot;, file=fout)&lt;br /&gt;
    if k &amp;gt;= 0:&lt;br /&gt;
        print(k, end=&amp;quot;&amp;quot;, file=fout)&lt;br /&gt;
    for i in range(10):&lt;br /&gt;
        if f[i]:&lt;br /&gt;
            print(str(i) * (f[i] // 2), end=&amp;quot;&amp;quot;, file=fout)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Miawinator</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=2121_-_Tan&amp;diff=9045</id>
		<title>2121 - Tan</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=2121_-_Tan&amp;diff=9045"/>
		<updated>2024-01-04T23:34:42Z</updated>

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

		<summary type="html">&lt;p&gt;Miawinator: Pagină nouă: Se consideră &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt; puncte din plan, având coordonate numere naturale, relativ la un reper cartezian &amp;lt;code&amp;gt;XOY&amp;lt;/code&amp;gt;, oricare două puncte fiind distincte.  = Cerința = Cunoscând &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt; și coordonatele celor &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt; puncte, să se determine:  1) Numărul maxim de puncte care au aceeași abscisă.  2) Numărul triunghiurilor care se pot desena respectând următoarele condiții:  * au toate vârfurile în puncte dintre cele date; * au o latură par...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Se consideră &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt; puncte din plan, având coordonate numere naturale, relativ la un reper cartezian &amp;lt;code&amp;gt;XOY&amp;lt;/code&amp;gt;, oricare două puncte fiind distincte.&lt;br /&gt;
&lt;br /&gt;
= Cerința =&lt;br /&gt;
Cunoscând &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt; și coordonatele celor &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt; puncte, să se determine:&lt;br /&gt;
&lt;br /&gt;
1) Numărul maxim de puncte care au aceeași abscisă.&lt;br /&gt;
&lt;br /&gt;
2) Numărul triunghiurilor care se pot desena respectând următoarele condiții:&lt;br /&gt;
&lt;br /&gt;
* au toate vârfurile în puncte dintre cele date;&lt;br /&gt;
* au o latură paralelă cu &amp;lt;code&amp;gt;OX&amp;lt;/code&amp;gt;;&lt;br /&gt;
* nu au laturi paralele cu &amp;lt;code&amp;gt;OY&amp;lt;/code&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
= Date de intrare =&lt;br /&gt;
Fișierul de intrare &amp;lt;code&amp;gt;input.txt&amp;lt;/code&amp;gt; conține pe prima linie numărul &amp;lt;code&amp;gt;p&amp;lt;/code&amp;gt;, care indică cerința ce trebuie rezolvată (&amp;lt;code&amp;gt;p&amp;lt;/code&amp;gt; are valoarea &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; sau &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt;). Pe a doua linie se află numărul natural &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt;, reprezentând numărul punctelor date. Pe următoarele &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt; linii se găsesc câte două valori naturale &amp;lt;code&amp;gt;x y&amp;lt;/code&amp;gt;, separate prin câte un spațiu, reprezentând coordonatele punctelor date.&lt;br /&gt;
&lt;br /&gt;
= Date de ieșire =&lt;br /&gt;
Fișierul &amp;lt;code&amp;gt;output.txt&amp;lt;/code&amp;gt; va avea următoarea structură:&lt;br /&gt;
&lt;br /&gt;
* Dacă &amp;lt;code&amp;gt;p = 1&amp;lt;/code&amp;gt; se va scrie în fișier, pe prima linie, numărul maxim de puncte care au aceeași abscisă (cerința 1).&lt;br /&gt;
* Dacă &amp;lt;code&amp;gt;p = 2&amp;lt;/code&amp;gt; se va scrie în fișier, pe prima linie, numărul triunghiurilor care se pot desena respectând condițiile date, &amp;lt;code&amp;gt;modulo 1.000.003&amp;lt;/code&amp;gt;, adică restul împărțirii numărului de triunghiuri la &amp;lt;code&amp;gt;1 000 003&amp;lt;/code&amp;gt; (cerința 2).&lt;br /&gt;
&lt;br /&gt;
= Restricții și precizări =&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;3 ≤ N ≤ 100 000&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
input.txt:&lt;br /&gt;
&lt;br /&gt;
1&lt;br /&gt;
&lt;br /&gt;
5&lt;br /&gt;
&lt;br /&gt;
2 1&lt;br /&gt;
&lt;br /&gt;
1 4&lt;br /&gt;
&lt;br /&gt;
3 4&lt;br /&gt;
&lt;br /&gt;
3 2&lt;br /&gt;
&lt;br /&gt;
6 4&lt;br /&gt;
&lt;br /&gt;
output.txt:&lt;br /&gt;
&lt;br /&gt;
2&lt;br /&gt;
&lt;br /&gt;
Explicație:&lt;br /&gt;
&lt;br /&gt;
Se rezolvă cerința 1). Sunt maximum două puncte care au aceeași abscisă: &amp;lt;code&amp;gt;(3, 4)&amp;lt;/code&amp;gt; și &amp;lt;code&amp;gt;(3,2)&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
input.txt:&lt;br /&gt;
&lt;br /&gt;
2&lt;br /&gt;
&lt;br /&gt;
5&lt;br /&gt;
&lt;br /&gt;
2 1&lt;br /&gt;
&lt;br /&gt;
1 4&lt;br /&gt;
&lt;br /&gt;
3 4&lt;br /&gt;
&lt;br /&gt;
3 2&lt;br /&gt;
&lt;br /&gt;
6 4&lt;br /&gt;
&lt;br /&gt;
output.txt:&lt;br /&gt;
&lt;br /&gt;
4&lt;br /&gt;
&lt;br /&gt;
Explicație:&lt;br /&gt;
&lt;br /&gt;
Se rezolvă cerința 2). Se pot trasa &amp;lt;code&amp;gt;4&amp;lt;/code&amp;gt; triunghiuri care satisfac cerințele. Dacă notăm cele &amp;lt;code&amp;gt;5&amp;lt;/code&amp;gt; puncte din fișier cu &amp;lt;code&amp;gt;A&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;B&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;C&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;D&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;E&amp;lt;/code&amp;gt; (ca în imagine), atunci, cele &amp;lt;code&amp;gt;4&amp;lt;/code&amp;gt; triunghiuri care satisfac cerințele sunt : &amp;lt;code&amp;gt;ABC&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;ACE&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;ABE&amp;lt;/code&amp;gt; și &amp;lt;code&amp;gt;BDE&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Exemplul 3 ==&lt;br /&gt;
input.txt:&lt;br /&gt;
&lt;br /&gt;
2&lt;br /&gt;
&lt;br /&gt;
9999999999999&lt;br /&gt;
&lt;br /&gt;
2 1&lt;br /&gt;
&lt;br /&gt;
1 4&lt;br /&gt;
&lt;br /&gt;
3 4&lt;br /&gt;
&lt;br /&gt;
3 2&lt;br /&gt;
&lt;br /&gt;
6 4&lt;br /&gt;
&lt;br /&gt;
Output:&lt;br /&gt;
&lt;br /&gt;
Input-ul nu convine conditiilor&lt;br /&gt;
&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python3&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
def verificare(n):&lt;br /&gt;
    if not(3&amp;lt;=n&amp;lt;=100000):&lt;br /&gt;
        print(&amp;quot;Input-ul nu convine conditiilor&amp;quot;)&lt;br /&gt;
        exit()&lt;br /&gt;
&lt;br /&gt;
# Define constants&lt;br /&gt;
Nmax = 100001  # numarul maxim de puncte&lt;br /&gt;
Cmax = 1001    # coordonata maxima&lt;br /&gt;
IN = &amp;quot;input.txt&amp;quot;&lt;br /&gt;
OU = &amp;quot;output.txt&amp;quot;&lt;br /&gt;
&lt;br /&gt;
N = 0  # numarul punctelor&lt;br /&gt;
NrTr = 0  # numarul triunghiurilor gasite&lt;br /&gt;
&lt;br /&gt;
nx = [0] * Cmax  # nx[i] - cate puncte sunt pe absisa i&lt;br /&gt;
ny = [0] * Cmax  # ny[i] - cate puncte sunt pe ordonata i&lt;br /&gt;
H = [[0] * Cmax for _ in range(Cmax)]  # memorez punctele ordonate H[i] - lista punctelor cu ordonata i&lt;br /&gt;
&lt;br /&gt;
# citire date&lt;br /&gt;
with open(IN, &amp;quot;r&amp;quot;) as Fin:&lt;br /&gt;
    V = int(Fin.readline())&lt;br /&gt;
    N = int(Fin.readline())&lt;br /&gt;
    verificare(N) &lt;br /&gt;
    for i in range(Cmax):&lt;br /&gt;
        nx[i] = ny[i] = 0&lt;br /&gt;
    for _ in range(N):&lt;br /&gt;
        x, y = map(int, Fin.readline().split())&lt;br /&gt;
        nx[x] += 1&lt;br /&gt;
        ny[y] += 1&lt;br /&gt;
        H[y][ny[y]] = x&lt;br /&gt;
&lt;br /&gt;
if V == 1:&lt;br /&gt;
    Max = max(nx[:1000])&lt;br /&gt;
    with open(OU, &amp;quot;w&amp;quot;) as Fou:&lt;br /&gt;
        Fou.write(f&amp;quot;{Max}\n&amp;quot;)&lt;br /&gt;
else:&lt;br /&gt;
    NrTr = 0&lt;br /&gt;
    for i in range(Cmax - 1):&lt;br /&gt;
        if ny[i] &amp;gt; 1:&lt;br /&gt;
            sumLin = 0&lt;br /&gt;
            for j in range(1, ny[i] + 1):&lt;br /&gt;
                sumLin += (nx[H[i][j]] - 1) * (ny[i] - 1)&lt;br /&gt;
            aux1 = (ny[i] * (ny[i] - 1) // 2)&lt;br /&gt;
            aux2 = (N - ny[i])&lt;br /&gt;
            aux = aux1 * aux2&lt;br /&gt;
            NrTr += aux - sumLin&lt;br /&gt;
            NrTr %= 1000003&lt;br /&gt;
&lt;br /&gt;
    with open(OU, &amp;quot;w&amp;quot;) as Fou:&lt;br /&gt;
        Fou.write(f&amp;quot;{NrTr}\n&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Miawinator</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=1655_-_Platou&amp;diff=9043</id>
		<title>1655 - Platou</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=1655_-_Platou&amp;diff=9043"/>
		<updated>2024-01-04T23:19:17Z</updated>

		<summary type="html">&lt;p&gt;Miawinator: Pagină nouă: = Cerința = Fiind dat un şir de numere, denumim secvenţă a acestuia o parte dintre termenii şirului luaţi de pe poziţii consecutive. Denumim platou al acestui şir o secvenţă formată din valori identice. Lungimea unui platou este egală cu numărul de elemente care îl formează.  De exemplu, în şirul de numere &amp;lt;code&amp;gt;1 1 1 7 7 3 4 4 4 7 7&amp;lt;/code&amp;gt; avem:  * platourile &amp;lt;code&amp;gt;1 1 1&amp;lt;/code&amp;gt; şi &amp;lt;code&amp;gt;4 4 4&amp;lt;/code&amp;gt; ambele având lungimea &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt;; * platourile &amp;lt;code&amp;gt;...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Cerința =&lt;br /&gt;
Fiind dat un şir de numere, denumim secvenţă a acestuia o parte dintre termenii şirului luaţi de pe poziţii consecutive. Denumim platou al acestui şir o secvenţă formată din valori identice. Lungimea unui platou este egală cu numărul de elemente care îl formează.&lt;br /&gt;
&lt;br /&gt;
De exemplu, în şirul de numere &amp;lt;code&amp;gt;1 1 1 7 7 3 4 4 4 7 7&amp;lt;/code&amp;gt; avem:&lt;br /&gt;
&lt;br /&gt;
* platourile &amp;lt;code&amp;gt;1 1 1&amp;lt;/code&amp;gt; şi &amp;lt;code&amp;gt;4 4 4&amp;lt;/code&amp;gt; ambele având lungimea &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt;;&lt;br /&gt;
* platourile &amp;lt;code&amp;gt;7 7&amp;lt;/code&amp;gt; (cel care începe în poziţia a patra) şi &amp;lt;code&amp;gt;7 7&amp;lt;/code&amp;gt; (cel care începe pe poziţia a zecea), ambele având lungimea &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt;;&lt;br /&gt;
* platoul &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt; care are lungimea &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
În schimb nu avem platoul &amp;lt;code&amp;gt;7 7 7 7&amp;lt;/code&amp;gt; deoarece cele patru elemente egale cu &amp;lt;code&amp;gt;7&amp;lt;/code&amp;gt; nu sunt pe poziţii consecutive!&lt;br /&gt;
&lt;br /&gt;
Se dă un şir de n numere. Fiecare dintre aceste numere aparţine intervalului &amp;lt;code&amp;gt;[0,1000000]&amp;lt;/code&amp;gt;. Asupra acestui şir se pot efectua o singură dată următoarele două operaţiuni în această ordine:&lt;br /&gt;
&lt;br /&gt;
# se extrage un platou la alegere;&lt;br /&gt;
# se inserează platoul extras la pasul anterior într-o poziţie la alegere din şirul rezultat după extragere.&lt;br /&gt;
&lt;br /&gt;
De exemplu, dacă avem următorul şir inițial: &amp;lt;code&amp;gt;2 2 5 0 5 8 8 8 4 9 9 9 0 0 2 2 8&amp;lt;/code&amp;gt; extragem platoul &amp;lt;code&amp;gt;2 2&amp;lt;/code&amp;gt; format din elementele aflate în penultima şi antepenultima poziţie şi obţinem şirul: &amp;lt;code&amp;gt;2 2 5 0 5 8 8 8 4 9 9 9 0 0 8&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
În şirul rezultat inserăm platoul &amp;lt;code&amp;gt;2 2&amp;lt;/code&amp;gt; (pe care l-am extras în pasul anterior) în poziţia a doua şi obţinem şirul: &amp;lt;code&amp;gt;2 2 2 2 5 0 5 8 8 8 4 9 9 9 0 0 8&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Să se scrie un program care pentru un şir dat determină:&lt;br /&gt;
&lt;br /&gt;
# Lungimea maximă a unui platou din şirul dat iniţial precum şi valoarea cea mai mare a elementelor care formează un platou de lungime maximă.&lt;br /&gt;
# Lungimea maximă a unui platou care poate să apară în şir în urma efectuării celor două operaţiuni precum şi valoarea cea mai mare a elementelor care ar putea forma un astfel de platou.&lt;br /&gt;
&lt;br /&gt;
= Date de intrare =&lt;br /&gt;
Fișierul de intrare &amp;lt;code&amp;gt;input.txt&amp;lt;/code&amp;gt;conține:&lt;br /&gt;
&lt;br /&gt;
* pe prima linie un număr natural &amp;lt;code&amp;gt;V&amp;lt;/code&amp;gt; care poate avea valoarea &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; sau valoarea &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt;;&lt;br /&gt;
* pe a doua linie un număr natual &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;;&lt;br /&gt;
* pe a treia linie un şir de &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; numere naturale separate prin câte un spaţiu, reprezentând elementele şirului dat. Fiecare dintre aceste numere aparţine intervalului &amp;lt;code&amp;gt;[0,1.000.000]&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= Date de ieșire =&lt;br /&gt;
Fișierul de ieșire &amp;lt;code&amp;gt;output.txt&amp;lt;/code&amp;gt;va conține:&lt;br /&gt;
&lt;br /&gt;
* dacă &amp;lt;code&amp;gt;V=1&amp;lt;/code&amp;gt;, atunci pe această linie se vor scrie cele două numere care reprezintă răspunsul la prima cerinţă.&lt;br /&gt;
* dacă &amp;lt;code&amp;gt;V=2&amp;lt;/code&amp;gt;, atunci pe această linie se vor scrie cele două numere care reprezintă răspunsul la a doua cerinţă.&lt;br /&gt;
&lt;br /&gt;
= Restricții și precizări =&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;1 ≤ n ≤ 1.000.000&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
input.txt:&lt;br /&gt;
&lt;br /&gt;
1&lt;br /&gt;
&lt;br /&gt;
16 &lt;br /&gt;
&lt;br /&gt;
2 2 5 0 5 8 8 8 4 9 9 9 0 8 2 2&lt;br /&gt;
&lt;br /&gt;
output.txt:&lt;br /&gt;
&lt;br /&gt;
3 9&lt;br /&gt;
&lt;br /&gt;
Explicație:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;V=1&amp;lt;/code&amp;gt;, deci se rezolvă NUMAI prima cerinţă. Lungimea maximă a unui platou din şirul dat este &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt;. Sunt două astfel de platouri: &amp;lt;code&amp;gt;8 8 8&amp;lt;/code&amp;gt; şi &amp;lt;code&amp;gt;9 9 9&amp;lt;/code&amp;gt;. Valoarea cea mai mare din care este format unul dintre aceste platouri este &amp;lt;code&amp;gt;9&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
input.txt:&lt;br /&gt;
&lt;br /&gt;
2&lt;br /&gt;
&lt;br /&gt;
16 &lt;br /&gt;
&lt;br /&gt;
2 2 5 0 5 8 8 8 4 9 9 9 0 8 2 2&lt;br /&gt;
&lt;br /&gt;
output.txt:&lt;br /&gt;
&lt;br /&gt;
4 8&lt;br /&gt;
&lt;br /&gt;
Explicație:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;V=2&amp;lt;/code&amp;gt;, deci se rezolvă NUMAI a doua cerinţă. În urma executării celor două operațiuni pot să apară platouri de lungime maximă &amp;lt;code&amp;gt;4&amp;lt;/code&amp;gt; în două moduri: &amp;lt;code&amp;gt;2 2 2 2&amp;lt;/code&amp;gt; respectiv &amp;lt;code&amp;gt;8 8 8 8&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Valoarea cea mai mare din care este format unul dintre aceste platouri este &amp;lt;code&amp;gt;8&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Exemplul 3 ==&lt;br /&gt;
input.txt:&lt;br /&gt;
&lt;br /&gt;
2&lt;br /&gt;
&lt;br /&gt;
999999999999999 &lt;br /&gt;
&lt;br /&gt;
2 2 5 0 5 8 8 8 4 9 9 9 0 8 2 2&lt;br /&gt;
&lt;br /&gt;
Output:&lt;br /&gt;
&lt;br /&gt;
Input-ul nu convine conditiilor&lt;br /&gt;
&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python3&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
def verificare(n):&lt;br /&gt;
    if not(1&amp;lt;=n&amp;lt;=1000000):&lt;br /&gt;
        print(&amp;quot;Input-ul nu convine conditiilor&amp;quot;)&lt;br /&gt;
        exit()&lt;br /&gt;
&lt;br /&gt;
with open(&amp;quot;input.txt&amp;quot;, &amp;quot;r&amp;quot;) as fin, open(&amp;quot;output.txt&amp;quot;, &amp;quot;w&amp;quot;) as fout:&lt;br /&gt;
    &lt;br /&gt;
    v = int(fin.readline())&lt;br /&gt;
    n = int(fin.readline())&lt;br /&gt;
    verificare(n)&lt;br /&gt;
&lt;br /&gt;
    l=list(map(int, fin.readline().split()))&lt;br /&gt;
&lt;br /&gt;
    if v == 1:&lt;br /&gt;
        x = l[0]&lt;br /&gt;
        lcrt = 1&lt;br /&gt;
        lmax = 1&lt;br /&gt;
        valmax = x&lt;br /&gt;
&lt;br /&gt;
        for i in range(0,n - 1):&lt;br /&gt;
            y = l[i]&lt;br /&gt;
            if x == y:&lt;br /&gt;
                lcrt += 1&lt;br /&gt;
            else:&lt;br /&gt;
                lcrt = 1&lt;br /&gt;
&lt;br /&gt;
            if lcrt &amp;gt; lmax:&lt;br /&gt;
                lmax = lcrt&lt;br /&gt;
                valmax = x&lt;br /&gt;
            elif lmax == lcrt and x &amp;gt; valmax:&lt;br /&gt;
                valmax = x&lt;br /&gt;
&lt;br /&gt;
            x = y&lt;br /&gt;
&lt;br /&gt;
        fout.write(f&amp;quot;{lmax} {valmax}\n&amp;quot;)&lt;br /&gt;
    else:&lt;br /&gt;
        x = l[0]&lt;br /&gt;
        lcrt = 1&lt;br /&gt;
        max1 = [0] * 1000002&lt;br /&gt;
        max2 = [0] * 1000002&lt;br /&gt;
&lt;br /&gt;
        for i in range(0,n - 1):&lt;br /&gt;
            y = l[i]&lt;br /&gt;
            if x == y:&lt;br /&gt;
                lcrt += 1&lt;br /&gt;
            else:&lt;br /&gt;
                if lcrt &amp;gt;= max1[x]:&lt;br /&gt;
                    max2[x] = max1[x]&lt;br /&gt;
                    max1[x] = lcrt&lt;br /&gt;
                elif lcrt &amp;gt; max2[x]:&lt;br /&gt;
                    max2[x] = lcrt&lt;br /&gt;
                lcrt = 1&lt;br /&gt;
&lt;br /&gt;
            x = y&lt;br /&gt;
&lt;br /&gt;
        if lcrt &amp;gt;= max1[x]:&lt;br /&gt;
            max2[x] = max1[x]&lt;br /&gt;
            max1[x] = lcrt&lt;br /&gt;
        elif lcrt &amp;gt; max2[x]:&lt;br /&gt;
            max2[x] = lcrt&lt;br /&gt;
&lt;br /&gt;
        rezmax = 0&lt;br /&gt;
        valmax = 0&lt;br /&gt;
        for i in range(1000001, -1, -1):&lt;br /&gt;
            if max1[i] + max2[i] &amp;gt; rezmax:&lt;br /&gt;
                rezmax = max1[i] + max2[i]&lt;br /&gt;
                valmax = i&lt;br /&gt;
&lt;br /&gt;
        fout.write(f&amp;quot;{rezmax} {valmax}\n&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Miawinator</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=0147_-_expresie1&amp;diff=9041</id>
		<title>0147 - expresie1</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=0147_-_expresie1&amp;diff=9041"/>
		<updated>2024-01-04T23:05:53Z</updated>

		<summary type="html">&lt;p&gt;Miawinator: Pagină nouă: La ora de matematică Georgică a învăţat să evalueze expresii aritmetice. Pentru a verifica acest lucru profesorul de informatică îi propune lui Georgică să evalueze expresii aritmetice de forma:  &amp;lt;code&amp;gt;A  o1  B  o2  C&amp;lt;/code&amp;gt;  Unde &amp;lt;code&amp;gt;A&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;B&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;C&amp;lt;/code&amp;gt; sunt operanzi, iar &amp;lt;code&amp;gt;o1&amp;lt;/code&amp;gt; şi &amp;lt;code&amp;gt;o2&amp;lt;/code&amp;gt; sunt operatori.  Valorile permise operanzilor pot fi numai termeni din şirul &amp;lt;code&amp;gt;x1&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;x2&amp;lt;/code&amp;gt;, …, &amp;lt;code&amp;gt;xn&amp;lt;/code&amp;gt;, iar...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;La ora de matematică Georgică a învăţat să evalueze expresii aritmetice. Pentru a verifica acest lucru profesorul de informatică îi propune lui Georgică să evalueze expresii aritmetice de forma:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;A  o1  B  o2  C&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Unde &amp;lt;code&amp;gt;A&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;B&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;C&amp;lt;/code&amp;gt; sunt operanzi, iar &amp;lt;code&amp;gt;o1&amp;lt;/code&amp;gt; şi &amp;lt;code&amp;gt;o2&amp;lt;/code&amp;gt; sunt operatori.&lt;br /&gt;
&lt;br /&gt;
Valorile permise operanzilor pot fi numai termeni din şirul &amp;lt;code&amp;gt;x1&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;x2&amp;lt;/code&amp;gt;, …, &amp;lt;code&amp;gt;xn&amp;lt;/code&amp;gt;, iar operatorii pot fi numai caracterele &amp;lt;code&amp;gt;+&amp;lt;/code&amp;gt; (adunare) şi &amp;lt;code&amp;gt;*&amp;lt;/code&amp;gt; (înmulţire).&lt;br /&gt;
&lt;br /&gt;
Profesorul îi pune la dispoziție lui Georgică o valoare numerică &amp;lt;code&amp;gt;V&amp;lt;/code&amp;gt; şi îi cere să determine valorile operanzilor &amp;lt;code&amp;gt;A&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;B&amp;lt;/code&amp;gt; şi &amp;lt;code&amp;gt;C&amp;lt;/code&amp;gt; pentru care expresia are valoarea &amp;lt;code&amp;gt;V&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= Cerinţă =&lt;br /&gt;
Scrieţi un program, care pentru &amp;lt;code&amp;gt;V&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;x1&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;x2&amp;lt;/code&amp;gt;, …, &amp;lt;code&amp;gt;xn&amp;lt;/code&amp;gt; şi &amp;lt;code&amp;gt;o1&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;o2&amp;lt;/code&amp;gt; date, determină indicii corespunzători termenilor din şirul &amp;lt;code&amp;gt;x1&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;x2&amp;lt;/code&amp;gt;, …, &amp;lt;code&amp;gt;xn&amp;lt;/code&amp;gt; ce corespund valorilor operanzilor &amp;lt;code&amp;gt;A&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;B&amp;lt;/code&amp;gt; şi &amp;lt;code&amp;gt;C&amp;lt;/code&amp;gt; pentru ca expresia dată să aibă valoarea &amp;lt;code&amp;gt;V&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= Date de intrare =&lt;br /&gt;
Fişierul de intrare &amp;lt;code&amp;gt;input.txt&amp;lt;/code&amp;gt; conţine pe prima linie numerele naturale &amp;lt;code&amp;gt;V&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;x1&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;x2&amp;lt;/code&amp;gt;, …, &amp;lt;code&amp;gt;xn&amp;lt;/code&amp;gt; separate între ele printr-un spaţiu şi pe linia a doua exact două caractere asociate operatorilor &amp;lt;code&amp;gt;o1&amp;lt;/code&amp;gt; şi &amp;lt;code&amp;gt;o2&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= Date de ieşire =&lt;br /&gt;
Fişierul de ieşire &amp;lt;code&amp;gt;output.txt&amp;lt;/code&amp;gt; va conţine, pe prima linie separate între ele exact trei indici ai şirului &amp;lt;code&amp;gt;x1&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;x2&amp;lt;/code&amp;gt;, …, &amp;lt;code&amp;gt;xn&amp;lt;/code&amp;gt; corespunzători termenilor folosiţi pentru &amp;lt;code&amp;gt;A&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;B&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;C&amp;lt;/code&amp;gt;. Dacă nu există soluţie se va scrie în fişier cifra &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; de trei ori separată prin câte un spaţiu: &amp;lt;code&amp;gt;0 0 0&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= Restricţii şi precizări =&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;0 &amp;lt; n &amp;lt; 10001&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
input.txt:&lt;br /&gt;
&lt;br /&gt;
100 5 40 13 2 11 20&lt;br /&gt;
&lt;br /&gt;
+*&lt;br /&gt;
&lt;br /&gt;
output.txt:&lt;br /&gt;
&lt;br /&gt;
5 3 1&lt;br /&gt;
&lt;br /&gt;
Explicație:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;A = x5&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;B = x3&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;C = x1&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Expresia devine &amp;lt;code&amp;gt;20 + 2 * 40 = 100&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
input.txt:&lt;br /&gt;
&lt;br /&gt;
100 9999999999999 40 13 2 11 20&lt;br /&gt;
&lt;br /&gt;
+*&lt;br /&gt;
&lt;br /&gt;
Output:&lt;br /&gt;
&lt;br /&gt;
Input-ul nu convine conditiilor&lt;br /&gt;
&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python3&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
def verificare(n):&lt;br /&gt;
    if not(1&amp;lt;=n&amp;lt;=10000):&lt;br /&gt;
        print(&amp;quot;Input-ul nu convine conditiilor&amp;quot;)&lt;br /&gt;
        exit()&lt;br /&gt;
&lt;br /&gt;
def cit():&lt;br /&gt;
    global V, n, f, o1, o2&lt;br /&gt;
    with open(&amp;quot;input.txt&amp;quot;, &amp;quot;r&amp;quot;) as fin:&lt;br /&gt;
        l=list(map(int, fin.readline().split()))&lt;br /&gt;
        V = l[0]&lt;br /&gt;
        n = l[1]&lt;br /&gt;
        verificare(n)&lt;br /&gt;
        f = [0] * 1005&lt;br /&gt;
        for i in range(1, n + 1):&lt;br /&gt;
            k = l[i+1]&lt;br /&gt;
            f[k] = i&lt;br /&gt;
        l=fin.readline()&lt;br /&gt;
        o1 = l[0]&lt;br /&gt;
        o2 = l[1]&lt;br /&gt;
&lt;br /&gt;
def evalexp(A, B):&lt;br /&gt;
    global V, o1, o2&lt;br /&gt;
    if o1 == &#039;+&#039;:&lt;br /&gt;
        if o2 == &#039;+&#039;:&lt;br /&gt;
            t = V - (A + B)&lt;br /&gt;
        else:&lt;br /&gt;
            t = (V - A) / B&lt;br /&gt;
    else:&lt;br /&gt;
        if o2 == &#039;+&#039;:&lt;br /&gt;
            t = V - A * B&lt;br /&gt;
        else:&lt;br /&gt;
            t = V / (A * B)&lt;br /&gt;
    if t &amp;gt; 0 and t == int(t):&lt;br /&gt;
        return int(t)&lt;br /&gt;
    return -1&lt;br /&gt;
&lt;br /&gt;
def rezolva():&lt;br /&gt;
    global f&lt;br /&gt;
    for iA in range(1001):&lt;br /&gt;
        if f[iA] &amp;gt; 0:&lt;br /&gt;
            for iB in range(1001):&lt;br /&gt;
                if f[iB] &amp;gt; 0:&lt;br /&gt;
                    iC = evalexp(iA, iB)&lt;br /&gt;
                    if 0 &amp;lt;= iC &amp;lt; 1001 and f[iC] &amp;gt; 0:&lt;br /&gt;
                        with open(&amp;quot;output.txt&amp;quot;, &amp;quot;w&amp;quot;) as fout:&lt;br /&gt;
                            fout.write(f&amp;quot;{f[iA]} {f[iB]} {f[iC]}&amp;quot;)&lt;br /&gt;
                        return 1&lt;br /&gt;
    return 0&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
    cit()&lt;br /&gt;
    if rezolva() == 0:&lt;br /&gt;
        with open(&amp;quot;output.txt&amp;quot;, &amp;quot;w&amp;quot;) as fout:&lt;br /&gt;
            fout.write(&amp;quot;0 0 0&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    main()&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Miawinator</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=0610_-_Spion&amp;diff=9039</id>
		<title>0610 - Spion</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=0610_-_Spion&amp;diff=9039"/>
		<updated>2024-01-04T22:49:36Z</updated>

		<summary type="html">&lt;p&gt;Miawinator: Pagină nouă: Într-un loc îndepărtat amplasat strategic, se află mai mulţi soldați identificaţi prin numere naturale nenule unice. Ordinea și disciplina militară impun aşezarea soldaților în linie la apelul de dimineață. Fiecare soldat a primit la sosirea în unitate numărul său și numerele de identificare ale camarazilor care trebuie să fie în stânga și în dreapta sa la aliniere. Excepţie fac doi soldaţi santinele care primesc doar numărul propriu de identificare...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Într-un loc îndepărtat amplasat strategic, se află mai mulţi soldați identificaţi prin numere naturale nenule unice. Ordinea și disciplina militară impun aşezarea soldaților în linie la apelul de dimineață. Fiecare soldat a primit la sosirea în unitate numărul său și numerele de identificare ale camarazilor care trebuie să fie în stânga și în dreapta sa la aliniere. Excepţie fac doi soldaţi santinele care primesc doar numărul propriu de identificare şi se vor aşeza pe prima, respectiv pe ultima poziţie din linie. Uneori, unii soldaţi sunt plecați în misiuni, iar apelul de dimineaţă în unitate se face astfel: fiecare dintre cei prezenţi strigă cele trei numere primite – numărul lui, numărul camaradului din stânga lui şi al camaradului din dreapta lui, chiar dacă aceștia lipsesc.&lt;br /&gt;
&lt;br /&gt;
Ei nu ştiu însă că, după un zid, stă pitită spioana Bulbuka, trimisă în recunoaștere. Ea îi ascultă şi înregistrează toate tripletele de numere care sunt strigate. După cele trei numere strigate de fiecare soldat, Bulbuka, fiind foarte inteligentă, deduce corect câte grupuri de soldaţi care și-au strigat prezența sunt până în momentul respectiv. Ea consideră că un grup este format din toţi acei soldaţi care şi-au strigat propriul număr şi care sunt aşezaţi unul lângă celălalt (dacă un soldat a strigat numărul camaradului, acesta din urmă nu este inclus în grup decât dacă a strigat şi el propriul număr).&lt;br /&gt;
&lt;br /&gt;
= Cerința =&lt;br /&gt;
Aflați care sunt numerele de grupuri de soldați deduse de Bulbuka în fiecare moment.&lt;br /&gt;
&lt;br /&gt;
= Date de intrare =&lt;br /&gt;
Pe prima linie a fişierului &amp;lt;code&amp;gt;input.txt&amp;lt;/code&amp;gt; se află &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt;, numărul de soldaţi ce îşi vor striga prezența. Pe următoarele &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt; linii se află câte &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt; numere &amp;lt;code&amp;gt;x[i]&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;s[i]&amp;lt;/code&amp;gt; și &amp;lt;code&amp;gt;d[i]&amp;lt;/code&amp;gt;, separate prin câte un spaţiu, reprezentând tripletele pe care le strigă fiecare soldat (&amp;lt;code&amp;gt;x[i]&amp;lt;/code&amp;gt; numărul soldatului, &amp;lt;code&amp;gt;s[i]&amp;lt;/code&amp;gt; numărul camaradului din stânga lui şi &amp;lt;code&amp;gt;d[i]&amp;lt;/code&amp;gt; numărul camaradului din dreapta lui).&lt;br /&gt;
&lt;br /&gt;
= Date de ieșire =&lt;br /&gt;
Fişierul de ieşire &amp;lt;code&amp;gt;output.txt&amp;lt;/code&amp;gt; va conţine &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt; linii. Pe fiecare dintre cele &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt; linii se va scrie numărul de grupuri dedus de Bulbuka la momentul respectiv.&lt;br /&gt;
&lt;br /&gt;
= Restricții și precizări =&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;1 &amp;lt; N  &amp;lt; 500000&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
input.txt:&lt;br /&gt;
&lt;br /&gt;
6&lt;br /&gt;
&lt;br /&gt;
9 2 3&lt;br /&gt;
&lt;br /&gt;
8 5 4&lt;br /&gt;
&lt;br /&gt;
5 3 8&lt;br /&gt;
&lt;br /&gt;
7 1 2&lt;br /&gt;
&lt;br /&gt;
2 7 9&lt;br /&gt;
&lt;br /&gt;
3 9 5&lt;br /&gt;
&lt;br /&gt;
output.txt:&lt;br /&gt;
&lt;br /&gt;
1&lt;br /&gt;
&lt;br /&gt;
2&lt;br /&gt;
&lt;br /&gt;
2&lt;br /&gt;
&lt;br /&gt;
3&lt;br /&gt;
&lt;br /&gt;
2&lt;br /&gt;
&lt;br /&gt;
1&lt;br /&gt;
&lt;br /&gt;
Explicație:&lt;br /&gt;
&lt;br /&gt;
Prima dată strigă soldatul &amp;lt;code&amp;gt;9&amp;lt;/code&amp;gt; care e notat prezent, deci primul grup este format doar din el. Camarazii &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt; și &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt; ar trebui să fie în stânga și dreapta lui dar nu și-au strigat prezența încă. În consecință, nu fac parte în acest moment din grupul lui &amp;lt;code&amp;gt;9&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Strigă soldatul &amp;lt;code&amp;gt;8&amp;lt;/code&amp;gt;, se formează două grupuri: &amp;lt;code&amp;gt;{9}&amp;lt;/code&amp;gt; și &amp;lt;code&amp;gt;{8}&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Strigă &amp;lt;code&amp;gt;5&amp;lt;/code&amp;gt;, el va intra în grupul lui &amp;lt;code&amp;gt;8&amp;lt;/code&amp;gt;, deci vor fi tot două grupuri: &amp;lt;code&amp;gt;{9}&amp;lt;/code&amp;gt; și &amp;lt;code&amp;gt;{8,5}&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Strigă &amp;lt;code&amp;gt;7&amp;lt;/code&amp;gt;, dar pentru că cei doi camarazi nu s-au strigat încă prezenţi, &amp;lt;code&amp;gt;7&amp;lt;/code&amp;gt; va forma un grup singur. Vor fi acum trei grupuri: &amp;lt;code&amp;gt;{7}&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;{9}&amp;lt;/code&amp;gt; și @{8,5} etc.&lt;br /&gt;
&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
input.txt:&lt;br /&gt;
&lt;br /&gt;
9999999999&lt;br /&gt;
&lt;br /&gt;
9 2 3&lt;br /&gt;
&lt;br /&gt;
8 5 4&lt;br /&gt;
&lt;br /&gt;
5 3 8&lt;br /&gt;
&lt;br /&gt;
7 1 2&lt;br /&gt;
&lt;br /&gt;
2 7 9&lt;br /&gt;
&lt;br /&gt;
3 9 5&lt;br /&gt;
&lt;br /&gt;
Output:&lt;br /&gt;
&lt;br /&gt;
Input-ul nu convine conditiilor&lt;br /&gt;
&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python3&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
NMAX = 1600000&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def verificare(n):&lt;br /&gt;
    if not(2&amp;lt;=n&amp;lt;500000):&lt;br /&gt;
        print(&amp;quot;Input-ul nu convine conditiilor&amp;quot;)&lt;br /&gt;
        exit()&lt;br /&gt;
&lt;br /&gt;
n = 0&lt;br /&gt;
grupuri = 0&lt;br /&gt;
&lt;br /&gt;
soldati = [0] * ((NMAX + 31) // 32)&lt;br /&gt;
&lt;br /&gt;
def bindex(b):&lt;br /&gt;
    return b // 32&lt;br /&gt;
&lt;br /&gt;
def boffset(b):&lt;br /&gt;
    return b % 32&lt;br /&gt;
&lt;br /&gt;
def set_bit(b):&lt;br /&gt;
    soldati[bindex(b)] |= 1 &amp;lt;&amp;lt; boffset(b)&lt;br /&gt;
&lt;br /&gt;
def get_bit(b):&lt;br /&gt;
    return (soldati[bindex(b)] &amp;amp; (1 &amp;lt;&amp;lt; boffset(b))) != 0&lt;br /&gt;
&lt;br /&gt;
with open(&amp;quot;input.txt&amp;quot;, &amp;quot;rt&amp;quot;) as infile, open(&amp;quot;output.txt&amp;quot;, &amp;quot;wt&amp;quot;) as outfile:&lt;br /&gt;
    n = int(infile.readline())&lt;br /&gt;
    verificare(n)&lt;br /&gt;
    for _ in range(n):&lt;br /&gt;
        x, s, d = map(int, infile.readline().split())&lt;br /&gt;
&lt;br /&gt;
        prezenta = get_bit(s) + get_bit(d)&lt;br /&gt;
        grupuri += 1 - prezenta&lt;br /&gt;
&lt;br /&gt;
        outfile.write(f&amp;quot;{grupuri}\n&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
        set_bit(x)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Miawinator</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=1612_-_Cifre10&amp;diff=9034</id>
		<title>1612 - Cifre10</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=1612_-_Cifre10&amp;diff=9034"/>
		<updated>2024-01-04T22:33:20Z</updated>

		<summary type="html">&lt;p&gt;Miawinator: Pagină nouă: Elevii clasei pregătitoare se joacă la matematică cu numere. Învățătoarea are un săculeț plin cu jetoane, pe fiecare dintre ele fiind scrisă câte o cifră. Fiecare elev și-a ales din săculeț mai multe jetoane, cu care și-a format un număr. Pentru ca totul să fie mai interesant, elevii s-au grupat în perechi. Doamna învățătoare a oferit fiecărei perechi de elevi câte o cutiuță pentru ca cei doi să își pună împreună jetoanele. De exemplu, dacă u...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Elevii clasei pregătitoare se joacă la matematică cu numere. Învățătoarea are un săculeț plin cu jetoane, pe fiecare dintre ele fiind scrisă câte o cifră. Fiecare elev și-a ales din săculeț mai multe jetoane, cu care și-a format un număr. Pentru ca totul să fie mai interesant, elevii s-au grupat în perechi. Doamna învățătoare a oferit fiecărei perechi de elevi câte o cutiuță pentru ca cei doi să își pună împreună jetoanele. De exemplu, dacă unul din elevii unei echipe și-a ales jetoane cu care a format numărul &amp;lt;code&amp;gt;5137131&amp;lt;/code&amp;gt; iar celălalt elev și-a ales jetoane cu care a format numărul &amp;lt;code&amp;gt;6551813&amp;lt;/code&amp;gt;, atunci cutiuța echipei va conţine &amp;lt;code&amp;gt;5&amp;lt;/code&amp;gt; jetoane cu cifra &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;, câte &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt; jetoane cu cifra &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt; şi &amp;lt;code&amp;gt;5&amp;lt;/code&amp;gt; şi câte un jeton cu cifrele &amp;lt;code&amp;gt;6&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;7&amp;lt;/code&amp;gt; şi &amp;lt;code&amp;gt;8&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Doar Andrei stătea supărat pentru că numărul de elevi al clasei era impar iar el nu avea partener, motiv pentru care nu și-a mai ales jetoane. Din această cauză, doamna învățătoare i-a spus:&lt;br /&gt;
&lt;br /&gt;
“- Alege o echipă din a cărei cutiuță poţi lua o parte din jetoane, dar ai grijă ca fiecare dintre cei doi elevi să-și mai poată forma numărul lui din jetoanele rămase, iar tu să poți forma un număr nenul cu jetoanele extrase!“.&lt;br /&gt;
&lt;br /&gt;
Dar cum Andrei nu se mulţumea cu puţin, a vrut să aleagă acea echipă din a cărei cutiuță îşi poată forma un număr de valoare maximă folosind jetoanele extrase.&lt;br /&gt;
&lt;br /&gt;
= Cerința =&lt;br /&gt;
Scrieţi un program care să citească numărul &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt; de cutiuțe și numerele formate de elevii fiecărei perechi și care să determine:&lt;br /&gt;
&lt;br /&gt;
1) Numărul de cutiuțe din care Andrei poate lua jetoane respectând condiția pusă de doamna învățătoare;&lt;br /&gt;
&lt;br /&gt;
2) Care este cel mai mare număr nenul pe care îl poate forma Andrei respectând aceeași condiție.&lt;br /&gt;
&lt;br /&gt;
= Date de intrare =&lt;br /&gt;
Fișierul de intrare &amp;lt;code&amp;gt;input.txt&amp;lt;/code&amp;gt; conține pe prima linie numărul natural &amp;lt;code&amp;gt;P&amp;lt;/code&amp;gt; reprezentând cerința din problemă care trebuie rezolvată. Pe a doua linie numărul natural &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt;, iar pe următoarele &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt; linii câte două numere naturale separate printr-un spațiu reprezentând numerele formate de elevii fiecărei perechi.&lt;br /&gt;
&lt;br /&gt;
= Date de ieșire =&lt;br /&gt;
&lt;br /&gt;
* Dacă valoarea lui &amp;lt;code&amp;gt;P&amp;lt;/code&amp;gt; este &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;, fişierul de ieşire &amp;lt;code&amp;gt;output.txt&amp;lt;/code&amp;gt; va conţine pe prima linie un număr natural reprezentând rezolvarea primei cerințe, adică numărul de cutiuțe din care Andrei poate lua jetoane.&lt;br /&gt;
* Dacă valoarea lui &amp;lt;code&amp;gt;P&amp;lt;/code&amp;gt; este &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt;, fişierul de ieşire &amp;lt;code&amp;gt;output.txt&amp;lt;/code&amp;gt; va conţine pe prima linie un număr natural reprezentând rezolvarea celei de a doua cerințe, adică numărul maxim pe care îl poate forma Andrei.&lt;br /&gt;
&lt;br /&gt;
= Restricții și precizări =&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;0 &amp;lt; N ≤ 10000&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
input.txt:&lt;br /&gt;
&lt;br /&gt;
1&lt;br /&gt;
&lt;br /&gt;
3&lt;br /&gt;
&lt;br /&gt;
1010 2000&lt;br /&gt;
&lt;br /&gt;
12 34&lt;br /&gt;
&lt;br /&gt;
1515 552&lt;br /&gt;
&lt;br /&gt;
output.txt:&lt;br /&gt;
&lt;br /&gt;
1&lt;br /&gt;
&lt;br /&gt;
Explicație:&lt;br /&gt;
&lt;br /&gt;
Cu jetoanele extrase din prima cutiuță Andrei nu poate forma un număr diferit de &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt;. Din a doua cutiuță Andrei nu poate lua jetoane astfel încât cei doi elevi să își mai poată forma numerele &amp;lt;code&amp;gt;12&amp;lt;/code&amp;gt; și &amp;lt;code&amp;gt;34&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Andrei poate extrage jetoane doar din a treia cutiuță(două jetoane cu cifra &amp;lt;code&amp;gt;5&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
input.txt:&lt;br /&gt;
&lt;br /&gt;
2&lt;br /&gt;
&lt;br /&gt;
5&lt;br /&gt;
&lt;br /&gt;
16815  38861&lt;br /&gt;
&lt;br /&gt;
12  385&lt;br /&gt;
&lt;br /&gt;
5137131  6551813&lt;br /&gt;
&lt;br /&gt;
15033  11583&lt;br /&gt;
&lt;br /&gt;
4704  240&lt;br /&gt;
&lt;br /&gt;
output.txt:&lt;br /&gt;
&lt;br /&gt;
5311&lt;br /&gt;
&lt;br /&gt;
Explicație:&lt;br /&gt;
&lt;br /&gt;
Numărul maxim pe care Andrei îl poate forma este &amp;lt;code&amp;gt;5311&amp;lt;/code&amp;gt; și se obține din cutiuța a treia.&lt;br /&gt;
&lt;br /&gt;
== Exemplul 3 ==&lt;br /&gt;
input.txt:&lt;br /&gt;
&lt;br /&gt;
2&lt;br /&gt;
&lt;br /&gt;
99999999999999&lt;br /&gt;
&lt;br /&gt;
16815  38861&lt;br /&gt;
&lt;br /&gt;
12  385&lt;br /&gt;
&lt;br /&gt;
5137131  6551813&lt;br /&gt;
&lt;br /&gt;
15033  11583&lt;br /&gt;
&lt;br /&gt;
4704  240&lt;br /&gt;
&lt;br /&gt;
Output:&lt;br /&gt;
&lt;br /&gt;
Input-ul nu convine conditiilor&lt;br /&gt;
&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python3&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
def verificare(n):&lt;br /&gt;
    if not(1&amp;lt;=n&amp;lt;=1000):&lt;br /&gt;
        print(&amp;quot;Input-ul nu convine conditiilor&amp;quot;)&lt;br /&gt;
        exit()&lt;br /&gt;
&lt;br /&gt;
with open(&amp;quot;input.txt&amp;quot;, &amp;quot;r&amp;quot;) as f, open(&amp;quot;output.txt&amp;quot;, &amp;quot;w&amp;quot;) as g:&lt;br /&gt;
    a = [0] * 10&lt;br /&gt;
    b = [0] * 10&lt;br /&gt;
    n, i, x, y, j, k, p, cod, cate, maxim, minim = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0&lt;br /&gt;
&lt;br /&gt;
    p = int(f.readline())&lt;br /&gt;
    n = int(f.readline())&lt;br /&gt;
    verificare(n)&lt;br /&gt;
&lt;br /&gt;
    for i in range(1, n + 1):&lt;br /&gt;
        x, y = map(int, f.readline().split())&lt;br /&gt;
&lt;br /&gt;
        a = [0] * 10&lt;br /&gt;
        b = [0] * 10&lt;br /&gt;
&lt;br /&gt;
        while x:&lt;br /&gt;
            a[x % 10] += 1&lt;br /&gt;
            x = x // 10&lt;br /&gt;
&lt;br /&gt;
        while y:&lt;br /&gt;
            b[y % 10] += 1&lt;br /&gt;
            y = y // 10&lt;br /&gt;
&lt;br /&gt;
        cod = 0&lt;br /&gt;
        for j in range(9, -1, -1):&lt;br /&gt;
            if a[j] &amp;gt; 0 and b[j] &amp;gt; 0:&lt;br /&gt;
                minim = min(a[j], b[j])&lt;br /&gt;
                for k in range(1, minim + 1):&lt;br /&gt;
                    cod = cod * 10 + j&lt;br /&gt;
&lt;br /&gt;
        if cod:&lt;br /&gt;
            cate += 1&lt;br /&gt;
&lt;br /&gt;
        if cod &amp;gt; maxim:&lt;br /&gt;
            maxim = cod&lt;br /&gt;
&lt;br /&gt;
    if p == 1:&lt;br /&gt;
        g.write(f&amp;quot;{cate}&amp;quot;)&lt;br /&gt;
    else:&lt;br /&gt;
        g.write(f&amp;quot;{maxim}&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Miawinator</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=1061_-_Cifru1&amp;diff=9033</id>
		<title>1061 - Cifru1</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=1061_-_Cifru1&amp;diff=9033"/>
		<updated>2024-01-04T22:26:36Z</updated>

		<summary type="html">&lt;p&gt;Miawinator: Pagină nouă: Costel a descoperit într-o debara servieta cu cifru a tatălui său. Cifrul este compus din &amp;lt;code&amp;gt;4&amp;lt;/code&amp;gt; discuri metalice pe care sunt inscripţionate cifrele de la &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; la &amp;lt;code&amp;gt;9&amp;lt;/code&amp;gt;. Fiecare disc se poate mişca individual, de sus în jos sau de jos în sus, formându-se combinaţii de cifre. De multe ori, datorită comodităţii, combinaţia ce permite deschiderea servietei este formată numai din cifre identice: &amp;lt;code&amp;gt;0000&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;1111&amp;lt;/code&amp;gt; etc....&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Costel a descoperit într-o debara servieta cu cifru a tatălui său. Cifrul este compus din &amp;lt;code&amp;gt;4&amp;lt;/code&amp;gt; discuri metalice pe care sunt inscripţionate cifrele de la &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; la &amp;lt;code&amp;gt;9&amp;lt;/code&amp;gt;. Fiecare disc se poate mişca individual, de sus în jos sau de jos în sus, formându-se combinaţii de cifre. De multe ori, datorită comodităţii, combinaţia ce permite deschiderea servietei este formată numai din cifre identice: &amp;lt;code&amp;gt;0000&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;1111&amp;lt;/code&amp;gt; etc.&lt;br /&gt;
&lt;br /&gt;
Costel îşi imaginează un cifru compus din &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt; discuri metalice, fiecare având inscripţionate cifrele de la &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; la &amp;lt;code&amp;gt;9&amp;lt;/code&amp;gt;, fiecare putând fi deplasat în cele două direcţii specificate anterior. Prin mutare Costel înţelege deplasarea unui disc în sus sau în jos, cu o singură poziţie, adică deplasarea discului până la cifra precedentă, respectiv următoare celei curente.&lt;br /&gt;
&lt;br /&gt;
= Cerința =&lt;br /&gt;
Realizaţi un program care, cunoscând poziţia iniţială a fiecărui disc dintre cele &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt; discuri ale cifrului, determină şi afişează:&lt;br /&gt;
&lt;br /&gt;
a) cifra cea mai mare care apare pe discurile cifrului în forma iniţială;&lt;br /&gt;
&lt;br /&gt;
b)&lt;br /&gt;
&lt;br /&gt;
b1) numărul minim de mutări necesare pentru ca numărul obţinut pe cifru să fie compus numai din cifre identice, număr necesar deschiderii servietei;&lt;br /&gt;
&lt;br /&gt;
b2) cifra cea mai mică ce se poate obţine în urma efectuării numărului minim de mutări determinat;&lt;br /&gt;
&lt;br /&gt;
b3) numărul de combinaţii formate din cifre identice, care se poate obţine în urma efectuării numărului minim de mutări determinat.&lt;br /&gt;
&lt;br /&gt;
= Date de intrare =&lt;br /&gt;
Fișierul de intrare &amp;lt;code&amp;gt;input.txt&amp;lt;/code&amp;gt; conține:&lt;br /&gt;
&lt;br /&gt;
* pe prima linie numărul natural &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt; reprezentând numărul discurilor;&lt;br /&gt;
* pe următoarele &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt; linii câte o cifră, reprezentând cifra curentă de pe fiecare disc al cifrului.&lt;br /&gt;
&lt;br /&gt;
= Date de ieșire =&lt;br /&gt;
Fișierul de ieșire &amp;lt;code&amp;gt;output.txt&amp;lt;/code&amp;gt; va conține, pe linii separate, cele &amp;lt;code&amp;gt;4&amp;lt;/code&amp;gt; valori solicitate.&lt;br /&gt;
&lt;br /&gt;
= Restricții și precizări =&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;1 &amp;lt; N ≤ 100 000&amp;lt;/code&amp;gt;&lt;br /&gt;
* Un disc poate să rămână nemişcat.&lt;br /&gt;
&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
input.txt:&lt;br /&gt;
&lt;br /&gt;
4&lt;br /&gt;
&lt;br /&gt;
7&lt;br /&gt;
&lt;br /&gt;
3&lt;br /&gt;
&lt;br /&gt;
9&lt;br /&gt;
&lt;br /&gt;
0&lt;br /&gt;
&lt;br /&gt;
output.txt:&lt;br /&gt;
&lt;br /&gt;
9&lt;br /&gt;
&lt;br /&gt;
7&lt;br /&gt;
&lt;br /&gt;
0&lt;br /&gt;
&lt;br /&gt;
2&lt;br /&gt;
&lt;br /&gt;
Explicație:&lt;br /&gt;
&lt;br /&gt;
Avem un cifru cu &amp;lt;code&amp;gt;4&amp;lt;/code&amp;gt; discuri. Iniţial, cifrul este în starea &amp;lt;code&amp;gt;7390&amp;lt;/code&amp;gt; (primul disc este poziţionat pe cifra &amp;lt;code&amp;gt;7&amp;lt;/code&amp;gt;, al doilea pe cifra &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt; etc.)&lt;br /&gt;
&lt;br /&gt;
Cea mai mare cifră de pe cifru este cifra &amp;lt;code&amp;gt;9&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Numărul minim de mutări este &amp;lt;code&amp;gt;7&amp;lt;/code&amp;gt; şi se poate obţine în două moduri:&lt;br /&gt;
&lt;br /&gt;
# Deplasăm primul disc cu &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt; poziţii în sus, al doilea disc cu &amp;lt;code&amp;gt;4&amp;lt;/code&amp;gt; poziţii în jos, al treilea rămâne nemişcat, iar ultimul se deplasează cu o poziţie în jos. Combinaţia obţinută este &amp;lt;code&amp;gt;9999&amp;lt;/code&amp;gt;.&lt;br /&gt;
# Deplasăm primul disc cu &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt; poziţii în sus, al doilea disc cu &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt; poziţii în jos, al treilea cu o poziţie în sus, iar ultimul rămâne nemişcat. Combinaţia obţinută este &amp;lt;code&amp;gt;0000&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Astfel, cifra cea mai mică ce formează combinaţia cu număr minim de mutări este &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt;. Avem &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt; combinaţii care se pot obţine în numărul minim de mutări determinat: &amp;lt;code&amp;gt;0000&amp;lt;/code&amp;gt; şi &amp;lt;code&amp;gt;9999&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
input.txt:&lt;br /&gt;
&lt;br /&gt;
99999999999999&lt;br /&gt;
&lt;br /&gt;
7&lt;br /&gt;
&lt;br /&gt;
3&lt;br /&gt;
&lt;br /&gt;
9&lt;br /&gt;
&lt;br /&gt;
0&lt;br /&gt;
&lt;br /&gt;
Output:&lt;br /&gt;
&lt;br /&gt;
Input-ul nu convine conditiilor&lt;br /&gt;
&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python3&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
def verificare(n):&lt;br /&gt;
    if not(1&amp;lt;=n&amp;lt;=100000):&lt;br /&gt;
        print(&amp;quot;Input-ul nu convine conditiilor&amp;quot;)&lt;br /&gt;
        exit()&lt;br /&gt;
&lt;br /&gt;
Fin = &amp;quot;input.txt&amp;quot;&lt;br /&gt;
Fou = &amp;quot;output.txt&amp;quot;&lt;br /&gt;
&lt;br /&gt;
with open(Fin, &amp;quot;r&amp;quot;) as IN, open(Fou, &amp;quot;w&amp;quot;) as OUT:&lt;br /&gt;
    N = int(IN.readline())&lt;br /&gt;
    verificare(N)&lt;br /&gt;
    Apar = [0] * 10  # Apar[i] = 1 if color i appears on at least one disc&lt;br /&gt;
    MAX = 0          # maximum digit&lt;br /&gt;
    NrMin = 10 * N + 1  # minimum number of moves&lt;br /&gt;
    Cif = -1         # digit obtained in the minimum number of moves&lt;br /&gt;
    Cate = 0         # number of possibilities&lt;br /&gt;
&lt;br /&gt;
    # initialize&lt;br /&gt;
    for i in range(10):&lt;br /&gt;
        Apar[i] = 0&lt;br /&gt;
&lt;br /&gt;
    # read input data and determine initially appearing digits and maximum digit&lt;br /&gt;
    for i in range(1, N + 1):&lt;br /&gt;
        x = int(IN.readline())&lt;br /&gt;
        Apar[x] += 1&lt;br /&gt;
        if MAX &amp;lt; x:&lt;br /&gt;
            MAX = x&lt;br /&gt;
&lt;br /&gt;
    # calculate the number of moves for each appearing digit&lt;br /&gt;
    for i in range(10):&lt;br /&gt;
        Nr = 0&lt;br /&gt;
        for j in range(10):&lt;br /&gt;
            if Apar[j] and j != i:&lt;br /&gt;
                Nr += min(abs(j - i), 10 - abs(j - i)) * Apar[j]&lt;br /&gt;
&lt;br /&gt;
        if Nr &amp;lt; NrMin:&lt;br /&gt;
            NrMin = Nr&lt;br /&gt;
            Cif = i&lt;br /&gt;
            Cate = 1&lt;br /&gt;
        elif Nr == NrMin:&lt;br /&gt;
            Cate += 1&lt;br /&gt;
&lt;br /&gt;
    OUT.write(f&amp;quot;{MAX}\n{NrMin}\n{Cif}\n{Cate}\n&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Miawinator</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=1217_-_LightBot&amp;diff=9032</id>
		<title>1217 - LightBot</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=1217_-_LightBot&amp;diff=9032"/>
		<updated>2024-01-04T22:21:26Z</updated>

		<summary type="html">&lt;p&gt;Miawinator: Pagină nouă: În acest an evenimentul ”Hour of Code” a înregistrat un număr record de participanți din țara noastră. În cadrul acestui eveniment una dintre cele mai accesate aplicații a fost Lightbot, care a permis elevilor să-și testeze abilitățile de programare.  Aplicația Lightbot are &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt; nivele, numerotate consecutiv de la &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; la &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt;, în ordinea strict crescătoare a complexității lor. Lightbot a permis fiecărui participant să înc...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;În acest an evenimentul ”Hour of Code” a înregistrat un număr record de participanți din țara noastră. În cadrul acestui eveniment una dintre cele mai accesate aplicații a fost Lightbot, care a permis elevilor să-și testeze abilitățile de programare.&lt;br /&gt;
&lt;br /&gt;
Aplicația Lightbot are &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt; nivele, numerotate consecutiv de la &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; la &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt;, în ordinea strict crescătoare a complexității lor. Lightbot a permis fiecărui participant să înceapă cu orice nivel strict mai mic decât &amp;lt;code&amp;gt;N-1&amp;lt;/code&amp;gt; și să sară peste un singur nivel, fără a finaliza codul, trecând la nivelul următor celui sărit. La finalizarea cu succes a codului corespunzător nivelului curent, participantul este promovat la nivelul imediat următor. Fiecare participant a început scrierea codurilor la un nivel &amp;lt;code&amp;gt;P&amp;lt;/code&amp;gt; și a sărit peste un nivel &amp;lt;code&amp;gt;L&amp;lt;/code&amp;gt; (&amp;lt;code&amp;gt;P &amp;lt; L &amp;lt; P + K&amp;lt;/code&amp;gt;), finalizând &amp;lt;code&amp;gt;K&amp;lt;/code&amp;gt; nivele memorate ca o succesiune de numere naturale de forma &amp;lt;code&amp;gt;P, P+1,..., L-1, L+1,..., P+K&amp;lt;/code&amp;gt;. Succesiunile de nivele finalizate de participanți au fost memorate în fișierul &amp;lt;code&amp;gt;input.txt&amp;lt;/code&amp;gt;. Succesiunile corespunzătoare participanților nu se intercalează în fișier.&lt;br /&gt;
&lt;br /&gt;
Scrieţi un program care citeşte succesiunile corespunzătoare nivelelor finalizate de participanții care au jucat Lightbot și determină:&lt;br /&gt;
&lt;br /&gt;
1. numărul total de participanți;&lt;br /&gt;
&lt;br /&gt;
2. numărul celui mai dificil nivel care a fost rezolvat de un număr maxim de participanți;&lt;br /&gt;
&lt;br /&gt;
3. pentru fiecare participant, numărul nivelului sărit de acesta.&lt;br /&gt;
&lt;br /&gt;
= Date de intrare =&lt;br /&gt;
Fişierul de intrare &amp;lt;code&amp;gt;input.txt&amp;lt;/code&amp;gt; conţine pe prima linie una dintre valorile &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; , &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt; sau &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt;, reprezentând cerinţa 1 dacă se cere determinarea numărului total de participanți, cerinţa 2 dacă se cere determinarea numărului celui mai dificil nivel care a fost rezolvat de un număr maxim de participanți, respectiv cerinţa 3, dacă se cere determinarea, pentru fiecare participant, a numărului nivelului sărit de acesta.&lt;br /&gt;
&lt;br /&gt;
A doua linie a fișierului conține numărul natural &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt; de nivele corespunzător aplicației Lightbot, iar pe a treia linie, succesiunile de numere naturale nenule corespunzătoare nivelelor finalizate de participanți, separate două câte două prin câte un spaţiu.&lt;br /&gt;
&lt;br /&gt;
= Date de ieșire =&lt;br /&gt;
Fişierul de ieşire &amp;lt;code&amp;gt;output.txt&amp;lt;/code&amp;gt; va conţine pe prima linie un număr natural &amp;lt;code&amp;gt;M&amp;lt;/code&amp;gt;, reprezentând numărul total de participanți dacă cerința a fost 1, un număr natural reprezentând numărul celui mai dificil nivel care a fost rezolvat de un număr maxim de participanți, dacă cerința a fost 2, respectiv, o secvență de &amp;lt;code&amp;gt;M&amp;lt;/code&amp;gt; numere naturale separate prin câte un spațiu ce reprezintă nivele sărite de participanți în ordinea succesiunilor memorate în fișier, dacă cerința a fost 3.&lt;br /&gt;
&lt;br /&gt;
= Restricții și precizări =&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;3 ≤ N ≤ 200000&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
input.txt:&lt;br /&gt;
&lt;br /&gt;
1&lt;br /&gt;
&lt;br /&gt;
10&lt;br /&gt;
&lt;br /&gt;
1 2 4 2 4 6 7 9&lt;br /&gt;
&lt;br /&gt;
output.txt:&lt;br /&gt;
&lt;br /&gt;
3&lt;br /&gt;
&lt;br /&gt;
Explicație:&lt;br /&gt;
&lt;br /&gt;
Sunt trei participanți, care au finalizat nivelele: &amp;lt;code&amp;gt;1 2 4&amp;lt;/code&amp;gt; (primul), &amp;lt;code&amp;gt;2 4&amp;lt;/code&amp;gt; (al doilea) şi &amp;lt;code&amp;gt;6 7 9&amp;lt;/code&amp;gt; (al treilea).&lt;br /&gt;
&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
input.txt:&lt;br /&gt;
&lt;br /&gt;
2&lt;br /&gt;
&lt;br /&gt;
10&lt;br /&gt;
&lt;br /&gt;
1 2 4 2 4 6 7 9&lt;br /&gt;
&lt;br /&gt;
output.txt:&lt;br /&gt;
&lt;br /&gt;
4&lt;br /&gt;
&lt;br /&gt;
Explicație:&lt;br /&gt;
&lt;br /&gt;
Nivele &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt; și &amp;lt;code&amp;gt;4&amp;lt;/code&amp;gt; au fost finalizate de câte doi participanți, cel mai greu fiind nivelul &amp;lt;code&amp;gt;4&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Exemplul 3 ==&lt;br /&gt;
input.txt:&lt;br /&gt;
&lt;br /&gt;
3&lt;br /&gt;
&lt;br /&gt;
10&lt;br /&gt;
&lt;br /&gt;
1 2 4 2 4 6 7 9&lt;br /&gt;
&lt;br /&gt;
output.txt:&lt;br /&gt;
&lt;br /&gt;
3 3 8&lt;br /&gt;
&lt;br /&gt;
Explicație:&lt;br /&gt;
&lt;br /&gt;
Primul participant a sărit nivelul &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt;, al doilea nivelul &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt;, iar al treilea nivelul &amp;lt;code&amp;gt;8&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Exemplul 4 ==&lt;br /&gt;
input.txt:&lt;br /&gt;
&lt;br /&gt;
99999999999999&lt;br /&gt;
&lt;br /&gt;
10&lt;br /&gt;
&lt;br /&gt;
1 2 4 2 4 6 7 9&lt;br /&gt;
&lt;br /&gt;
Output:&lt;br /&gt;
&lt;br /&gt;
Input-ul nu convine conditiilor&lt;br /&gt;
&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python3&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
def verificare(n):&lt;br /&gt;
    if not(3&amp;lt;=n&amp;lt;=200000):&lt;br /&gt;
        print(&amp;quot;Input-ul nu convine conditiilor&amp;quot;)&lt;br /&gt;
        exit()&lt;br /&gt;
&lt;br /&gt;
with open(&amp;quot;input.txt&amp;quot;, &amp;quot;r&amp;quot;) as f, open(&amp;quot;output.txt&amp;quot;, &amp;quot;w&amp;quot;) as g:&lt;br /&gt;
    n, fr, P, np, cer = [0] * 200010, [0] * 200010, [0] * 200010, 0, 0&lt;br /&gt;
    a, b, l, maxim, nm, i = 0, 0, 0, 0, 0, 0&lt;br /&gt;
&lt;br /&gt;
    cer = int(f.readline())&lt;br /&gt;
    n = int(f.readline())&lt;br /&gt;
    verificare(n)&lt;br /&gt;
    a = int(f.readline(1))&lt;br /&gt;
    fr[a] += 1&lt;br /&gt;
    maxim = 1&lt;br /&gt;
    nm = a&lt;br /&gt;
    np = 0&lt;br /&gt;
&lt;br /&gt;
    for line in f:&lt;br /&gt;
        for b in map(int, line.split()):&lt;br /&gt;
            fr[b] += 1&lt;br /&gt;
&lt;br /&gt;
            if fr[b] &amp;gt; maxim:&lt;br /&gt;
                maxim = fr[b]&lt;br /&gt;
                nm = b&lt;br /&gt;
            elif fr[b] == maxim and b &amp;gt; nm:&lt;br /&gt;
                nm = b&lt;br /&gt;
&lt;br /&gt;
            if l == 0 and b - a == 2:&lt;br /&gt;
                l = b - 1&lt;br /&gt;
            elif b - a != 1:&lt;br /&gt;
                np += 1&lt;br /&gt;
                P[np] = l&lt;br /&gt;
                l = 0&lt;br /&gt;
&lt;br /&gt;
            a = b&lt;br /&gt;
&lt;br /&gt;
    np += 1&lt;br /&gt;
    P[np] = l&lt;br /&gt;
&lt;br /&gt;
    if cer == 1:&lt;br /&gt;
        g.write(f&amp;quot;{np}\n&amp;quot;)&lt;br /&gt;
    elif cer == 2:&lt;br /&gt;
        g.write(f&amp;quot;{nm}\n&amp;quot;)&lt;br /&gt;
    else:&lt;br /&gt;
        for i in range(1, np):&lt;br /&gt;
            g.write(f&amp;quot;{P[i]} &amp;quot;)&lt;br /&gt;
        g.write(f&amp;quot;{P[np]}\n&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Miawinator</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=1145_-_Extraprime&amp;diff=9030</id>
		<title>1145 - Extraprime</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=1145_-_Extraprime&amp;diff=9030"/>
		<updated>2024-01-04T22:13:06Z</updated>

		<summary type="html">&lt;p&gt;Miawinator: Pagină nouă: Gigel, mare amator de probleme de matematică şi informatică, a observat că unele numere prime au o proprietate interesantă: orice cifră ar elimina dintr-un astfel de număr, numărul obţinut este tot număr prim. A numit astfel de numere numere extraprime. De exemplu, numărul &amp;lt;code&amp;gt;317&amp;lt;/code&amp;gt; este un număr extraprim: el este număr prim şi, în plus, dacă eliminăm cifra &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt;, obţinem &amp;lt;code&amp;gt;17&amp;lt;/code&amp;gt;, care este prim; dacă eliminăm &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;, obţi...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Gigel, mare amator de probleme de matematică şi informatică, a observat că unele numere prime au o proprietate interesantă: orice cifră ar elimina dintr-un astfel de număr, numărul obţinut este tot număr prim. A numit astfel de numere numere extraprime. De exemplu, numărul &amp;lt;code&amp;gt;317&amp;lt;/code&amp;gt; este un număr extraprim: el este număr prim şi, în plus, dacă eliminăm cifra &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt;, obţinem &amp;lt;code&amp;gt;17&amp;lt;/code&amp;gt;, care este prim; dacă eliminăm &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;, obţinem &amp;lt;code&amp;gt;37&amp;lt;/code&amp;gt;, care este prim; dacă eliminăm &amp;lt;code&amp;gt;7&amp;lt;/code&amp;gt;, obţinem &amp;lt;code&amp;gt;31&amp;lt;/code&amp;gt;, care este şi el număr prim.&lt;br /&gt;
&lt;br /&gt;
= Cerință =&lt;br /&gt;
Spunem că &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; este între &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt; şi &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt; dacă &amp;lt;code&amp;gt;x≥a&amp;lt;/code&amp;gt; şi &amp;lt;code&amp;gt;x≤b&amp;lt;/code&amp;gt;. Fiind date două valori naturale &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt; şi &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt;, să se determine câte numere extraprime există între &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt; şi &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt;, precum şi cel mai mic şi cel mai mare număr extraprim dintre &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt; şi &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= Date de intrare =&lt;br /&gt;
Fișierul de intrare &amp;lt;code&amp;gt;input.txt&amp;lt;/code&amp;gt; conține pe prima linie cele două valori naturale &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt; şi &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt;, separate printr-un spaţiu.&lt;br /&gt;
&lt;br /&gt;
= Date de ieșire =&lt;br /&gt;
Fișierul de ieșire &amp;lt;code&amp;gt;output.txt&amp;lt;/code&amp;gt; va conține &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt; linii. Pe prima linie se va scrie un număr natural &amp;lt;code&amp;gt;nr&amp;lt;/code&amp;gt; reprezentând numărul de numere extraprime dintre &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt; şi &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt;. Pe linia a doua a fişierului de ieşire se va scrie cel mai mic număr extraprim dintre &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt; şi &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt;, iar pe linia a treia a fişierului de ieşire se va scrie cel mai mare număr extraprim dintre &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt; şi &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= Restricții și precizări =&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;10 &amp;lt; a ≤ b &amp;lt; 10000000&amp;lt;/code&amp;gt;;&lt;br /&gt;
* Numărul &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; nu este prim;&lt;br /&gt;
* Pentru datele de test există întotdeauna soluţie;&lt;br /&gt;
&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
input.txt:&lt;br /&gt;
&lt;br /&gt;
10 100&lt;br /&gt;
&lt;br /&gt;
output.txt:&lt;br /&gt;
&lt;br /&gt;
4&lt;br /&gt;
&lt;br /&gt;
23&lt;br /&gt;
&lt;br /&gt;
73&lt;br /&gt;
&lt;br /&gt;
Explicație:&lt;br /&gt;
&lt;br /&gt;
Se află &amp;lt;code&amp;gt;4&amp;lt;/code&amp;gt; numere extraprime mai mari decât &amp;lt;code&amp;gt;10&amp;lt;/code&amp;gt; şi mai mici decât &amp;lt;code&amp;gt;100&amp;lt;/code&amp;gt;: &amp;lt;code&amp;gt;23&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;37&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;53&amp;lt;/code&amp;gt; şi &amp;lt;code&amp;gt;73&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
input.txt:&lt;br /&gt;
&lt;br /&gt;
99999999999999999999 1&lt;br /&gt;
&lt;br /&gt;
Output:&lt;br /&gt;
&lt;br /&gt;
Input-ul nu convine conditiilor&lt;br /&gt;
&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python3&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
from math import log10&lt;br /&gt;
&lt;br /&gt;
def verificare(a, b):&lt;br /&gt;
    if not(10&amp;lt;=a&amp;lt;=10000000):&lt;br /&gt;
        print(&amp;quot;Input-ul nu convine conditiilor&amp;quot;)&lt;br /&gt;
        exit()&lt;br /&gt;
    if not(10&amp;lt;=b&amp;lt;=10000000):&lt;br /&gt;
        print(&amp;quot;Input-ul nu convine conditiilor&amp;quot;)&lt;br /&gt;
        exit()&lt;br /&gt;
&lt;br /&gt;
N = 10000000&lt;br /&gt;
e = [0] * (N + 1)&lt;br /&gt;
fr = [0] * (N + 1)&lt;br /&gt;
a, b, t, maxi, mini = 0, 0, 0, -1, N&lt;br /&gt;
&lt;br /&gt;
def ciur():&lt;br /&gt;
    e[0] = e[1] = 1&lt;br /&gt;
&lt;br /&gt;
    for i in range(2, N + 1):&lt;br /&gt;
        if not e[i]:&lt;br /&gt;
            for j in range(i * 2, N + 1, i):&lt;br /&gt;
                e[j] = 1&lt;br /&gt;
&lt;br /&gt;
def eliminare(x):&lt;br /&gt;
    pow10, get, k = 1, 0, 0&lt;br /&gt;
&lt;br /&gt;
    if e[x]:&lt;br /&gt;
        return 0&lt;br /&gt;
&lt;br /&gt;
    while pow10 &amp;lt;= x:&lt;br /&gt;
        get = x % pow10&lt;br /&gt;
        k = x // pow10 // 10&lt;br /&gt;
        k = k * pow10 + get&lt;br /&gt;
&lt;br /&gt;
        if e[k]:&lt;br /&gt;
            return 0&lt;br /&gt;
&lt;br /&gt;
        pow10 *= 10&lt;br /&gt;
&lt;br /&gt;
    return 1&lt;br /&gt;
&lt;br /&gt;
ciur()&lt;br /&gt;
&lt;br /&gt;
# Reading input from a file&lt;br /&gt;
with open(&amp;quot;input.txt&amp;quot;, &amp;quot;r&amp;quot;) as infile:&lt;br /&gt;
    a, b = map(int, infile.readline().split())&lt;br /&gt;
    verificare(a,b)&lt;br /&gt;
&lt;br /&gt;
# Writing output to a file&lt;br /&gt;
with open(&amp;quot;output.txt&amp;quot;, &amp;quot;w&amp;quot;) as outfile:&lt;br /&gt;
    for i in range(a, b + 1):&lt;br /&gt;
        r = eliminare(i)&lt;br /&gt;
        t += r&lt;br /&gt;
&lt;br /&gt;
        if r == 1:&lt;br /&gt;
            maxi = max(maxi, i)&lt;br /&gt;
            mini = min(mini, i)&lt;br /&gt;
&lt;br /&gt;
    outfile.write(f&amp;quot;{t}\n{mini}\n{maxi}\n&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Miawinator</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=4251_-_numereOJI&amp;diff=9029</id>
		<title>4251 - numereOJI</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=4251_-_numereOJI&amp;diff=9029"/>
		<updated>2024-01-04T22:07:31Z</updated>

		<summary type="html">&lt;p&gt;Miawinator: Pagină nouă: Gigel este un mare pasionat al cifrelor. Orice moment liber şi-l petrece jucându-se cu numere. Jucându-se astfel, într-o zi a scris pe hârtie &amp;lt;code&amp;gt;10&amp;lt;/code&amp;gt; numere distincte de câte două cifre şi a observat că printre acestea există două submulţimi disjuncte de sumă egală. Desigur, Gigel a crezut că este o întâmplare şi a scris alte &amp;lt;code&amp;gt;10&amp;lt;/code&amp;gt; numere distincte de câte două cifre şi spre surpriza lui, după un timp a găsit din nou două submulţimi...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Gigel este un mare pasionat al cifrelor. Orice moment liber şi-l petrece jucându-se cu numere. Jucându-se astfel, într-o zi a scris pe hârtie &amp;lt;code&amp;gt;10&amp;lt;/code&amp;gt; numere distincte de câte două cifre şi a observat că printre acestea există două submulţimi disjuncte de sumă egală. Desigur, Gigel a crezut că este o întâmplare şi a scris alte &amp;lt;code&amp;gt;10&amp;lt;/code&amp;gt; numere distincte de câte două cifre şi spre surpriza lui, după un timp a găsit din nou două submulţimi disjuncte de sumă egală.&lt;br /&gt;
&lt;br /&gt;
= Cerința =&lt;br /&gt;
Date &amp;lt;code&amp;gt;10&amp;lt;/code&amp;gt; numere distincte de câte două cifre, determinaţi numărul de perechi de submulţimi disjuncte de sumă egală care se pot forma cu numere din cele date, precum şi una dintre aceste perechi pentru care suma numerelor din fiecare dintre cele două submulţimi este maximă.&lt;br /&gt;
&lt;br /&gt;
= Date de intrare =&lt;br /&gt;
Fișierul de intrare &amp;lt;code&amp;gt;input.txt&amp;lt;/code&amp;gt; conține pe prima linie 10 numere naturale distincte separate prin câte un spaţiu &amp;lt;code&amp;gt;x1 x2 ... x10&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= Date de ieșire =&lt;br /&gt;
Fișierul de ieșire &amp;lt;code&amp;gt;output.txt&amp;lt;/code&amp;gt; va conține trei linii. Pe prima linie se află numărul de perechi de submulţimi de sumă egală, precum şi suma maximă obţinută, separate printr-un spaţiu. Pe linia a doua se află elementele primei submulţimi, iar pe linia a treia se află elementele celei de a doua submulţimi, separate prin câte un spaţiu:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;NrSol Smax&amp;lt;/code&amp;gt;, unde &amp;lt;code&amp;gt;NrSol&amp;lt;/code&amp;gt; – numărul de perechi; &amp;lt;code&amp;gt;Smax&amp;lt;/code&amp;gt; – suma maximă&lt;br /&gt;
* &amp;lt;code&amp;gt;x1 ... xk&amp;lt;/code&amp;gt; – elementele primei submulţimi&lt;br /&gt;
* &amp;lt;code&amp;gt;y1 ... yp&amp;lt;/code&amp;gt; - elementele celei de a doua submulţimi&lt;br /&gt;
&lt;br /&gt;
= Restricții și precizări =&lt;br /&gt;
&lt;br /&gt;
* Ordinea submulţimilor în perechi nu contează.&lt;br /&gt;
* Perechea de submulţimi determinată nu este obligatoriu unică.&lt;br /&gt;
&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
input.txt:&lt;br /&gt;
&lt;br /&gt;
60 49 86 78 23 97 69 71 32 10&lt;br /&gt;
&lt;br /&gt;
output.txt:&lt;br /&gt;
&lt;br /&gt;
65 276&lt;br /&gt;
&lt;br /&gt;
60 49 86 71 10 &lt;br /&gt;
&lt;br /&gt;
78 97 69 32 &lt;br /&gt;
&lt;br /&gt;
Explicație:&lt;br /&gt;
&lt;br /&gt;
Sunt &amp;lt;code&amp;gt;65&amp;lt;/code&amp;gt; de soluţii; suma maximă este &amp;lt;code&amp;gt;276&amp;lt;/code&amp;gt;, s-au folosit &amp;lt;code&amp;gt;9&amp;lt;/code&amp;gt; din cele &amp;lt;code&amp;gt;10&amp;lt;/code&amp;gt; numere; prima submulţime are &amp;lt;code&amp;gt;4&amp;lt;/code&amp;gt; elemente, a doua are &amp;lt;code&amp;gt;5&amp;lt;/code&amp;gt; elemente.&lt;br /&gt;
&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python3&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
with open(&amp;quot;input.txt&amp;quot;, &amp;quot;r&amp;quot;) as fin, open(&amp;quot;output.txt&amp;quot;, &amp;quot;w&amp;quot;) as fout:&lt;br /&gt;
    n = 10&lt;br /&gt;
    v = [0] * 12&lt;br /&gt;
    a = [0] * 12&lt;br /&gt;
    sol = [0] * 12&lt;br /&gt;
&lt;br /&gt;
    i, s1, s2, nrSubm, smax = 0, 0, 0, 0, 0&lt;br /&gt;
&lt;br /&gt;
    l=list(map(int, fin.readline().split()))&lt;br /&gt;
&lt;br /&gt;
    for i in range(1, n + 1):&lt;br /&gt;
        v[i] = l[i-1]&lt;br /&gt;
&lt;br /&gt;
    while a[0] == 0:&lt;br /&gt;
        # Calculating sums&lt;br /&gt;
        s1, s2 = 0, 0&lt;br /&gt;
        for i in range(1, n + 1):&lt;br /&gt;
            if a[i] == 1:&lt;br /&gt;
                s1 += v[i]&lt;br /&gt;
            elif a[i] == 2:&lt;br /&gt;
                s2 += v[i]&lt;br /&gt;
&lt;br /&gt;
        if s1 == s2:&lt;br /&gt;
            nrSubm += 1&lt;br /&gt;
            if s1 &amp;gt; smax:&lt;br /&gt;
                smax = s1&lt;br /&gt;
                sol = a[:]&lt;br /&gt;
&lt;br /&gt;
        # Generating the next sequence of 0, 1, 2&lt;br /&gt;
        i = n&lt;br /&gt;
        while a[i] == 2:&lt;br /&gt;
            a[i] = 0&lt;br /&gt;
            i -= 1&lt;br /&gt;
        a[i] += 1&lt;br /&gt;
&lt;br /&gt;
    nrSubm //= 2&lt;br /&gt;
&lt;br /&gt;
    fout.write(f&amp;quot;{nrSubm} {smax}\n&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    for i in range(1, n + 1):&lt;br /&gt;
        if sol[i] == 1:&lt;br /&gt;
            fout.write(f&amp;quot;{v[i]} &amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    fout.write(&amp;quot;\n&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    for i in range(1, n + 1):&lt;br /&gt;
        if sol[i] == 2:&lt;br /&gt;
            fout.write(f&amp;quot;{v[i]} &amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    fout.write(&amp;quot;\n&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Miawinator</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=0955_-_Miny&amp;diff=9028</id>
		<title>0955 - Miny</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=0955_-_Miny&amp;diff=9028"/>
		<updated>2024-01-04T22:00:14Z</updated>

		<summary type="html">&lt;p&gt;Miawinator: Pagină nouă: Fie &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt; un număr natural nenul şi &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt; numere naturale nenule: &amp;lt;code&amp;gt;x1&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;x2&amp;lt;/code&amp;gt;,…, &amp;lt;code&amp;gt;xN&amp;lt;/code&amp;gt;.  Fie &amp;lt;code&amp;gt;P&amp;lt;/code&amp;gt; produsul acestor N numere, &amp;lt;code&amp;gt;P=x1•x2•...•xN&amp;lt;/code&amp;gt;.  = Cerinţe = Scrieţi un program care să citească numerele &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;x1&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;x2&amp;lt;/code&amp;gt;,…, &amp;lt;code&amp;gt;xN&amp;lt;/code&amp;gt; şi apoi să determine:  a) cifra zecilor produsului &amp;lt;code&amp;gt;P&amp;lt;/code&amp;gt;;  b) cel mai mic număr natural &amp;lt;code&amp;gt;Y&amp;lt;/code&amp;gt;, pentru ca...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Fie &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt; un număr natural nenul şi &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt; numere naturale nenule: &amp;lt;code&amp;gt;x1&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;x2&amp;lt;/code&amp;gt;,…, &amp;lt;code&amp;gt;xN&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Fie &amp;lt;code&amp;gt;P&amp;lt;/code&amp;gt; produsul acestor N numere, &amp;lt;code&amp;gt;P=x1•x2•...•xN&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= Cerinţe =&lt;br /&gt;
Scrieţi un program care să citească numerele &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;x1&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;x2&amp;lt;/code&amp;gt;,…, &amp;lt;code&amp;gt;xN&amp;lt;/code&amp;gt; şi apoi să determine:&lt;br /&gt;
&lt;br /&gt;
a) cifra zecilor produsului &amp;lt;code&amp;gt;P&amp;lt;/code&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
b) cel mai mic număr natural &amp;lt;code&amp;gt;Y&amp;lt;/code&amp;gt;, pentru care există numărul natural &amp;lt;code&amp;gt;K&amp;lt;/code&amp;gt; astfel încât &amp;lt;code&amp;gt;YK=P&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= Date de intrare =&lt;br /&gt;
Fișierul de intrare &amp;lt;code&amp;gt;input.txt&amp;lt;/code&amp;gt; conţine două linii. Pe prima linie este scris numărul natural &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt;. Pe următoarea linie sunt scrise cele &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt; numere naturale &amp;lt;code&amp;gt;x1&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;x2&amp;lt;/code&amp;gt;,…, &amp;lt;code&amp;gt;xN&amp;lt;/code&amp;gt;, separate prin câte un spaţiu.&lt;br /&gt;
&lt;br /&gt;
= Date de ieșire =&lt;br /&gt;
Fișierul de ieșire &amp;lt;code&amp;gt;output.txt&amp;lt;/code&amp;gt; va conține:&lt;br /&gt;
&lt;br /&gt;
* pe prima linie o cifră reprezentând cifra zecilor produsului &amp;lt;code&amp;gt;P&amp;lt;/code&amp;gt;;&lt;br /&gt;
* pe a doua linie numărul natural M de factori primi din descompunerea în factori primi a numărului &amp;lt;code&amp;gt;Y&amp;lt;/code&amp;gt;;&lt;br /&gt;
* pe fiecare dintre următoarele &amp;lt;code&amp;gt;M&amp;lt;/code&amp;gt; linii (câte o linie pentru fiecare factor prim din descompunere) câte două valori &amp;lt;code&amp;gt;F&amp;lt;/code&amp;gt; şi &amp;lt;code&amp;gt;E&amp;lt;/code&amp;gt;, separate printr-un singur spaţiu, &amp;lt;code&amp;gt;F&amp;lt;/code&amp;gt; reprezentând factorul prim iar &amp;lt;code&amp;gt;E&amp;lt;/code&amp;gt; exponentul acestui factor din descompunerea în factori primi a lui &amp;lt;code&amp;gt;Y&amp;lt;/code&amp;gt;; scrierea în fişier a acestor factori primi se va face în ordinea crescătoare a valorii lor.&lt;br /&gt;
&lt;br /&gt;
= Restricții și precizări =&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;2 ≤  N ≤ 50000&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
input.txt:&lt;br /&gt;
&lt;br /&gt;
6&lt;br /&gt;
&lt;br /&gt;
12 5 60 25 4 36&lt;br /&gt;
&lt;br /&gt;
output.txt:&lt;br /&gt;
&lt;br /&gt;
0&lt;br /&gt;
&lt;br /&gt;
3&lt;br /&gt;
&lt;br /&gt;
2 2&lt;br /&gt;
&lt;br /&gt;
3 1&lt;br /&gt;
&lt;br /&gt;
5 1&lt;br /&gt;
&lt;br /&gt;
Explicație:&lt;br /&gt;
&lt;br /&gt;
Produsul celor &amp;lt;code&amp;gt;6&amp;lt;/code&amp;gt; numere este: &amp;lt;code&amp;gt;P=12∙5∙60∙25∙4∙36=12960000&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Cifra zecilor lui P este &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Se observă că există &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt; valori posibile pentru &amp;lt;code&amp;gt;Y&amp;lt;/code&amp;gt;: &amp;lt;code&amp;gt;12960000&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;3600&amp;lt;/code&amp;gt; şi &amp;lt;code&amp;gt;60&amp;lt;/code&amp;gt; deoarece: &amp;lt;code&amp;gt;129600001=12960000&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;36002=12960000&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;604=12960000&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Cea mai mică valoare dintre aceste valori este &amp;lt;code&amp;gt;60&amp;lt;/code&amp;gt;, astfel &amp;lt;code&amp;gt;Y=60=(2**2)*3*5&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
input.txt:&lt;br /&gt;
&lt;br /&gt;
3&lt;br /&gt;
&lt;br /&gt;
2 5 7&lt;br /&gt;
&lt;br /&gt;
output.txt:&lt;br /&gt;
&lt;br /&gt;
7&lt;br /&gt;
&lt;br /&gt;
3&lt;br /&gt;
&lt;br /&gt;
2 1&lt;br /&gt;
&lt;br /&gt;
5 1&lt;br /&gt;
&lt;br /&gt;
7 1&lt;br /&gt;
&lt;br /&gt;
Explicație:&lt;br /&gt;
&lt;br /&gt;
Produsul celor &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt; numere este: &amp;lt;code&amp;gt;P=2∙5∙7=70&amp;lt;/code&amp;gt;. Cifra zecilor lui P este &amp;lt;code&amp;gt;7&amp;lt;/code&amp;gt;. Există o singură valoare posibilă pentru &amp;lt;code&amp;gt;Y&amp;lt;/code&amp;gt;: &amp;lt;code&amp;gt;70&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Exemplul 3 ==&lt;br /&gt;
input.txt:&lt;br /&gt;
&lt;br /&gt;
999999999999&lt;br /&gt;
&lt;br /&gt;
2 5 7&lt;br /&gt;
&lt;br /&gt;
Output:&lt;br /&gt;
&lt;br /&gt;
Input-ul nu convine conditiilor&lt;br /&gt;
&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python3&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
def verificare(n):&lt;br /&gt;
    if not(2&amp;lt;=n&amp;lt;=5000):&lt;br /&gt;
        print(&amp;quot;Input-ul nu convine conditiilor&amp;quot;)&lt;br /&gt;
        exit()&lt;br /&gt;
&lt;br /&gt;
def cmmdc(a, b):&lt;br /&gt;
    while a and b:&lt;br /&gt;
        if a &amp;gt; b:&lt;br /&gt;
            a = a % b&lt;br /&gt;
        else:&lt;br /&gt;
            b = b % a&lt;br /&gt;
    return a + b&lt;br /&gt;
&lt;br /&gt;
n = 10000&lt;br /&gt;
v = [0] * (n + 1)&lt;br /&gt;
fr = [0] * (n + 1)&lt;br /&gt;
w = [0] * (n + 1)&lt;br /&gt;
&lt;br /&gt;
# determinare numere prime &amp;lt;=10000 - Ciurul lui Eratostene&lt;br /&gt;
v[2] = 1&lt;br /&gt;
for i in range(3, n + 1, 2):&lt;br /&gt;
    v[i] = 1&lt;br /&gt;
&lt;br /&gt;
for i in range(3, n + 1, 2):&lt;br /&gt;
    if v[i] != 0:&lt;br /&gt;
        for j in range(2 * i, n + 1, i):&lt;br /&gt;
            v[j] = 0&lt;br /&gt;
&lt;br /&gt;
with open(&amp;quot;input.txt&amp;quot;, &amp;quot;r&amp;quot;) as f, open(&amp;quot;output.txt&amp;quot;, &amp;quot;w&amp;quot;) as g:&lt;br /&gt;
    N = int(f.readline())&lt;br /&gt;
    verificare(N)&lt;br /&gt;
    l=list(map(int, f.readline().split()))&lt;br /&gt;
    p = 1&lt;br /&gt;
    for i in range(N):&lt;br /&gt;
        x = l[i]&lt;br /&gt;
        fr[x] += 1&lt;br /&gt;
        p = (p * x) % 100&lt;br /&gt;
&lt;br /&gt;
    for i in range(2, n + 1):&lt;br /&gt;
        if fr[i]:&lt;br /&gt;
            if v[i]:&lt;br /&gt;
                w[i] += fr[i]&lt;br /&gt;
            else:&lt;br /&gt;
                x = i&lt;br /&gt;
                for j in range(2, n + 1):&lt;br /&gt;
                    while v[j] and (x % j == 0) and x &amp;gt; 1:&lt;br /&gt;
                        w[j] += fr[i]&lt;br /&gt;
                        x //= j&lt;br /&gt;
&lt;br /&gt;
    M = 0&lt;br /&gt;
    d = 0&lt;br /&gt;
    for i in range(2, n + 1):&lt;br /&gt;
        if w[i]:&lt;br /&gt;
            M += 1&lt;br /&gt;
            d = cmmdc(d, w[i])&lt;br /&gt;
&lt;br /&gt;
    g.write(f&amp;quot;{p // 10}\n{M}\n&amp;quot;)&lt;br /&gt;
    for i in range(2, n + 1):&lt;br /&gt;
        if w[i]:&lt;br /&gt;
            g.write(f&amp;quot;{i} {w[i] // d}\n&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Miawinator</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=1639_-_Secvente_3&amp;diff=9026</id>
		<title>1639 - Secvente 3</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=1639_-_Secvente_3&amp;diff=9026"/>
		<updated>2024-01-04T21:34:55Z</updated>

		<summary type="html">&lt;p&gt;Miawinator: Pagină nouă: Considerăm şirul de numere naturale nenule distincte . Notăm cu  lungimea maximă a unei secvențe de elemente cu valori consecutive care se poate obţine prin ordonarea crescătoare a primelor &amp;lt;code&amp;gt;i&amp;lt;/code&amp;gt; elemente din şirul dat. De exemplu, pentru șirul &amp;lt;code&amp;gt;7, 2, 3, 8, 20, 4, 10, 9&amp;lt;/code&amp;gt; avem: .  = Cerința = Să se determine .  = Date de intrare = Fişierul &amp;lt;code&amp;gt;input.txt&amp;lt;/code&amp;gt; conţine pe prima linie numărul natural &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt;. Pe fiecare din următoarel...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Considerăm şirul de numere naturale nenule distincte . Notăm cu  lungimea maximă a unei secvențe de elemente cu valori consecutive care se poate obţine prin ordonarea crescătoare a primelor &amp;lt;code&amp;gt;i&amp;lt;/code&amp;gt; elemente din şirul dat. De exemplu, pentru șirul &amp;lt;code&amp;gt;7, 2, 3, 8, 20, 4, 10, 9&amp;lt;/code&amp;gt; avem: .&lt;br /&gt;
&lt;br /&gt;
= Cerința =&lt;br /&gt;
Să se determine .&lt;br /&gt;
&lt;br /&gt;
= Date de intrare =&lt;br /&gt;
Fişierul &amp;lt;code&amp;gt;input.txt&amp;lt;/code&amp;gt; conţine pe prima linie numărul natural &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt;. Pe fiecare din următoarele &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt; linii se găseşte câte un număr natural, deci pe linia &amp;lt;code&amp;gt;i+1&amp;lt;/code&amp;gt; se va afla elementul , pentru &amp;lt;code&amp;gt;i=1...N&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= Date de ieșire =&lt;br /&gt;
Fişierul &amp;lt;code&amp;gt;output.txt&amp;lt;/code&amp;gt; conţine exact &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt; linii. Pe linia &amp;lt;code&amp;gt;i&amp;lt;/code&amp;gt; (&amp;lt;code&amp;gt;i = 1...N&amp;lt;/code&amp;gt;) se va afișa valoarea .&lt;br /&gt;
&lt;br /&gt;
= Restricții și precizări =&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;3 ≤ N ≤ 200.000&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
input.txt:&lt;br /&gt;
&lt;br /&gt;
8&lt;br /&gt;
&lt;br /&gt;
7&lt;br /&gt;
&lt;br /&gt;
3&lt;br /&gt;
&lt;br /&gt;
2&lt;br /&gt;
&lt;br /&gt;
8&lt;br /&gt;
&lt;br /&gt;
20&lt;br /&gt;
&lt;br /&gt;
4&lt;br /&gt;
&lt;br /&gt;
10&lt;br /&gt;
&lt;br /&gt;
9&lt;br /&gt;
&lt;br /&gt;
output.txt:&lt;br /&gt;
&lt;br /&gt;
1&lt;br /&gt;
&lt;br /&gt;
1&lt;br /&gt;
&lt;br /&gt;
2&lt;br /&gt;
&lt;br /&gt;
2&lt;br /&gt;
&lt;br /&gt;
2&lt;br /&gt;
&lt;br /&gt;
3&lt;br /&gt;
&lt;br /&gt;
3&lt;br /&gt;
&lt;br /&gt;
4&lt;br /&gt;
&lt;br /&gt;
Explicație:&lt;br /&gt;
&lt;br /&gt;
L1 Șirul: &amp;lt;code&amp;gt;7&amp;lt;/code&amp;gt;. Lungime maximă &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
L2 Șirul: &amp;lt;code&amp;gt;7, 3&amp;lt;/code&amp;gt;. Lungime maximă &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
L3 Șirul: &amp;lt;code&amp;gt;7, 3, 2&amp;lt;/code&amp;gt;. Şirul sortat este &amp;lt;code&amp;gt;2, 3, 7&amp;lt;/code&amp;gt;. Lungimea maximă este &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt; (dată de secvenţa &amp;lt;code&amp;gt;2, 3&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
L4 Șirul: &amp;lt;code&amp;gt;7, 3, 2, 8&amp;lt;/code&amp;gt;. Lungime maximă &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt; (dată de &amp;lt;code&amp;gt;2, 3&amp;lt;/code&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
L5 Șirul: &amp;lt;code&amp;gt;7, 3, 2, 8, 20&amp;lt;/code&amp;gt;. Lungime maximă &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt; (dată de &amp;lt;code&amp;gt;2, 3&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
L6 Șirul: &amp;lt;code&amp;gt;7, 3, 2, 8, 20, 4&amp;lt;/code&amp;gt;. Şirul sortat este &amp;lt;code&amp;gt;2, 3, 4, 7, 8, 20&amp;lt;/code&amp;gt;. Lungimea maximă este &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt; (dată de secvenţa &amp;lt;code&amp;gt;2, 3, 4&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
L7 Șirul: &amp;lt;code&amp;gt;7, 3, 2, 8, 20, 4, 10&amp;lt;/code&amp;gt;. Lungime maximă &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt; (dată de &amp;lt;code&amp;gt;2, 3, 4&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
L8 Șirul: &amp;lt;code&amp;gt;7, 3, 2, 8, 20, 4, 10, 9&amp;lt;/code&amp;gt;. Şirul sortat este &amp;lt;code&amp;gt;2, 3, 4, 7, 8, 9, 10, 20&amp;lt;/code&amp;gt;. Lungimea maximă este &amp;lt;code&amp;gt;4&amp;lt;/code&amp;gt; (dată de secvenţa &amp;lt;code&amp;gt;7, 8, 9, 10&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
input.txt:&lt;br /&gt;
&lt;br /&gt;
999999999&lt;br /&gt;
&lt;br /&gt;
7&lt;br /&gt;
&lt;br /&gt;
3&lt;br /&gt;
&lt;br /&gt;
2&lt;br /&gt;
&lt;br /&gt;
8&lt;br /&gt;
&lt;br /&gt;
20&lt;br /&gt;
&lt;br /&gt;
4&lt;br /&gt;
&lt;br /&gt;
10&lt;br /&gt;
&lt;br /&gt;
9&lt;br /&gt;
&lt;br /&gt;
Output:&lt;br /&gt;
&lt;br /&gt;
Input-ul nu convine conditiilor&lt;br /&gt;
&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python3&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
def verificare(n):&lt;br /&gt;
    if not(3&amp;lt;=n&amp;lt;=200000):&lt;br /&gt;
        print(&amp;quot;Input-ul nu convine conditiilor&amp;quot;)&lt;br /&gt;
        exit()&lt;br /&gt;
&lt;br /&gt;
infile = &amp;quot;input.txt&amp;quot;&lt;br /&gt;
outfile = &amp;quot;output.txt&amp;quot;&lt;br /&gt;
nMax = 200013&lt;br /&gt;
vMax = 1000013&lt;br /&gt;
&lt;br /&gt;
vz = [False] * vMax&lt;br /&gt;
v = [0] * nMax&lt;br /&gt;
pos = [0] * vMax&lt;br /&gt;
n = 0&lt;br /&gt;
&lt;br /&gt;
def read():&lt;br /&gt;
    global n&lt;br /&gt;
    with open(infile, &amp;quot;r&amp;quot;) as fin:&lt;br /&gt;
        n = int(fin.readline().strip())&lt;br /&gt;
        verificare(n)&lt;br /&gt;
        for i in range(n):&lt;br /&gt;
            v[i + 1] = int(fin.readline().strip())&lt;br /&gt;
            assert not vz[v[i + 1]]&lt;br /&gt;
            vz[v[i + 1]] = True&lt;br /&gt;
&lt;br /&gt;
def solve():&lt;br /&gt;
    global n&lt;br /&gt;
    best = 0&lt;br /&gt;
&lt;br /&gt;
    with open(outfile, &amp;quot;w&amp;quot;) as fout:&lt;br /&gt;
        for i in range(1, n + 1):&lt;br /&gt;
            begin, end = v[i], v[i]&lt;br /&gt;
&lt;br /&gt;
            if pos[v[i] - 1]:&lt;br /&gt;
                begin = pos[v[i] - 1]&lt;br /&gt;
            if pos[v[i] + 1]:&lt;br /&gt;
                end = pos[v[i] + 1]&lt;br /&gt;
&lt;br /&gt;
            pos[begin] = end&lt;br /&gt;
            pos[end] = begin&lt;br /&gt;
&lt;br /&gt;
            best = max(best, end - begin + 1)&lt;br /&gt;
            fout.write(f&amp;quot;{best}\n&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    read()&lt;br /&gt;
    solve()&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Miawinator</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=2072_-_GG&amp;diff=8182</id>
		<title>2072 - GG</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=2072_-_GG&amp;diff=8182"/>
		<updated>2023-12-16T14:15:15Z</updated>

		<summary type="html">&lt;p&gt;Miawinator: Pagină nouă: = Enunț = Alex se află în sistemul de coordonate &amp;lt;code&amp;gt;2D&amp;lt;/code&amp;gt;. Aflându-se în coordonatele &amp;lt;code&amp;gt;(x, y)&amp;lt;/code&amp;gt;, el primește un număr aleator între &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; și &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt; (&amp;lt;code&amp;gt;50%&amp;lt;/code&amp;gt; șanse să primească &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; și &amp;lt;code&amp;gt;50%&amp;lt;/code&amp;gt; șanse să primească &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt;). Dacă acest număr este &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;, atunci el se va deplasa în &amp;lt;code&amp;gt;(x + 1, y)&amp;lt;/code&amp;gt;, altfel în &amp;lt;code&amp;gt;(x, y + 1)&amp;lt;/code&amp;gt;.  = Cerința = Știind că Alex pornește &amp;lt;cod...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Enunț =&lt;br /&gt;
Alex se află în sistemul de coordonate &amp;lt;code&amp;gt;2D&amp;lt;/code&amp;gt;. Aflându-se în coordonatele &amp;lt;code&amp;gt;(x, y)&amp;lt;/code&amp;gt;, el primește un număr aleator între &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; și &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt; (&amp;lt;code&amp;gt;50%&amp;lt;/code&amp;gt; șanse să primească &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; și &amp;lt;code&amp;gt;50%&amp;lt;/code&amp;gt; șanse să primească &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt;). Dacă acest număr este &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;, atunci el se va deplasa în &amp;lt;code&amp;gt;(x + 1, y)&amp;lt;/code&amp;gt;, altfel în &amp;lt;code&amp;gt;(x, y + 1)&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= Cerința =&lt;br /&gt;
Știind că Alex pornește &amp;lt;code&amp;gt;(1, 1)&amp;lt;/code&amp;gt;, se întreabă care este probabilitatea ca acesta să treacă prin &amp;lt;code&amp;gt;(N, M)&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= Date de intrare =&lt;br /&gt;
Programul citește de la tastatură numerele &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt; și &amp;lt;code&amp;gt;M&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= Date de ieșire =&lt;br /&gt;
Programul va afișa pe ecran numărul &amp;lt;code&amp;gt;P&amp;lt;/code&amp;gt;, reprezentând probabilitatea cerută.&lt;br /&gt;
&lt;br /&gt;
= Restricții și precizări =&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;1 ≤ N, M ≤ 100000&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
Input:&lt;br /&gt;
&lt;br /&gt;
2 3&lt;br /&gt;
&lt;br /&gt;
Output:&lt;br /&gt;
&lt;br /&gt;
0.375&lt;br /&gt;
&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
Input:&lt;br /&gt;
&lt;br /&gt;
99999999999999 2&lt;br /&gt;
&lt;br /&gt;
Output:&lt;br /&gt;
&lt;br /&gt;
Restrictiile nu sunt indeplinite.&lt;br /&gt;
&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python3&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
def check_restrictions(N, M):&lt;br /&gt;
    return 1 &amp;lt;= N &amp;lt;= 100000 and 1 &amp;lt;= M &amp;lt;= 100000&lt;br /&gt;
&lt;br /&gt;
def calculate_probability(N, M):&lt;br /&gt;
    MOD = 10**9 + 7&lt;br /&gt;
&lt;br /&gt;
    dp = [[0.0] * (M + 1) for _ in range(N + 1)]&lt;br /&gt;
&lt;br /&gt;
    dp[1][1] = 1.0  # Probabilitatea inițială&lt;br /&gt;
&lt;br /&gt;
    for i in range(1, N + 1):&lt;br /&gt;
        for j in range(1, M + 1):&lt;br /&gt;
            if i &amp;lt; N:&lt;br /&gt;
                dp[i + 1][j] += 0.5 * dp[i][j]&lt;br /&gt;
            if j &amp;lt; M:&lt;br /&gt;
                dp[i][j + 1] += 0.5 * dp[i][j]&lt;br /&gt;
&lt;br /&gt;
    return dp[N][M]&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    N = int(input(&amp;quot;Introduceti valoarea pentru N: &amp;quot;))&lt;br /&gt;
    M = int(input(&amp;quot;Introduceti valoarea pentru M: &amp;quot;))&lt;br /&gt;
&lt;br /&gt;
    if not check_restrictions(N, M):&lt;br /&gt;
        print(&amp;quot;Restrictiile nu sunt indeplinite.&amp;quot;)&lt;br /&gt;
    else:&lt;br /&gt;
        result = calculate_probability(N, M)&lt;br /&gt;
        print(f&#039;{result:.3f}&#039;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Miawinator</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=3770_-_Bisectoare&amp;diff=7948</id>
		<title>3770 - Bisectoare</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=3770_-_Bisectoare&amp;diff=7948"/>
		<updated>2023-12-12T19:57:47Z</updated>

		<summary type="html">&lt;p&gt;Miawinator: Pagină nouă: = Cerința = RAU-Gigel are un șir de puncte, nu neapărat distincte, aflate pe prima bisectoare. Punctele sunt caracterizate prin câte două coordonate (abscisă și ordonată), ambele numere întregi. Când le-a copiat pe caiet, din neatenție, RAU-Gigel a amestecat coordonatele celor &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt; puncte și omis ordonata unuia dintre ele. Care este aceasta, puteți să îl ajutați?  = Date de intrare = Fișierul de intrare &amp;lt;code&amp;gt;bisectoareIN.txt&amp;lt;/code&amp;gt; conține un num...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Cerința =&lt;br /&gt;
RAU-Gigel are un șir de puncte, nu neapărat distincte, aflate pe prima bisectoare. Punctele sunt caracterizate prin câte două coordonate (abscisă și ordonată), ambele numere întregi. Când le-a copiat pe caiet, din neatenție, RAU-Gigel a amestecat coordonatele celor &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt; puncte și omis ordonata unuia dintre ele. Care este aceasta, puteți să îl ajutați?&lt;br /&gt;
&lt;br /&gt;
= Date de intrare =&lt;br /&gt;
Fișierul de intrare &amp;lt;code&amp;gt;bisectoareIN.txt&amp;lt;/code&amp;gt; conține un număr impar de linii (&amp;lt;code&amp;gt;2*N-1&amp;lt;/code&amp;gt;), pe fiecare linie aflându-se câte un număr întreg &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; cu semnificația din enunț.&lt;br /&gt;
&lt;br /&gt;
= Date de ieșire =&lt;br /&gt;
Fișierul de ieșire &amp;lt;code&amp;gt;bisectoareOUT.txt&amp;lt;/code&amp;gt; va conține pe prima linie un număr întreg reprezentând ordonata ștearsă din neatenție.&lt;br /&gt;
&lt;br /&gt;
= Restricții și precizări =&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;1 ≤ N ≤ 10000&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;-1.000.000.000 ≤ x ≤ 1.000.000.000&amp;lt;/code&amp;gt;&lt;br /&gt;
* prima bisectoare are ecuația &amp;lt;code&amp;gt;y = x&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
bisectoareIN.txt:&lt;br /&gt;
&lt;br /&gt;
1 -3 5 -3 1&lt;br /&gt;
&lt;br /&gt;
bisectoareOUT.txt:&lt;br /&gt;
&lt;br /&gt;
5&lt;br /&gt;
&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
bisectoareIN.txt:&lt;br /&gt;
&lt;br /&gt;
1 -3 5 -3 1 999999999999&lt;br /&gt;
&lt;br /&gt;
bisectoareOUT.txt:&lt;br /&gt;
&lt;br /&gt;
Conditiile nu sunt indeplinite&lt;br /&gt;
&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python3&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
#Verfificare elemente&lt;br /&gt;
def verficicare():&lt;br /&gt;
    with open(&#039;bisectoareIN.txt&#039;, &#039;r&#039;) as file:&lt;br /&gt;
        linii = [int(line.strip()) for line in file]&lt;br /&gt;
        for i in linii:&lt;br /&gt;
            if -1000000000 &amp;gt; i or i &amp;gt; 1000000000:&lt;br /&gt;
                return&lt;br /&gt;
        if 1 &amp;gt; len(linii) or 10000 &amp;lt; len(linii):&lt;br /&gt;
            return&lt;br /&gt;
        return linii&lt;br /&gt;
&lt;br /&gt;
#Functia principala&lt;br /&gt;
def main():&lt;br /&gt;
    lista = verficicare()&lt;br /&gt;
    if lista == None:&lt;br /&gt;
        print(&amp;quot;Conditiile nu sunt indeplinite&amp;quot;)&lt;br /&gt;
        return&lt;br /&gt;
    lenght = len(lista)&lt;br /&gt;
    i=0&lt;br /&gt;
    while(i&amp;lt;lenght-1):&lt;br /&gt;
        j=i+1&lt;br /&gt;
        while(j&amp;lt;lenght):&lt;br /&gt;
            if lista[i] == lista[j]:&lt;br /&gt;
                    lista.remove(lista[i])&lt;br /&gt;
                    lista.remove(lista[j-1])&lt;br /&gt;
                    lenght -= 2&lt;br /&gt;
                    i+=1&lt;br /&gt;
                    continue&lt;br /&gt;
            j+=1&lt;br /&gt;
        i+=1&lt;br /&gt;
    for i in lista:&lt;br /&gt;
        if i &amp;gt;= 0:&lt;br /&gt;
            with open(&#039;bisectoareOUT.txt&#039;, &#039;w&#039;) as file:&lt;br /&gt;
                file.write(str(i))&lt;br /&gt;
            break&lt;br /&gt;
&lt;br /&gt;
main()&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Miawinator</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=2811_-_Triplete&amp;diff=7768</id>
		<title>2811 - Triplete</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=2811_-_Triplete&amp;diff=7768"/>
		<updated>2023-12-11T07:09:19Z</updated>

		<summary type="html">&lt;p&gt;Miawinator: Pagină nouă: = Cerința = Subprogramul &amp;lt;code&amp;gt;triplete&amp;lt;/code&amp;gt; are trei parametri, &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt; și &amp;lt;code&amp;gt;c&amp;lt;/code&amp;gt;, în această ordine, prin care primește câte un număr natural din intervalul &amp;lt;code&amp;gt;[0,10000]&amp;lt;/code&amp;gt; (&amp;lt;code&amp;gt;a&amp;lt;b&amp;lt;/code&amp;gt;). Subprogramul afișează pe ecran în ordine lexicografică toate tripletele de numere naturale, &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;y&amp;lt;/code&amp;gt; și &amp;lt;code&amp;gt;z&amp;lt;/code&amp;gt;, soluții ale ecuației &amp;lt;code&amp;gt;x+y+z=c&amp;lt;/code&amp;gt;, cu proprietatea că &amp;lt;code&amp;gt;a≤ x≤ y≤ z≤...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Cerința =&lt;br /&gt;
Subprogramul &amp;lt;code&amp;gt;triplete&amp;lt;/code&amp;gt; are trei parametri, &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt; și &amp;lt;code&amp;gt;c&amp;lt;/code&amp;gt;, în această ordine, prin care primește câte un număr natural din intervalul &amp;lt;code&amp;gt;[0,10000]&amp;lt;/code&amp;gt; (&amp;lt;code&amp;gt;a&amp;lt;b&amp;lt;/code&amp;gt;). Subprogramul afișează pe ecran în ordine lexicografică toate tripletele de numere naturale, &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;y&amp;lt;/code&amp;gt; și &amp;lt;code&amp;gt;z&amp;lt;/code&amp;gt;, soluții ale ecuației &amp;lt;code&amp;gt;x+y+z=c&amp;lt;/code&amp;gt;, cu proprietatea că &amp;lt;code&amp;gt;a≤ x≤ y≤ z≤ b&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Fiecare triplet afișat pe câte o linie și este încadrat între acolade, iar numerele &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;y&amp;lt;/code&amp;gt; și &amp;lt;code&amp;gt;z&amp;lt;/code&amp;gt; sunt afișate în această ordine, separate prin câte o virgulă. Dacă nu există niciun triplet cu proprietatea cerută, se afişează mesajul &amp;lt;code&amp;gt;nu exista&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Scrieți definiția completă a subprogramului.&lt;br /&gt;
&lt;br /&gt;
Important:&lt;br /&gt;
&lt;br /&gt;
Soluția propusă va conține definiția subprogramului cerut. Prezența în soluție a altor instrucțiuni poate duce erori de compilare sau de execuție care vor avea ca efect depunctarea soluției.&lt;br /&gt;
&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
Input:&lt;br /&gt;
&lt;br /&gt;
a=2, b=4, c=8&lt;br /&gt;
&lt;br /&gt;
Output:&lt;br /&gt;
&lt;br /&gt;
{2,2,4}&lt;br /&gt;
&lt;br /&gt;
{2,3,3}&lt;br /&gt;
&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
Input:&lt;br /&gt;
&lt;br /&gt;
a=-1, b=0, c=4&lt;br /&gt;
&lt;br /&gt;
Output:&lt;br /&gt;
&lt;br /&gt;
Parametrii a, b, sau c nu respectă condițiile specificate.&lt;br /&gt;
&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python3&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
def is_valid_interval(a, b, c):&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    Verifică dacă a, b și c se află în intervalul [0, 10000] și respectă relația a &amp;lt; b &amp;lt; c.&lt;br /&gt;
&lt;br /&gt;
    :param a: Număr natural de verificat.&lt;br /&gt;
    :param b: Număr natural de verificat.&lt;br /&gt;
    :param c: Număr natural de verificat.&lt;br /&gt;
    :return: True dacă toți parametrii sunt în interval și respectă relația specificată, False în caz contrar.&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    return 0 &amp;lt;= a &amp;lt;= 10000 and 0 &amp;lt;= b &amp;lt;= 10000 and 0 &amp;lt;= c &amp;lt;= 10000 and a &amp;lt; b &amp;lt; c&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def triplete(a, b, c):&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    Afișează în ordine lexicografică toate tripletele de numere naturale (x, y, z) soluții ale ecuației x+y+z=c,&lt;br /&gt;
    cu proprietatea că a ≤ x ≤ y ≤ z ≤ b.&lt;br /&gt;
&lt;br /&gt;
    :param a: Număr natural din intervalul [0, 10000].&lt;br /&gt;
    :param b: Număr natural din intervalul [0, 10000], a &amp;lt; b.&lt;br /&gt;
    :param c: Număr natural din intervalul [0, 10000].&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    # Verificăm condițiile privind a, b, c și relația a &amp;lt; b &amp;lt; c&lt;br /&gt;
    if is_valid_interval(a, b, c):&lt;br /&gt;
        found_triplet = False&lt;br /&gt;
        # Iterăm prin posibilele valori pentru x, y, z&lt;br /&gt;
        for x in range(a, b + 1):&lt;br /&gt;
            for y in range(x, b + 1):&lt;br /&gt;
                z = c - x - y&lt;br /&gt;
                # Verificăm condiția x ≤ y ≤ z&lt;br /&gt;
                if x &amp;lt;= y &amp;lt;= z &amp;lt;= b:&lt;br /&gt;
                    # Afișăm tripletul pe ecran&lt;br /&gt;
                    print(f&#039;{{{x},{y},{z}}}&#039;)&lt;br /&gt;
                    found_triplet = True&lt;br /&gt;
&lt;br /&gt;
        # Afisăm mesajul dacă nu există niciun triplet&lt;br /&gt;
        if not found_triplet:&lt;br /&gt;
            print(&amp;quot;nu exista&amp;quot;)&lt;br /&gt;
    else:&lt;br /&gt;
        print(&amp;quot;Parametrii a, b, sau c nu respectă condițiile specificate.&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
# Exemplu de utilizare:&lt;br /&gt;
triplete(int(input()), int(input()), int(input()))&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Miawinator</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=2842_-_Triplete_1&amp;diff=7767</id>
		<title>2842 - Triplete 1</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=2842_-_Triplete_1&amp;diff=7767"/>
		<updated>2023-12-11T06:57:28Z</updated>

		<summary type="html">&lt;p&gt;Miawinator: Pagină nouă: = Cerința = Se consideră subprogramul &amp;lt;code&amp;gt;triplete&amp;lt;/code&amp;gt;, cu un singur parametru, &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;, prin care primeşte o valoare naturală din intervalul &amp;lt;code&amp;gt;[2,10000]&amp;lt;/code&amp;gt;. Subprogramul afișează pe ecran toate tripletele de numere naturale &amp;lt;code&amp;gt;(x,y,z)&amp;lt;/code&amp;gt; cu proprietatea că &amp;lt;code&amp;gt;x&amp;lt;y&amp;lt;z&amp;lt;/code&amp;gt; și &amp;lt;code&amp;gt;x·y+y·z=n&amp;lt;/code&amp;gt;. Fiecare triplet se afișează pe câte o linie a ecranului, iar numerele din fiecare triplet sunt separate prin câte o virgulă și încad...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Cerința =&lt;br /&gt;
Se consideră subprogramul &amp;lt;code&amp;gt;triplete&amp;lt;/code&amp;gt;, cu un singur parametru, &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;, prin care primeşte o valoare naturală din intervalul &amp;lt;code&amp;gt;[2,10000]&amp;lt;/code&amp;gt;. Subprogramul afișează pe ecran toate tripletele de numere naturale &amp;lt;code&amp;gt;(x,y,z)&amp;lt;/code&amp;gt; cu proprietatea că &amp;lt;code&amp;gt;x&amp;lt;y&amp;lt;z&amp;lt;/code&amp;gt; și &amp;lt;code&amp;gt;x·y+y·z=n&amp;lt;/code&amp;gt;. Fiecare triplet se afișează pe câte o linie a ecranului, iar numerele din fiecare triplet sunt separate prin câte o virgulă și încadrate între paranteze rotunde.&lt;br /&gt;
&lt;br /&gt;
Scrieți definiţia completă a subprogramului.&lt;br /&gt;
&lt;br /&gt;
Important:&lt;br /&gt;
&lt;br /&gt;
Soluția propusă va conține definiția subprogramului cerut. Prezența în soluție a altor instrucțiuni poate duce erori de compilare sau de execuție care vor avea ca efect depunctarea soluției.&lt;br /&gt;
&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
Input:&lt;br /&gt;
&lt;br /&gt;
n=8&lt;br /&gt;
&lt;br /&gt;
Output:&lt;br /&gt;
&lt;br /&gt;
(0,1,8)&lt;br /&gt;
&lt;br /&gt;
(0,2,4)&lt;br /&gt;
&lt;br /&gt;
(1,2,3)&lt;br /&gt;
&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
Input:&lt;br /&gt;
&lt;br /&gt;
n=1&lt;br /&gt;
&lt;br /&gt;
Output:&lt;br /&gt;
&lt;br /&gt;
Nu sunt indeplinite conditiile&lt;br /&gt;
&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python3&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
def is_valid_interval(n):&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    Verifică dacă n se află în intervalul [2, 10000].&lt;br /&gt;
&lt;br /&gt;
    :param n: Valoarea naturală de verificat.&lt;br /&gt;
    :return: True dacă n este în interval, False în caz contrar.&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    return 2 &amp;lt;= n &amp;lt;= 10000&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def triplete(n):&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    Afișează toate tripletele de numere naturale (x, y, z) cu proprietatea că x &amp;lt; y &amp;lt; z și x * y + y * z = n.&lt;br /&gt;
&lt;br /&gt;
    :param n: Valoarea naturală din intervalul [2, 10000].&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    # Verificăm dacă n se află în intervalul specificat&lt;br /&gt;
    if is_valid_interval(n):&lt;br /&gt;
        # Iterăm prin posibilele valori pentru x, y, z&lt;br /&gt;
        for x in range(0, n):&lt;br /&gt;
            for y in range(x + 1, n):&lt;br /&gt;
                for z in range(y + 1, n+1):&lt;br /&gt;
                # Verificăm condiția x &amp;lt; y &amp;lt; z&lt;br /&gt;
                    if x &amp;lt; y &amp;lt; z and x * y + y * z == n:&lt;br /&gt;
                    # Afișăm tripletul pe ecran&lt;br /&gt;
                        print(f&#039;({x},{y},{z})&#039;)&lt;br /&gt;
    else:&lt;br /&gt;
        print(&amp;quot;Nu sunt indeplinite conditiile&amp;quot;)&lt;br /&gt;
# Exemplu de utilizare:&lt;br /&gt;
# Pentru n = 8, subprogramul va afișa toate tripletele care satisfac condițiile date.&lt;br /&gt;
triplete(int(input()))&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Miawinator</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=2817_-_Identice_4&amp;diff=7766</id>
		<title>2817 - Identice 4</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=2817_-_Identice_4&amp;diff=7766"/>
		<updated>2023-12-11T06:45:49Z</updated>

		<summary type="html">&lt;p&gt;Miawinator: Pagină nouă: = Cerința = Subprogramul &amp;lt;code&amp;gt;identice&amp;lt;/code&amp;gt; are doi parametri, în această ordine, &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt; și &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt;, prin care primește câte un număr natural (&amp;lt;code&amp;gt;10≤a≤b≤106&amp;lt;/code&amp;gt;). Subprogramul afișează pe ecran toate numerele naturale din intervalul &amp;lt;code&amp;gt;[a,b]&amp;lt;/code&amp;gt; care au toate cifrele identice. Numerele afișate sunt separate prin câte un spațiu, iar dacă nu există astfel de numere, se afişează pe ecran mesajul &amp;lt;code&amp;gt;nu exista&amp;lt;/code&amp;gt;.  Scrieţ...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Cerința =&lt;br /&gt;
Subprogramul &amp;lt;code&amp;gt;identice&amp;lt;/code&amp;gt; are doi parametri, în această ordine, &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt; și &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt;, prin care primește câte un număr natural (&amp;lt;code&amp;gt;10≤a≤b≤106&amp;lt;/code&amp;gt;). Subprogramul afișează pe ecran toate numerele naturale din intervalul &amp;lt;code&amp;gt;[a,b]&amp;lt;/code&amp;gt; care au toate cifrele identice. Numerele afișate sunt separate prin câte un spațiu, iar dacă nu există astfel de numere, se afişează pe ecran mesajul &amp;lt;code&amp;gt;nu exista&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Scrieţi definiţia completă a subprogramului.&lt;br /&gt;
&lt;br /&gt;
Important:&lt;br /&gt;
&lt;br /&gt;
Soluția propusă va conține definiția subprogramului cerut. Prezența în soluție a altor instrucțiuni poate duce erori de compilare sau de execuție care vor avea ca efect depunctarea soluției.&lt;br /&gt;
&lt;br /&gt;
= Exemplul 1 =&lt;br /&gt;
Input:&lt;br /&gt;
&lt;br /&gt;
a=700&lt;br /&gt;
&lt;br /&gt;
b=1500&lt;br /&gt;
&lt;br /&gt;
Output:&lt;br /&gt;
&lt;br /&gt;
777 888 999 1111&lt;br /&gt;
&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
Input:&lt;br /&gt;
&lt;br /&gt;
a=-1&lt;br /&gt;
&lt;br /&gt;
b=2&lt;br /&gt;
&lt;br /&gt;
Output:&lt;br /&gt;
&lt;br /&gt;
nu exista&lt;br /&gt;
&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python3&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
def cifre_identice(numar):&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    Verifică dacă toate cifrele unui număr sunt identice.&lt;br /&gt;
    :param numar: Numărul de verificat.&lt;br /&gt;
    :return: True dacă toate cifrele sunt identice, False în caz contrar.&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    cifra = numar % 10  # Se obține ultima cifră&lt;br /&gt;
    numar_temporar = numar // 10&lt;br /&gt;
&lt;br /&gt;
    while numar_temporar &amp;gt; 0:&lt;br /&gt;
        if numar_temporar % 10 != cifra:&lt;br /&gt;
            return False&lt;br /&gt;
        numar_temporar //= 10&lt;br /&gt;
&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
def identice(a, b):&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    Afișează numerele naturale din intervalul [a, b] care au toate cifrele identice.&lt;br /&gt;
&lt;br /&gt;
    :param a: Primul număr natural din interval (10≤a≤b≤1000000).&lt;br /&gt;
    :param b: Al doilea număr natural din interval (10≤a≤b≤1000000).&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    a = max(a, 10)  # Asigurăm că a este cel puțin 10&lt;br /&gt;
    exista_numere_identice = False&lt;br /&gt;
&lt;br /&gt;
    for numar in range(a, min(b + 1, 1000001)):&lt;br /&gt;
        if cifre_identice(numar):&lt;br /&gt;
            print(numar, end=&#039; &#039;)&lt;br /&gt;
            exista_numere_identice = True&lt;br /&gt;
&lt;br /&gt;
    if not exista_numere_identice:&lt;br /&gt;
        print(&amp;quot;nu exista&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
# Exemplu de apel:&lt;br /&gt;
a = 700&lt;br /&gt;
b = 1500&lt;br /&gt;
identice(a, b)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Miawinator</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=2659_-_Split_Text&amp;diff=7765</id>
		<title>2659 - Split Text</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=2659_-_Split_Text&amp;diff=7765"/>
		<updated>2023-12-11T06:26:39Z</updated>

		<summary type="html">&lt;p&gt;Miawinator: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cerința ==&lt;br /&gt;
Să se scrie funcția cu următorul antet:&lt;br /&gt;
 SplitText(propozitie)&lt;br /&gt;
Funcția primește ca parametri:&lt;br /&gt;
&lt;br /&gt;
* un șir de caractere &amp;lt;code&amp;gt;propozitie&amp;lt;/code&amp;gt; de lungime maximă &amp;lt;code&amp;gt;200&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Șirul &amp;lt;code&amp;gt;propozitie&amp;lt;/code&amp;gt; memorează un text format din cuvinte și separatori. Cuvintele sunt formate din litere, iar restul caracterelor din text sunt separatori. Funcția va returna propoziția introdusă de la tastatură despărțită in cuvinte sau va afișa un mesaj corespunzător în cazul în care nu sunt respectate restricțiile impuse.&lt;br /&gt;
&lt;br /&gt;
!!!Atenție: Problema este modificată față de cea de pe PbInfo ca să corespundă limbajului de programare Python.&lt;br /&gt;
&lt;br /&gt;
= Restricții și precizări =&lt;br /&gt;
&lt;br /&gt;
* Lungimea maximă a șirului &amp;lt;code&amp;gt;propozitie&amp;lt;/code&amp;gt; este &amp;lt;code&amp;gt;200&amp;lt;/code&amp;gt;&lt;br /&gt;
* Șirul va conține cel puțin un cuvânt&lt;br /&gt;
* Numărul maxim de cuvinte din text este &amp;lt;code&amp;gt;100&amp;lt;/code&amp;gt;&lt;br /&gt;
* Cuvintele textului au lungimea maximă &amp;lt;code&amp;gt;29&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
Input:&lt;br /&gt;
&lt;br /&gt;
O suta de ani ... de Romania!&lt;br /&gt;
&lt;br /&gt;
Output consola:&lt;br /&gt;
&lt;br /&gt;
[&#039;O&#039;, &#039;suta&#039;, &#039;de&#039;, &#039;ani&#039;, &#039;de&#039;, &#039;Romania&#039;]&lt;br /&gt;
&lt;br /&gt;
Va furniza rezultatul: &amp;lt;code&amp;gt;cuv[0]=&amp;quot;O&amp;quot;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;cuv[1]=&amp;quot;suta&amp;quot;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;cuv[2]=&amp;quot;de&amp;quot;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;cuv[3]=&amp;quot;ani&amp;quot;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;cuv[4]=&amp;quot;de&amp;quot;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;cuv[5]=&amp;quot;Romania&amp;quot;&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
Input:&lt;br /&gt;
&lt;br /&gt;
O suta de ani ... de Romaniaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa! &lt;br /&gt;
&lt;br /&gt;
Output consola:&lt;br /&gt;
&lt;br /&gt;
Propoziția nu respectă toate condițiile.&lt;br /&gt;
&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python3&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
def verifica_conditii(propozitie):&lt;br /&gt;
    # Verificăm dacă lungimea șirului este mai mică sau egală cu 200&lt;br /&gt;
    if len(propozitie) &amp;gt; 200:&lt;br /&gt;
        return False&lt;br /&gt;
    # Despartim șirul în cuvinte&lt;br /&gt;
    cuvinte = propozitie.split()&lt;br /&gt;
    # Verificăm dacă există cel puțin un cuvânt în șir&lt;br /&gt;
    if not cuvinte:&lt;br /&gt;
        return False&lt;br /&gt;
    # Verificăm numărul maxim de cuvinte în șir&lt;br /&gt;
    if len(cuvinte) &amp;gt; 100:&lt;br /&gt;
        return False&lt;br /&gt;
    # Verificăm lungimea maximă a cuvintelor&lt;br /&gt;
    if any(len(cuvant) &amp;gt; 29 for cuvant in cuvinte):&lt;br /&gt;
        return False&lt;br /&gt;
    # Dacă toate condițiile sunt îndeplinite, returnăm True&lt;br /&gt;
    return True&lt;br /&gt;
def SplitText(propozitie):&lt;br /&gt;
    # Verificăm condițiile&lt;br /&gt;
    if verifica_conditii(propozitie):&lt;br /&gt;
    # Filtram caracterele care nu sunt alfanumerice&lt;br /&gt;
        propozitie_filtrata = &#039;&#039;.join(caracter if caracter.isalnum() or caracter.isspace() else &#039; &#039; for caracter in propozitie)&lt;br /&gt;
    # Folosim metoda split() pentru a desparti propoziția filtrată în cuvinte&lt;br /&gt;
        cuvinte = propozitie_filtrata.split()&lt;br /&gt;
    # Afisăm rezultatul&lt;br /&gt;
        print(&amp;quot;Cuvintele din propoziție sunt:&amp;quot;, cuvinte)&lt;br /&gt;
    else:&lt;br /&gt;
        print(&amp;quot;Propoziția nu respectă toate condițiile.&amp;quot;)&lt;br /&gt;
SplitText(input(&amp;quot;Introduceti propozitia: &amp;quot;))&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Miawinator</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=4254_-_Matrice_12&amp;diff=7764</id>
		<title>4254 - Matrice 12</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=4254_-_Matrice_12&amp;diff=7764"/>
		<updated>2023-12-11T06:25:26Z</updated>

		<summary type="html">&lt;p&gt;Miawinator: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cerința ==&lt;br /&gt;
Scrieți un program care citește de la tastatură două numere naturale din intervalul &amp;lt;code&amp;gt;[2,50]&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; și &amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt;, și elementele unei matrici cu &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; linii și &amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt; coloane, numere naturale distincte din intervalul &amp;lt;code&amp;gt;[0,10000]&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Programul interschimbă elementele de pe coloana pe care se află valoarea minimă cu elementele de pe coloana pe care se află valoarea maximă din matrice, apoi afișează pe ecran matricea modificată, câte o linie a matricii pe câte o linie a ecranului, elementele fiecărei linii fiind separate prin câte un spațiu.&lt;br /&gt;
&lt;br /&gt;
Se vor defini și apela următoarele subprograme:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;citire&amp;lt;/code&amp;gt;, care citește de la tastatură valorile lui &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; și &amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt; și apoi elementele matricei&lt;br /&gt;
* &amp;lt;code&amp;gt;afisare&amp;lt;/code&amp;gt;, care afișează pe ecran elementele matricei conform cerinței&lt;br /&gt;
* &amp;lt;code&amp;gt;col_min&amp;lt;/code&amp;gt;, care determină indicele coloanei pe care se află elementul minim din matrice&lt;br /&gt;
* &amp;lt;code&amp;gt;col_max&amp;lt;/code&amp;gt;, care determină indicele coloanei pe care se află elementul maxim din matrice&lt;br /&gt;
* &amp;lt;code&amp;gt;interschimbare&amp;lt;/code&amp;gt;, care interschimbă în matricea dată elementele de pe două coloane date&lt;br /&gt;
&lt;br /&gt;
= Date de intrare =&lt;br /&gt;
Programul citește de la tastatură numerele &amp;lt;code&amp;gt;n m&amp;lt;/code&amp;gt;, iar apoi cele &amp;lt;code&amp;gt;n • m&amp;lt;/code&amp;gt; elemente ale matricii.&lt;br /&gt;
&lt;br /&gt;
= Date de ieșire =&lt;br /&gt;
Programul va afișa pe ecran elementele matricii rezultate.&lt;br /&gt;
&lt;br /&gt;
= Restricții și precizări =&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;2 ≤ n,m ≤ 50&amp;lt;/code&amp;gt;&lt;br /&gt;
* indexarea liniilor și a coloanelor se face începând de la 1&lt;br /&gt;
* elementele tabloului aparțin intervalului &amp;lt;code&amp;gt;[0,10000]&amp;lt;/code&amp;gt;&lt;br /&gt;
* dacă atât elementul minim cât și cel maxim se află pe aceeași coloană, atunci matricea se va afișa nemodificată.&lt;br /&gt;
&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
Input:&lt;br /&gt;
&lt;br /&gt;
4 3&lt;br /&gt;
&lt;br /&gt;
7 5 19&lt;br /&gt;
&lt;br /&gt;
3 8 4&lt;br /&gt;
&lt;br /&gt;
23 6 1&lt;br /&gt;
&lt;br /&gt;
10 2 9&lt;br /&gt;
&lt;br /&gt;
Output:&lt;br /&gt;
&lt;br /&gt;
19 5 7&lt;br /&gt;
&lt;br /&gt;
4 8 3&lt;br /&gt;
&lt;br /&gt;
1 6 23&lt;br /&gt;
&lt;br /&gt;
9 2 10&lt;br /&gt;
&lt;br /&gt;
Explicație:&lt;br /&gt;
&lt;br /&gt;
Elementul minim (1) se află pe coloana 3, iar elementul maxim (23) se află pe prima coloană. Prin urmare, se interschimbă coloana 1 cu coloana 3.&lt;br /&gt;
&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
Input:&lt;br /&gt;
&lt;br /&gt;
51 3&lt;br /&gt;
&lt;br /&gt;
Output:&lt;br /&gt;
&lt;br /&gt;
Numărul de linii și coloane trebuie să fie în intervalul [2, 50].&lt;br /&gt;
&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python3&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
def verifica_restrictii(n, m, matrice):&lt;br /&gt;
    if not (2 &amp;lt;= n &amp;lt;= 50) or not (2 &amp;lt;= m &amp;lt;= 50):&lt;br /&gt;
        print(&amp;quot;Numărul de linii și coloane trebuie să fie în intervalul [2, 50].&amp;quot;)&lt;br /&gt;
        return False&lt;br /&gt;
&lt;br /&gt;
    for i in range(n):&lt;br /&gt;
        for j in range(m):&lt;br /&gt;
            if not (0 &amp;lt;= matrice[i][j] &amp;lt;= 10000):&lt;br /&gt;
                print(&amp;quot;Elementele matricei trebuie să fie în intervalul [0, 10000].&amp;quot;)&lt;br /&gt;
                return False&lt;br /&gt;
&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
def citire():&lt;br /&gt;
    n = int(input(&amp;quot;Introduceti numarul de linii (2 &amp;lt;= n &amp;lt;= 50): &amp;quot;))&lt;br /&gt;
    m = int(input(&amp;quot;Introduceti numarul de coloane (2 &amp;lt;= m &amp;lt;= 50): &amp;quot;))&lt;br /&gt;
    &lt;br /&gt;
    matrice = []&lt;br /&gt;
    for i in range(n):&lt;br /&gt;
        linie = []&lt;br /&gt;
        for j in range(m):&lt;br /&gt;
            element = int(input(f&amp;quot;Introduceti elementul de pe pozitia [{i+1}, {j+1}]: &amp;quot;))&lt;br /&gt;
            linie.append(element)&lt;br /&gt;
        matrice.append(linie)&lt;br /&gt;
&lt;br /&gt;
    return n, m, matrice&lt;br /&gt;
&lt;br /&gt;
def afisare(matrice):&lt;br /&gt;
    for linie in matrice:&lt;br /&gt;
        for elem in linie:&lt;br /&gt;
            print(elem, end=&amp;quot; &amp;quot;)&lt;br /&gt;
        print()&lt;br /&gt;
&lt;br /&gt;
def col_min(matrice):&lt;br /&gt;
    min_val = float(&#039;inf&#039;)&lt;br /&gt;
    col_index = 0&lt;br /&gt;
    for j in range(len(matrice[0])):&lt;br /&gt;
        coloana = [matrice[i][j] for i in range(len(matrice))]&lt;br /&gt;
        if min(coloana) &amp;lt; min_val:&lt;br /&gt;
            min_val = min(coloana)&lt;br /&gt;
            col_index = j&lt;br /&gt;
    return col_index&lt;br /&gt;
&lt;br /&gt;
def col_max(matrice):&lt;br /&gt;
    max_val = float(&#039;-inf&#039;)&lt;br /&gt;
    col_index = 0&lt;br /&gt;
    for j in range(len(matrice[0])):&lt;br /&gt;
        coloana = [matrice[i][j] for i in range(len(matrice))]&lt;br /&gt;
        if max(coloana) &amp;gt; max_val:&lt;br /&gt;
            max_val = max(coloana)&lt;br /&gt;
            col_index = j&lt;br /&gt;
    return col_index&lt;br /&gt;
&lt;br /&gt;
def interschimbare(matrice, col1, col2):&lt;br /&gt;
    for i in range(len(matrice)):&lt;br /&gt;
        matrice[i][col1], matrice[i][col2] = matrice[i][col2], matrice[i][col1]&lt;br /&gt;
&lt;br /&gt;
# Citirea datelor de intrare&lt;br /&gt;
n, m, matrice = citire()&lt;br /&gt;
if not verifica_restrictii(n, m, matrice):&lt;br /&gt;
    exit()&lt;br /&gt;
&lt;br /&gt;
# Determinarea coloanelor pentru interschimbare&lt;br /&gt;
col_min_index = col_min(matrice)&lt;br /&gt;
col_max_index = col_max(matrice)&lt;br /&gt;
&lt;br /&gt;
# Verificare dacă trebuie să se facă interschimbare&lt;br /&gt;
if col_min_index != col_max_index:&lt;br /&gt;
    # Efectuarea interschimbarii&lt;br /&gt;
    interschimbare(matrice, col_min_index, col_max_index)&lt;br /&gt;
&lt;br /&gt;
# Afisarea rezultatului&lt;br /&gt;
afisare(matrice)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Miawinator</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=4252_-_Matrice_11&amp;diff=7763</id>
		<title>4252 - Matrice 11</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=4252_-_Matrice_11&amp;diff=7763"/>
		<updated>2023-12-11T06:24:54Z</updated>

		<summary type="html">&lt;p&gt;Miawinator: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Cerința =&lt;br /&gt;
Scrieți un program care citește de la tastatură două numere naturale din intervalul &amp;lt;code&amp;gt;[2,50]&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; și &amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt;, și elementele unei matrici cu &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; linii și &amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt; coloane, numere naturale distincte din intervalul &amp;lt;code&amp;gt;[0,10000]&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Programul interschimbă elementele de pe linia pe care se află valoarea minimă cu elementele de pe linia pe care se află valoarea maximă din matrice, apoi afișează pe ecran matricea modificată, câte o linie a matricii pe câte o linie a ecranului, elementele fiecărei linii fiind separate prin câte un spațiu.&lt;br /&gt;
&lt;br /&gt;
Se vor defini și apela următoarele subprograme:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;citire&amp;lt;/code&amp;gt;, care citește de la tastatură valorile lui &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; și &amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt; și apoi elementele matricei&lt;br /&gt;
* &amp;lt;code&amp;gt;afisare&amp;lt;/code&amp;gt;, care afișează pe ecran elementele matricei conform cerinței&lt;br /&gt;
* &amp;lt;code&amp;gt;lin_min&amp;lt;/code&amp;gt;, care determină indicele liniei pe care se află elementul minim din matrice&lt;br /&gt;
* &amp;lt;code&amp;gt;lin_max&amp;lt;/code&amp;gt;, care determină indicele liniei pe care se află elementul maxim din matrice&lt;br /&gt;
* &amp;lt;code&amp;gt;interschimbare&amp;lt;/code&amp;gt;, care interschimbă în matricea dată elementele de pe două linii date&lt;br /&gt;
&lt;br /&gt;
În programele C/C++ nu se vor folosi variabile globale.&lt;br /&gt;
&lt;br /&gt;
= Date de intrare =&lt;br /&gt;
Programul citește de la tastatură numerele &amp;lt;code&amp;gt;n m&amp;lt;/code&amp;gt;, iar apoi cele &amp;lt;code&amp;gt;n • m&amp;lt;/code&amp;gt; elemente ale matricii.&lt;br /&gt;
&lt;br /&gt;
= Date de ieșire =&lt;br /&gt;
Programul va afișa pe ecran elementele matricii rezultate.&lt;br /&gt;
&lt;br /&gt;
= Restricții și precizări =&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;2 ≤ n,m ≤ 50&amp;lt;/code&amp;gt;&lt;br /&gt;
* indexarea liniilor și a coloanelor se face începând de la 1&lt;br /&gt;
* elementele tabloului aparțin intervalului &amp;lt;code&amp;gt;[0,10000]&amp;lt;/code&amp;gt;&lt;br /&gt;
* dacă atât elementul minim cât și cel maxim se află pe aceeași linie, atunci matricea se va afișa nemodificată.&lt;br /&gt;
&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
Input:&lt;br /&gt;
&lt;br /&gt;
4 3&lt;br /&gt;
&lt;br /&gt;
7 5 39&lt;br /&gt;
&lt;br /&gt;
3 8 4&lt;br /&gt;
&lt;br /&gt;
23 6 1&lt;br /&gt;
&lt;br /&gt;
10 2 9&lt;br /&gt;
&lt;br /&gt;
Output:&lt;br /&gt;
&lt;br /&gt;
23 6 1 &lt;br /&gt;
&lt;br /&gt;
3 8 4 &lt;br /&gt;
&lt;br /&gt;
7 5 39 &lt;br /&gt;
&lt;br /&gt;
10 2 9&lt;br /&gt;
&lt;br /&gt;
Explicație:&lt;br /&gt;
&lt;br /&gt;
Elementul minim (1) se află pe linia 3, iar elementul maxim (39) se află pe prima linie. Prin urmare, se interschimbă linia 1 cu linia 3.&lt;br /&gt;
&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
2 2&lt;br /&gt;
&lt;br /&gt;
100001 232&lt;br /&gt;
&lt;br /&gt;
32 0&lt;br /&gt;
&lt;br /&gt;
Output:&lt;br /&gt;
&lt;br /&gt;
Input-ul nu respectă restricțiile.&lt;br /&gt;
&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python3&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
def verifica_restrictii(n, m, matrice):&lt;br /&gt;
    if not (2 &amp;lt;= n &amp;lt;= 50) or not (2 &amp;lt;= m &amp;lt;= 50):&lt;br /&gt;
        return False&lt;br /&gt;
&lt;br /&gt;
    if len(matrice) != n:&lt;br /&gt;
        return False&lt;br /&gt;
&lt;br /&gt;
    for linie in matrice:&lt;br /&gt;
        if len(linie) != m:&lt;br /&gt;
            return False&lt;br /&gt;
&lt;br /&gt;
        for element in linie:&lt;br /&gt;
            if not (0 &amp;lt;= element &amp;lt;= 10000):&lt;br /&gt;
                return False&lt;br /&gt;
&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
def citire():&lt;br /&gt;
    n = int(input(&amp;quot;Introduceți numărul de linii (n): &amp;quot;))&lt;br /&gt;
    m = int(input(&amp;quot;Introduceți numărul de coloane (m): &amp;quot;))&lt;br /&gt;
&lt;br /&gt;
    matrice = []&lt;br /&gt;
    for i in range(n):&lt;br /&gt;
        linie = list(map(int, input(f&amp;quot;Introduceți elementele pentru linia {i + 1}: &amp;quot;).split()))&lt;br /&gt;
        matrice.append(linie)&lt;br /&gt;
&lt;br /&gt;
    return n, m, matrice&lt;br /&gt;
&lt;br /&gt;
def afisare(matrice):&lt;br /&gt;
    for linie in matrice:&lt;br /&gt;
        print(*linie)&lt;br /&gt;
&lt;br /&gt;
def lin_min(matrice):&lt;br /&gt;
    min_val = float(&#039;inf&#039;)&lt;br /&gt;
    index_linie = 0&lt;br /&gt;
&lt;br /&gt;
    for i, linie in enumerate(matrice):&lt;br /&gt;
        if min(linie) &amp;lt; min_val:&lt;br /&gt;
            min_val = min(linie)&lt;br /&gt;
            index_linie = i + 1&lt;br /&gt;
&lt;br /&gt;
    return index_linie&lt;br /&gt;
&lt;br /&gt;
def lin_max(matrice):&lt;br /&gt;
    max_val = 0&lt;br /&gt;
    index_linie = 0&lt;br /&gt;
&lt;br /&gt;
    for i, linie in enumerate(matrice):&lt;br /&gt;
        if max(linie) &amp;gt; max_val:&lt;br /&gt;
            max_val = max(linie)&lt;br /&gt;
            index_linie = i + 1&lt;br /&gt;
&lt;br /&gt;
    return index_linie&lt;br /&gt;
&lt;br /&gt;
def interschimbare(matrice, linie1, linie2):&lt;br /&gt;
    matrice[linie1 - 1], matrice[linie2 - 1] = matrice[linie2 - 1], matrice[linie1 - 1]&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
    n, m, matrice = citire()&lt;br /&gt;
&lt;br /&gt;
    if not verifica_restrictii(n, m, matrice):&lt;br /&gt;
        print(&amp;quot;Input-ul nu respectă restricțiile.&amp;quot;)&lt;br /&gt;
        return&lt;br /&gt;
&lt;br /&gt;
    linie_min = lin_min(matrice)&lt;br /&gt;
    linie_max = lin_max(matrice)&lt;br /&gt;
&lt;br /&gt;
    if linie_min != linie_max:&lt;br /&gt;
        interschimbare(matrice, linie_min, linie_max)&lt;br /&gt;
&lt;br /&gt;
    print(&amp;quot;Matricea modificată:&amp;quot;)&lt;br /&gt;
    afisare(matrice)&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>Miawinator</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=4250_-_Inlocuire_10&amp;diff=7762</id>
		<title>4250 - Inlocuire 10</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=4250_-_Inlocuire_10&amp;diff=7762"/>
		<updated>2023-12-11T06:23:53Z</updated>

		<summary type="html">&lt;p&gt;Miawinator: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Cerința =&lt;br /&gt;
Se dă un tablou cu &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; elemente, numere naturale mai mari decât &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;. Să se înlocuiască fiecare element din tablou cu produsul dintre suma divizorilor săi și numărul său de divizori și apoi să afișeze elementele din tabloului de la dreapta la stânga.&lt;br /&gt;
&lt;br /&gt;
Se vor defini și apela următoarele subprograme:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;citire&amp;lt;/code&amp;gt;, care citește de la tastatură valoarea lui &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; și cele &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; elemente ale tabloului&lt;br /&gt;
* &amp;lt;code&amp;gt;afisare&amp;lt;/code&amp;gt;, care afișează pe ecran elementele tabloului printr-o parcurgere de la dreapta la stânga, separate prin exact un spațiu&lt;br /&gt;
* &amp;lt;code&amp;gt;suma_div&amp;lt;/code&amp;gt;, care determină suma divizorilor unui unui număr dat&lt;br /&gt;
* &amp;lt;code&amp;gt;nr_div&amp;lt;/code&amp;gt;, care determină numărul divizorilor unui unui număr dat&lt;br /&gt;
&lt;br /&gt;
În programele C/C++ nu se vor folosi variabile globale.&lt;br /&gt;
&lt;br /&gt;
= Date de intrare =&lt;br /&gt;
Se citește de la tastatură numărul &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;, iar apoi cele &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; elemente ale tabloului.&lt;br /&gt;
&lt;br /&gt;
= Date de ieșire =&lt;br /&gt;
Se vor afișa pe ecran elementele tabloului după modificarea cerută, separate prin exact un spațiu.&lt;br /&gt;
&lt;br /&gt;
= Restricții și precizări =&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;1 ≤ n ≤ 1000&amp;lt;/code&amp;gt;&lt;br /&gt;
* elementele tabloului vor fi mai mici decât &amp;lt;code&amp;gt;10.000&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
Input:&lt;br /&gt;
&lt;br /&gt;
7&lt;br /&gt;
&lt;br /&gt;
7 18 18 5 14 20 4&lt;br /&gt;
&lt;br /&gt;
Output:&lt;br /&gt;
&lt;br /&gt;
[21, 252, 96, 12, 234, 234, 16]&lt;br /&gt;
&lt;br /&gt;
Explicație:&lt;br /&gt;
&lt;br /&gt;
Modificările efectuate sunt:&lt;br /&gt;
&lt;br /&gt;
7 se înlocuiește cu 16 deoarece are suma divizorilor egala cu 8 și are 2 divizori (8*2=16).&lt;br /&gt;
&lt;br /&gt;
18 se înlocuiește cu 234 deoarece are suma divizorilor egala cu 39 și are 6 divizori (39*6=234).&lt;br /&gt;
&lt;br /&gt;
…&lt;br /&gt;
&lt;br /&gt;
4 se înlocuiește 21 deoarece are suma divizorilor egala cu 7 și are 3 divizori (7*3=21).&lt;br /&gt;
&lt;br /&gt;
La final, elementele sunt afișate de la dreapta la stânga.&lt;br /&gt;
&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
Input:&lt;br /&gt;
&lt;br /&gt;
0&lt;br /&gt;
&lt;br /&gt;
7 18 18 5 14 20 4&lt;br /&gt;
&lt;br /&gt;
Output:&lt;br /&gt;
&lt;br /&gt;
Restricții neîndeplinite pentru n. Introduceți un număr între 1 și 1000.&lt;br /&gt;
&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python3&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
def validate_input_restrictions(n, tablou):&lt;br /&gt;
    if not 1 &amp;lt;= n &amp;lt;= 1000:&lt;br /&gt;
        print(&amp;quot;Restricții neîndeplinite pentru n. Introduceți un număr între 1 și 1000.&amp;quot;)&lt;br /&gt;
        return False   &lt;br /&gt;
    if any(x &amp;lt;= 1 or x &amp;gt;= 10000 for x in tablou):&lt;br /&gt;
        print(&amp;quot;Elementele tabloului trebuie să fie mai mari decât 1 și mai mici decât 1.000.000.000.&amp;quot;)&lt;br /&gt;
        return False&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
def citire():&lt;br /&gt;
    n = int(input(&amp;quot;Introduceți numărul n=&amp;quot;))&lt;br /&gt;
    print(&amp;quot;Introduceți elemente vector&amp;quot;)&lt;br /&gt;
    vector = list(map(int, input().split()))&lt;br /&gt;
    return n,vector&lt;br /&gt;
&lt;br /&gt;
def afisare(vector):&lt;br /&gt;
    print(vector[::-1])&lt;br /&gt;
&lt;br /&gt;
def suma_div(x):&lt;br /&gt;
    suma=x+1&lt;br /&gt;
    div = 2&lt;br /&gt;
    while div &amp;lt;= x/2:&lt;br /&gt;
        if x%div == 0:&lt;br /&gt;
            suma+=div&lt;br /&gt;
        div+=1&lt;br /&gt;
    return suma&lt;br /&gt;
&lt;br /&gt;
def nr_div(x):&lt;br /&gt;
    nr=2&lt;br /&gt;
    div = 2&lt;br /&gt;
    while div &amp;lt;= x/2:&lt;br /&gt;
        if x%div == 0:&lt;br /&gt;
            nr+=1&lt;br /&gt;
        div+=1&lt;br /&gt;
    return nr&lt;br /&gt;
&lt;br /&gt;
def inloc(vector):&lt;br /&gt;
    for i in range(len(vector)):&lt;br /&gt;
        aux=suma_div(vector[i])*nr_div(vector[i])&lt;br /&gt;
        vector[i]=aux&lt;br /&gt;
    return vector&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
    n, tablou = citire()&lt;br /&gt;
    if not validate_input_restrictions(n, tablou):&lt;br /&gt;
        return&lt;br /&gt;
    tablou=inloc(tablou)&lt;br /&gt;
    afisare(tablou)&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    main()&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Miawinator</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=4249_-_Inlocuire_Cmmdc_Oglindit&amp;diff=7761</id>
		<title>4249 - Inlocuire Cmmdc Oglindit</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=4249_-_Inlocuire_Cmmdc_Oglindit&amp;diff=7761"/>
		<updated>2023-12-11T06:20:28Z</updated>

		<summary type="html">&lt;p&gt;Miawinator: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Cerința =&lt;br /&gt;
Se dă un tablou cu &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; elemente, numere naturale mai mari decât &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;. Să se înlocuiască fiecare element din tablou cu cel mai care divizor comun al său cu oglinditul său și apoi să afișeze elementele din tabloului de la dreapta la stânga.&lt;br /&gt;
&lt;br /&gt;
Se vor defini și apela următoarele subprograme:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;citire&amp;lt;/code&amp;gt;, care citește de la tastatură valoarea lui &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; și cele &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; elemente ale tabloului&lt;br /&gt;
* &amp;lt;code&amp;gt;afisare&amp;lt;/code&amp;gt;, care afișează pe ecran elementele tabloului printr-o parcurgere de la dreapta la stânga, separate prin exact un spațiu&lt;br /&gt;
* &amp;lt;code&amp;gt;oglindit&amp;lt;/code&amp;gt;, care determină oglinditul unui număr dat&lt;br /&gt;
* &amp;lt;code&amp;gt;cmmdc&amp;lt;/code&amp;gt;, care calculează cel mai care divizor comun a două numere date&lt;br /&gt;
&lt;br /&gt;
= Date de intrare =&lt;br /&gt;
Se citește de la tastatură numărul &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;, iar apoi cele &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; elemente ale tabloului.&lt;br /&gt;
&lt;br /&gt;
= Date de ieșire =&lt;br /&gt;
Se vor afișa pe ecran elementele tabloului după modificarea cerută, separate prin exact un spațiu.&lt;br /&gt;
&lt;br /&gt;
= Restricții și precizări =&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;1 ≤ n ≤ 1000&amp;lt;/code&amp;gt;&lt;br /&gt;
* elementele tabloului vor fi mai mici decât &amp;lt;code&amp;gt;1.000.000.000&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
Input:&lt;br /&gt;
&lt;br /&gt;
7&lt;br /&gt;
&lt;br /&gt;
7 18 18 5 14 20 4&lt;br /&gt;
&lt;br /&gt;
Output:&lt;br /&gt;
&lt;br /&gt;
[4, 2, 1, 5, 9, 9, 7]&lt;br /&gt;
&lt;br /&gt;
Explicație:&lt;br /&gt;
&lt;br /&gt;
Modificările efectuate sunt:&lt;br /&gt;
&lt;br /&gt;
7 se înlocuiește cu 7 deoarece cmmdc(7,7) este 7.&lt;br /&gt;
&lt;br /&gt;
18 se înlocuiește cu 9 deoarece cmmdc(18,81) este 9.&lt;br /&gt;
&lt;br /&gt;
18 se înlocuiește cu 9 deoarece cmmdc(18,81) este 9.&lt;br /&gt;
&lt;br /&gt;
14 se înlocuiește cu 1 deoarece cmmdc(14,41) este 1.&lt;br /&gt;
&lt;br /&gt;
20 se înlocuiește cu 2 deoarece cmmdc(20,2) este 2.&lt;br /&gt;
&lt;br /&gt;
4 se înlocuiește cu 4 deoarece cmmdc(4,4) este 4.&lt;br /&gt;
&lt;br /&gt;
La final, elementele sunt afișate de la dreapta la stânga.&lt;br /&gt;
&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
Input:&lt;br /&gt;
&lt;br /&gt;
0&lt;br /&gt;
&lt;br /&gt;
7 18 18 5 14 20 4&lt;br /&gt;
&lt;br /&gt;
Output:&lt;br /&gt;
&lt;br /&gt;
Restricții neîndeplinite pentru n. Introduceți un număr între 1 și 1000.&lt;br /&gt;
&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python3&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
def validate_input_restrictions(n, tablou):&lt;br /&gt;
    if not 1 &amp;lt;= n &amp;lt;= 1000:&lt;br /&gt;
        print(&amp;quot;Restricții neîndeplinite pentru n. Introduceți un număr între 1 și 1000.&amp;quot;)&lt;br /&gt;
        return False   &lt;br /&gt;
    if any(x &amp;lt;= 1 or x &amp;gt;= 1000000000 for x in tablou):&lt;br /&gt;
        print(&amp;quot;Elementele tabloului trebuie să fie mai mari decât 1 și mai mici decât 1.000.000.000.&amp;quot;)&lt;br /&gt;
        return False&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
def citire():&lt;br /&gt;
    n = int(input(&amp;quot;Introduceți numărul n=&amp;quot;))&lt;br /&gt;
    print(&amp;quot;Introduceți elemente vector&amp;quot;)&lt;br /&gt;
    vector = list(map(int, input().split()))&lt;br /&gt;
    return n,vector&lt;br /&gt;
&lt;br /&gt;
def afisare(vector):&lt;br /&gt;
    print(vector[::-1])&lt;br /&gt;
&lt;br /&gt;
def oglindit(x):&lt;br /&gt;
    aux=0&lt;br /&gt;
    while x!=0:&lt;br /&gt;
        aux = aux*10 + x % 10&lt;br /&gt;
        x//=10&lt;br /&gt;
    return aux&lt;br /&gt;
&lt;br /&gt;
def cmmdc(x):&lt;br /&gt;
    a=oglindit(x)&lt;br /&gt;
    while x != a:&lt;br /&gt;
        if x&amp;gt;a:&lt;br /&gt;
            x-=a&lt;br /&gt;
        else:&lt;br /&gt;
            a-=x&lt;br /&gt;
    return x&lt;br /&gt;
&lt;br /&gt;
def inloc(vector):&lt;br /&gt;
    for i in range(len(vector)):&lt;br /&gt;
        aux=cmmdc(vector[i])&lt;br /&gt;
        vector[i]=aux&lt;br /&gt;
    return vector&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
    n, tablou = citire()&lt;br /&gt;
    if not validate_input_restrictions(n, tablou):&lt;br /&gt;
        return&lt;br /&gt;
    tablou=inloc(tablou)&lt;br /&gt;
    afisare(tablou)&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    main()&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Miawinator</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=4256_-_Oglindire_Secvente&amp;diff=7760</id>
		<title>4256 - Oglindire Secvente</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=4256_-_Oglindire_Secvente&amp;diff=7760"/>
		<updated>2023-12-11T06:19:47Z</updated>

		<summary type="html">&lt;p&gt;Miawinator: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Cerința =&lt;br /&gt;
Se dă un vector cu &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; elemente, numere naturale, și un număr &amp;lt;code&amp;gt;k&amp;lt;/code&amp;gt;, divizor al lui &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;. Se împarte vectorul in secvențe disjuncte de lungime &amp;lt;code&amp;gt;k&amp;lt;/code&amp;gt;. Să se oglindească elementele (primul element din secvență se interschimbă cu ultimul, al doilea cu penultimul, etc.) din fiecare dintre cele &amp;lt;code&amp;gt;n/k&amp;lt;/code&amp;gt; secvențe și să se afișeze pe ecran vectorul rezultat în urma acestor modificări.&lt;br /&gt;
&lt;br /&gt;
Se vor defini și apela următoarele subprograme:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;citire&amp;lt;/code&amp;gt;, care citește de la tastatură valoarea lui &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;, a lui &amp;lt;code&amp;gt;k&amp;lt;/code&amp;gt; și cele &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; elemente ale tabloului&lt;br /&gt;
* &amp;lt;code&amp;gt;afisare&amp;lt;/code&amp;gt;, care afișează pe ecran elementele tabloului, separate prin exact un spațiu&lt;br /&gt;
* &amp;lt;code&amp;gt;oglindire&amp;lt;/code&amp;gt;, care oglindește elementele unei secvențe dinr-un vector precizate prin cele două extremități &amp;lt;code&amp;gt;st&amp;lt;/code&amp;gt; și &amp;lt;code&amp;gt;dr&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
În programele C/C++ nu se vor folosi variabile globale.&lt;br /&gt;
&lt;br /&gt;
= Date de intrare =&lt;br /&gt;
Programul citește de la tastatură numerele &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; și &amp;lt;code&amp;gt;k&amp;lt;/code&amp;gt;, iar apoi &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; numere naturale, reprezentând elementele vectorului.&lt;br /&gt;
&lt;br /&gt;
= Date de ieșire =&lt;br /&gt;
Se vor afișa pe ecran elementele tabloului după modificarea cerută, separate prin exact un spațiu.&lt;br /&gt;
&lt;br /&gt;
= Restricții și precizări =&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;1 ≤ k &amp;lt; n ≤ 1000&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;k&amp;lt;/code&amp;gt; este divizor al lui &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;&lt;br /&gt;
* cele &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; numere citite vor fi mai mici decât &amp;lt;code&amp;gt;1000&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
Input:&lt;br /&gt;
&lt;br /&gt;
15 5&lt;br /&gt;
&lt;br /&gt;
3 6 4 7 6 6 6 4 6 7 6 6 4 4 5 &lt;br /&gt;
&lt;br /&gt;
Output:&lt;br /&gt;
&lt;br /&gt;
6 7 4 6 3 7 6 4 6 6 5 4 4 6 6  &lt;br /&gt;
&lt;br /&gt;
Explicație:  &lt;br /&gt;
&lt;br /&gt;
Vectorul se împarte în &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt; secvențe de lungime &amp;lt;code&amp;gt;5&amp;lt;/code&amp;gt;: &amp;lt;code&amp;gt;(3 6 4 7 6)&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;(6 6 4 6 7)&amp;lt;/code&amp;gt;și &amp;lt;code&amp;gt;(6 6 4 4 5)&amp;lt;/code&amp;gt;. Elementele din fiecare dintre ele se oglindesc și se obține secvențele &amp;lt;code&amp;gt;(6 7 4 6 3)&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;(7 6 4 6 6)&amp;lt;/code&amp;gt; și &amp;lt;code&amp;gt;(5 4 4 6 6)&amp;lt;/code&amp;gt;.  &lt;br /&gt;
&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
Input:&lt;br /&gt;
&lt;br /&gt;
15 76&lt;br /&gt;
&lt;br /&gt;
3 6 4 7 6 6 6 4 6 7 6 6 4 4 5 &lt;br /&gt;
&lt;br /&gt;
Output:&lt;br /&gt;
&lt;br /&gt;
Restricții neîndeplinite.&lt;br /&gt;
&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python3&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
def validate_input(n, k, vector):&lt;br /&gt;
    if not (1 &amp;lt; k &amp;lt; n &amp;lt;= 1000) or any(x &amp;gt;= 1000 for x in vector):&lt;br /&gt;
        print(&amp;quot;Restricții neîndeplinite.&amp;quot;)&lt;br /&gt;
        return False&lt;br /&gt;
    if n % k != 0:&lt;br /&gt;
        print(&amp;quot;k trebuie să fie divizor al lui n.&amp;quot;)&lt;br /&gt;
        return False&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
def citire():&lt;br /&gt;
    n = int(input(&amp;quot;Introduceți n: &amp;quot;))&lt;br /&gt;
    k = int(input(&amp;quot;Introduceți k: &amp;quot;))&lt;br /&gt;
    &lt;br /&gt;
    # Read the entire line, split it into a list of strings, and convert each string to an integer&lt;br /&gt;
    vector = list(map(int, input().split()))&lt;br /&gt;
&lt;br /&gt;
    return n, k, vector&lt;br /&gt;
&lt;br /&gt;
def afisare(vector):&lt;br /&gt;
    print(&amp;quot; &amp;quot;.join(map(str, vector)))&lt;br /&gt;
&lt;br /&gt;
def oglindire(st, dr, vector):&lt;br /&gt;
    while st &amp;lt; dr:&lt;br /&gt;
        vector[st], vector[dr] = vector[dr], vector[st]&lt;br /&gt;
        st += 1&lt;br /&gt;
        dr -= 1&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
    n, k, vector = citire()&lt;br /&gt;
&lt;br /&gt;
    # Verificare validitate input&lt;br /&gt;
    if not validate_input(n, k, vector):&lt;br /&gt;
        return&lt;br /&gt;
&lt;br /&gt;
    # Afisare vector initial&lt;br /&gt;
    print(&amp;quot;Vectorul initial:&amp;quot;)&lt;br /&gt;
    afisare(vector)&lt;br /&gt;
&lt;br /&gt;
    # Oglindire si afisare vector modificat&lt;br /&gt;
    for i in range(0, n, k):&lt;br /&gt;
        st = i&lt;br /&gt;
        dr = min(i + k - 1, n - 1)&lt;br /&gt;
        oglindire(st, dr, vector)&lt;br /&gt;
&lt;br /&gt;
    print(&amp;quot;Vectorul dupa oglindire:&amp;quot;)&lt;br /&gt;
    afisare(vector)&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>Miawinator</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=4255_-_Rotire_Secvente&amp;diff=7759</id>
		<title>4255 - Rotire Secvente</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=4255_-_Rotire_Secvente&amp;diff=7759"/>
		<updated>2023-12-11T06:18:15Z</updated>

		<summary type="html">&lt;p&gt;Miawinator: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Cerința =&lt;br /&gt;
Se dă un vector cu &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; elemente, numere naturale, și un număr &amp;lt;code&amp;gt;k&amp;lt;/code&amp;gt;, divizor al lui &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;. Se împarte vectorul în &amp;lt;code&amp;gt;k&amp;lt;/code&amp;gt; secvențe disjuncte, numerotate de la &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; la &amp;lt;code&amp;gt;k&amp;lt;/code&amp;gt;. Să se permute circular cu o poziție spre stânga elementele din fiecare dintre cele &amp;lt;code&amp;gt;k&amp;lt;/code&amp;gt; secvențe și să se afișeze pe ecran vectorul rezultat în urma acestor modificări.&lt;br /&gt;
&lt;br /&gt;
Se vor defini și apela următoarele subprograme:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;citire&amp;lt;/code&amp;gt;, care citește de la tastatură valoarea lui &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;, a lui &amp;lt;code&amp;gt;k&amp;lt;/code&amp;gt; și cele &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; elemente ale tabloului&lt;br /&gt;
* &amp;lt;code&amp;gt;afisare&amp;lt;/code&amp;gt;, care afișează pe ecran elementele tabloului, separate prin exact un spațiu&lt;br /&gt;
* &amp;lt;code&amp;gt;permutare&amp;lt;/code&amp;gt;, care permută circular cu o poziție spre stânga elementele unei secvențe din tablou precizata prin cele două extremități &amp;lt;code&amp;gt;st&amp;lt;/code&amp;gt; și &amp;lt;code&amp;gt;dr&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
În programele C/C++ nu se vor folosi variabile globale.&lt;br /&gt;
&lt;br /&gt;
= Date de intrare =&lt;br /&gt;
Programul citește de la tastatură numerele &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; și &amp;lt;code&amp;gt;k&amp;lt;/code&amp;gt;, iar apoi &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; numere naturale, reprezentând elementele vectorului.&lt;br /&gt;
&lt;br /&gt;
= Date de ieșire =&lt;br /&gt;
Se vor afișa pe ecran elementele tabloului după modificarea cerută, separate prin exact un spațiu.&lt;br /&gt;
&lt;br /&gt;
= Restricții și precizări =&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;1 ≤ k &amp;lt; n ≤ 1000&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;k&amp;lt;/code&amp;gt; este divizor al lui &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;&lt;br /&gt;
* cele &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; numere citite vor fi mai mici decât &amp;lt;code&amp;gt;1000&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
Input:&lt;br /&gt;
&lt;br /&gt;
15 5&lt;br /&gt;
&lt;br /&gt;
3 6 4 7 6 6 6 4 6 7 6 6 4 4 5&lt;br /&gt;
&lt;br /&gt;
Output:&lt;br /&gt;
&lt;br /&gt;
6 4 3 6 6 7 4 6 6 6 6 7 4 5 4&lt;br /&gt;
&lt;br /&gt;
Explicație:&lt;br /&gt;
&lt;br /&gt;
Vectorul se împarte în &amp;lt;code&amp;gt;5&amp;lt;/code&amp;gt; secvențe: &amp;lt;code&amp;gt;(3 6 4)&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;(7 6 6)&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;(6 4 6)&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;(7 6 6)&amp;lt;/code&amp;gt; și &amp;lt;code&amp;gt;(4 4 5)&amp;lt;/code&amp;gt;. Elementele din fiecare dintre ele se permută circular cu o poziție spre stânga și se obține secvențele &amp;lt;code&amp;gt;(6 4 3)&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;(6 6 7)&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;(4 6 6)&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;(6 6 7)&amp;lt;/code&amp;gt; și &amp;lt;code&amp;gt;(4 5 4)&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
Input:&lt;br /&gt;
&lt;br /&gt;
15 76&lt;br /&gt;
&lt;br /&gt;
3 6 4 7 6 6 6 4 6 7 6 6 4 4 5&lt;br /&gt;
&lt;br /&gt;
Output:&lt;br /&gt;
&lt;br /&gt;
Restricții neîndeplinite.&lt;br /&gt;
&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python3&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
def validate_input(n, k, vector):&lt;br /&gt;
    if not (1 &amp;lt; k &amp;lt; n &amp;lt;= 1000) or any(x &amp;gt;= 1000 for x in vector):&lt;br /&gt;
        print(&amp;quot;Restricții neîndeplinite.&amp;quot;)&lt;br /&gt;
        return False&lt;br /&gt;
    if n % k != 0:&lt;br /&gt;
        print(&amp;quot;k trebuie să fie divizor al lui n.&amp;quot;)&lt;br /&gt;
        return False&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
def citire():&lt;br /&gt;
    n = int(input(&amp;quot;Introduceți n: &amp;quot;))&lt;br /&gt;
    k = int(input(&amp;quot;Introduceți k: &amp;quot;))&lt;br /&gt;
    vector = list(map(int, input().split()))&lt;br /&gt;
    return n, k, vector&lt;br /&gt;
&lt;br /&gt;
def afisare(vector):&lt;br /&gt;
    print(&amp;quot; &amp;quot;.join(map(str, vector)))&lt;br /&gt;
&lt;br /&gt;
def permutare(st, dr, vector):&lt;br /&gt;
    lungime = dr - st + 1&lt;br /&gt;
    temp = vector[st:dr + 1]&lt;br /&gt;
    for i in range(st, dr + 1):&lt;br /&gt;
        vector[i] = temp[(i - st - 1) % lungime]&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
    n, k, vector = citire()&lt;br /&gt;
&lt;br /&gt;
    # Verificare validitate input&lt;br /&gt;
    if not validate_input(n, k, vector):&lt;br /&gt;
        return&lt;br /&gt;
&lt;br /&gt;
    # Afisare vector initial&lt;br /&gt;
    print(&amp;quot;Vectorul initial:&amp;quot;)&lt;br /&gt;
    afisare(vector)&lt;br /&gt;
&lt;br /&gt;
    # Permutare si afisare vector modificat&lt;br /&gt;
    for _ in range(k):  &lt;br /&gt;
        for i in range(1, k + 1):&lt;br /&gt;
            st = (i - 1) * (n // k)&lt;br /&gt;
            dr = i * (n // k) - 1&lt;br /&gt;
            permutare(st, dr, vector)&lt;br /&gt;
&lt;br /&gt;
    print(&amp;quot;Vectorul dupa permutari:&amp;quot;)&lt;br /&gt;
    afisare(vector)&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>Miawinator</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=2659_-_Split_Text&amp;diff=7635</id>
		<title>2659 - Split Text</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=2659_-_Split_Text&amp;diff=7635"/>
		<updated>2023-12-04T16:45:48Z</updated>

		<summary type="html">&lt;p&gt;Miawinator: Pagină nouă: == Cerința == Să se scrie funcția cu următorul antet:  SplitText(propozitie) Funcția primește ca parametri:  * un șir de caractere &amp;lt;code&amp;gt;propozitie&amp;lt;/code&amp;gt; de lungime maximă &amp;lt;code&amp;gt;200&amp;lt;/code&amp;gt;.  Șirul &amp;lt;code&amp;gt;propozitie&amp;lt;/code&amp;gt; memorează un text format din cuvinte și separatori. Cuvintele sunt formate din litere, iar restul caracterelor din text sunt separatori. Funcția va returna propoziția introdusă de la tastatură despărțită in cuvinte sau va afișa un mesaj co...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cerința ==&lt;br /&gt;
Să se scrie funcția cu următorul antet:&lt;br /&gt;
 SplitText(propozitie)&lt;br /&gt;
Funcția primește ca parametri:&lt;br /&gt;
&lt;br /&gt;
* un șir de caractere &amp;lt;code&amp;gt;propozitie&amp;lt;/code&amp;gt; de lungime maximă &amp;lt;code&amp;gt;200&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Șirul &amp;lt;code&amp;gt;propozitie&amp;lt;/code&amp;gt; memorează un text format din cuvinte și separatori. Cuvintele sunt formate din litere, iar restul caracterelor din text sunt separatori. Funcția va returna propoziția introdusă de la tastatură despărțită in cuvinte sau va afișa un mesaj corespunzător în cazul în care nu sunt respectate restricțiile impuse.&lt;br /&gt;
&lt;br /&gt;
!!!Atenție: Problema este modificată față de cea de pe PbInfo ca să corespundă limbajului de programare Python.&lt;br /&gt;
&lt;br /&gt;
= Restricții și precizări =&lt;br /&gt;
&lt;br /&gt;
* Lungimea maximă a șirului &amp;lt;code&amp;gt;propozitie&amp;lt;/code&amp;gt; este &amp;lt;code&amp;gt;200&amp;lt;/code&amp;gt;&lt;br /&gt;
* Șirul va conține cel puțin un cuvânt&lt;br /&gt;
* Numărul maxim de cuvinte din text este &amp;lt;code&amp;gt;100&amp;lt;/code&amp;gt;&lt;br /&gt;
* Cuvintele textului au lungimea maximă &amp;lt;code&amp;gt;29&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
Input:&lt;br /&gt;
&lt;br /&gt;
O suta de ani ... de Romania!&lt;br /&gt;
&lt;br /&gt;
Output consola:&lt;br /&gt;
&lt;br /&gt;
[&#039;O&#039;, &#039;suta&#039;, &#039;de&#039;, &#039;ani&#039;, &#039;de&#039;, &#039;Romania&#039;]&lt;br /&gt;
&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
Input:&lt;br /&gt;
&lt;br /&gt;
O suta de ani ... de Romaniaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa! &lt;br /&gt;
&lt;br /&gt;
Output consola:&lt;br /&gt;
&lt;br /&gt;
Propoziția nu respectă toate condițiile.&lt;br /&gt;
&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python3&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
def verifica_conditii(propozitie):&lt;br /&gt;
    # Verificăm dacă lungimea șirului este mai mică sau egală cu 200&lt;br /&gt;
    if len(propozitie) &amp;gt; 200:&lt;br /&gt;
        return False&lt;br /&gt;
    # Despartim șirul în cuvinte&lt;br /&gt;
    cuvinte = propozitie.split()&lt;br /&gt;
    # Verificăm dacă există cel puțin un cuvânt în șir&lt;br /&gt;
    if not cuvinte:&lt;br /&gt;
        return False&lt;br /&gt;
    # Verificăm numărul maxim de cuvinte în șir&lt;br /&gt;
    if len(cuvinte) &amp;gt; 100:&lt;br /&gt;
        return False&lt;br /&gt;
    # Verificăm lungimea maximă a cuvintelor&lt;br /&gt;
    if any(len(cuvant) &amp;gt; 29 for cuvant in cuvinte):&lt;br /&gt;
        return False&lt;br /&gt;
    # Dacă toate condițiile sunt îndeplinite, returnăm True&lt;br /&gt;
    return True&lt;br /&gt;
def SplitText(propozitie):&lt;br /&gt;
    # Verificăm condițiile&lt;br /&gt;
    if verifica_conditii(propozitie):&lt;br /&gt;
    # Filtram caracterele care nu sunt alfanumerice&lt;br /&gt;
        propozitie_filtrata = &#039;&#039;.join(caracter if caracter.isalnum() or caracter.isspace() else &#039; &#039; for caracter in propozitie)&lt;br /&gt;
    # Folosim metoda split() pentru a desparti propoziția filtrată în cuvinte&lt;br /&gt;
        cuvinte = propozitie_filtrata.split()&lt;br /&gt;
    # Afisăm rezultatul&lt;br /&gt;
        print(&amp;quot;Cuvintele din propoziție sunt:&amp;quot;, cuvinte)&lt;br /&gt;
    else:&lt;br /&gt;
        print(&amp;quot;Propoziția nu respectă toate condițiile.&amp;quot;)&lt;br /&gt;
SplitText(input(&amp;quot;Introduceti propozitia: &amp;quot;))&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Miawinator</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=0991_-_Matrice_5&amp;diff=7633</id>
		<title>0991 - Matrice 5</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=0991_-_Matrice_5&amp;diff=7633"/>
		<updated>2023-12-04T16:13:49Z</updated>

		<summary type="html">&lt;p&gt;Miawinator: Pagină nouă: = Cerința = Se dă o matrice pătratică cu &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; linii și &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; coloane, numerotate de la &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; la &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; și elemente numere naturale. Să se determine suma elementelor aflate strict deasupra diagonalei secundare a matricei.  Se va defini și folosi subprogramul &amp;lt;code&amp;gt;sub&amp;lt;/code&amp;gt;, cu &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt; parametri:  * &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; – dimensiunea matricei * &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; – matricea * &amp;lt;code&amp;gt;k&amp;lt;/code&amp;gt; – un număr natural, &amp;lt;code&amp;gt;1 &amp;lt; k ≤ 2*...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Cerința =&lt;br /&gt;
Se dă o matrice pătratică cu &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; linii și &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; coloane, numerotate de la &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; la &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; și elemente numere naturale. Să se determine suma elementelor aflate strict deasupra diagonalei secundare a matricei.&lt;br /&gt;
&lt;br /&gt;
Se va defini și folosi subprogramul &amp;lt;code&amp;gt;sub&amp;lt;/code&amp;gt;, cu &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt; parametri:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; – dimensiunea matricei&lt;br /&gt;
* &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; – matricea&lt;br /&gt;
* &amp;lt;code&amp;gt;k&amp;lt;/code&amp;gt; – un număr natural, &amp;lt;code&amp;gt;1 &amp;lt; k ≤ 2*n&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
care va returna suma tuturor elementelor &amp;lt;code&amp;gt;aij&amp;lt;/code&amp;gt; din matrice pentru care &amp;lt;code&amp;gt;i + j = k&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
!!!Variabila k nu va fi folosită deloc. Programul va afișa doar suma elementelor de pe diagonala secundară.&lt;br /&gt;
&lt;br /&gt;
= Date de intrare =&lt;br /&gt;
Fișierul de intrare &amp;lt;code&amp;gt;matriceIN.txt&amp;lt;/code&amp;gt; conține pe prima linie numărul &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;, iar următoarele &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; linii câte &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; numere naturale, reprezentând elementele matricei.&lt;br /&gt;
&lt;br /&gt;
= Date de ieșire =&lt;br /&gt;
Fișierul de ieșire &amp;lt;code&amp;gt;matriceOUT.txt&amp;lt;/code&amp;gt; va conține pe prima linie suma determinată. În cazul în care restricțiile nu sunt îndeplinite, se va afișa un mesaj corespunzător.&lt;br /&gt;
&lt;br /&gt;
= Restricții și precizări =&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;1 ≤ n ≤ 100&amp;lt;/code&amp;gt;&lt;br /&gt;
* elementele matricei sunt numere naturale mai mici decât &amp;lt;code&amp;gt;1000&amp;lt;/code&amp;gt;&lt;br /&gt;
* liniile matricei sunt numerotate de la &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; la &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
Input:&lt;br /&gt;
&lt;br /&gt;
4&lt;br /&gt;
&lt;br /&gt;
1 6 3 1&lt;br /&gt;
&lt;br /&gt;
6 1 3 1&lt;br /&gt;
&lt;br /&gt;
1 3 1 6&lt;br /&gt;
&lt;br /&gt;
3 1 6 1&lt;br /&gt;
&lt;br /&gt;
Output:&lt;br /&gt;
&lt;br /&gt;
18&lt;br /&gt;
&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
Input:&lt;br /&gt;
&lt;br /&gt;
121&lt;br /&gt;
&lt;br /&gt;
1 6 3 1&lt;br /&gt;
&lt;br /&gt;
6 1 3 1&lt;br /&gt;
&lt;br /&gt;
1 3 1 6&lt;br /&gt;
&lt;br /&gt;
3 1 6 1&lt;br /&gt;
&lt;br /&gt;
Output consola:&lt;br /&gt;
&lt;br /&gt;
n trebuie să fie între 1 și 100 inclusiv.&lt;br /&gt;
&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python3&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
def sub(n, x, k=0):&lt;br /&gt;
    if not check_constraints(n,matrix):&lt;br /&gt;
        return&lt;br /&gt;
    suma = 0&lt;br /&gt;
    for i in range(0, n-1):&lt;br /&gt;
        for j in range(0, n-1-i):&lt;br /&gt;
                suma += x[i][j]&lt;br /&gt;
    return suma&lt;br /&gt;
def check_constraints(n, matrix):&lt;br /&gt;
    if not(1 &amp;lt;= n &amp;lt;= 100):&lt;br /&gt;
        print(&amp;quot;n trebuie să fie între 1 și 100 inclusiv.&amp;quot;) &lt;br /&gt;
    for row in matrix:&lt;br /&gt;
        for elem in row:&lt;br /&gt;
            if elem &amp;gt;= 1000:&lt;br /&gt;
                print(&amp;quot;Elementele matricei trebuie să fie mai mici decât 1000.&amp;quot;)&lt;br /&gt;
# Citirea datelor de intrare&lt;br /&gt;
with open(&amp;quot;matriceIN.txt&amp;quot;, &amp;quot;r&amp;quot;) as fin:&lt;br /&gt;
    n = int(fin.readline())&lt;br /&gt;
    matrix = [list(map(int, fin.readline().split())) for _ in range(n)]&lt;br /&gt;
# Calculul si afisarea sumei elementelor deasupra diagonalei secundare in fisierul de iesire&lt;br /&gt;
with open(&amp;quot;matriceOUT.txt&amp;quot;, &amp;quot;w&amp;quot;) as fout:&lt;br /&gt;
    fout.write(str(sub(n,matrix)))&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Miawinator</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=0987_-_Matrice_4&amp;diff=7610</id>
		<title>0987 - Matrice 4</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=0987_-_Matrice_4&amp;diff=7610"/>
		<updated>2023-12-04T12:34:29Z</updated>

		<summary type="html">&lt;p&gt;Miawinator: Pagină nouă: = Cerința = Se dă o matrice pătratică cu &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; linii și &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; coloane și elemente numere naturale. Să se afișeze indicii liniilor pentru care suma elementelor este număr par.  Se va defini și folosi subprogramul &amp;lt;code&amp;gt;suma&amp;lt;/code&amp;gt;, cu &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt; parametri:  * &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; – matricea * &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; – dimensiunea matricei * &amp;lt;code&amp;gt;p&amp;lt;/code&amp;gt; – un număr natural, &amp;lt;code&amp;gt;1 ≤ p ≤ n&amp;lt;/code&amp;gt;  care va returna suma elementelor de pe linia &amp;lt;code&amp;gt;...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Cerința =&lt;br /&gt;
Se dă o matrice pătratică cu &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; linii și &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; coloane și elemente numere naturale. Să se afișeze indicii liniilor pentru care suma elementelor este număr par.&lt;br /&gt;
&lt;br /&gt;
Se va defini și folosi subprogramul &amp;lt;code&amp;gt;suma&amp;lt;/code&amp;gt;, cu &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt; parametri:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; – matricea&lt;br /&gt;
* &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; – dimensiunea matricei&lt;br /&gt;
* &amp;lt;code&amp;gt;p&amp;lt;/code&amp;gt; – un număr natural, &amp;lt;code&amp;gt;1 ≤ p ≤ n&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
care va returna suma elementelor de pe linia &amp;lt;code&amp;gt;p&amp;lt;/code&amp;gt; a matricei &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= Date de intrare =&lt;br /&gt;
Fișierul de intrare &amp;lt;code&amp;gt;matriceIN.txt&amp;lt;/code&amp;gt; conține pe prima linie numărul &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;, iar următoarele &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; linii câte &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; numere naturale, reprezentând elementele matricei.&lt;br /&gt;
&lt;br /&gt;
= Date de ieșire =&lt;br /&gt;
Fișierul de ieșire &amp;lt;code&amp;gt;matriceOUT.txt&amp;lt;/code&amp;gt; va conține pe prima linie indicii determinați, separați prin exact un spațiu, în ordine crescătoare.&lt;br /&gt;
&lt;br /&gt;
= Restricții și precizări =&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;1 ≤ n ≤ 100&amp;lt;/code&amp;gt;&lt;br /&gt;
* elementele matricei sunt numere naturale mai mici decât &amp;lt;code&amp;gt;1 000 000&amp;lt;/code&amp;gt;&lt;br /&gt;
* liniile matricei sunt numerotate de la &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; la &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
Input:&lt;br /&gt;
&lt;br /&gt;
4&lt;br /&gt;
&lt;br /&gt;
1 2 3 4&lt;br /&gt;
&lt;br /&gt;
1 1 1 2&lt;br /&gt;
&lt;br /&gt;
2 2 41 8&lt;br /&gt;
&lt;br /&gt;
3 3 10 2&lt;br /&gt;
&lt;br /&gt;
Output:&lt;br /&gt;
&lt;br /&gt;
1 4&lt;br /&gt;
&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
Input:&lt;br /&gt;
&lt;br /&gt;
51&lt;br /&gt;
&lt;br /&gt;
1 2 3&lt;br /&gt;
&lt;br /&gt;
1 2 3&lt;br /&gt;
&lt;br /&gt;
1 2 3&lt;br /&gt;
&lt;br /&gt;
Output consola:&lt;br /&gt;
&lt;br /&gt;
Dimensiunea n nu respecta restrictiile.&lt;br /&gt;
&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python3&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
def suma(x, n, p):&lt;br /&gt;
    # Implementarea subprogramului suma&lt;br /&gt;
    return sum(x[p-1])&lt;br /&gt;
&lt;br /&gt;
def verificare_dimensiune_n(n):&lt;br /&gt;
    # Verifică restricțiile pentru dimensiunea n&lt;br /&gt;
    return 1 &amp;lt;= n &amp;lt;= 100&lt;br /&gt;
&lt;br /&gt;
def verificare_elemente_matrice(matrice):&lt;br /&gt;
    # Verifică restricțiile pentru elementele matricei&lt;br /&gt;
    for linie in matrice:&lt;br /&gt;
        for elem in linie:&lt;br /&gt;
            if not (0 &amp;lt;= elem &amp;lt; 1000000):&lt;br /&gt;
                return False&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
    # Citirea datelor de intrare din fisierul matrice4.in&lt;br /&gt;
    with open(&amp;quot;matriceIN.txt&amp;quot;, &amp;quot;r&amp;quot;) as file_in:&lt;br /&gt;
        n = int(file_in.readline().strip())&lt;br /&gt;
        matrice = [list(map(int, file_in.readline().split())) for _ in range(n)]&lt;br /&gt;
&lt;br /&gt;
    # Verificarea restricțiilor pentru dimensiunea n&lt;br /&gt;
    if not verificare_dimensiune_n(n):&lt;br /&gt;
        print(&amp;quot;Dimensiunea n nu respecta restrictiile.&amp;quot;)&lt;br /&gt;
        return&lt;br /&gt;
&lt;br /&gt;
    # Verificarea restricțiilor pentru elementele matricei&lt;br /&gt;
    if not verificare_elemente_matrice(matrice):&lt;br /&gt;
        print(&amp;quot;Elementele matricei nu respecta restrictiile.&amp;quot;)&lt;br /&gt;
        return&lt;br /&gt;
&lt;br /&gt;
    # Determinarea indiciilor liniilor cu suma elementelor număr par&lt;br /&gt;
    linii_par = [i+1 for i in range(n) if suma(matrice, n, i+1) % 2 == 0]&lt;br /&gt;
&lt;br /&gt;
    # Scrierea rezultatului în fisierul matrice4.out&lt;br /&gt;
    with open(&amp;quot;matriceOUT.txt&amp;quot;, &amp;quot;w&amp;quot;) as file_out:&lt;br /&gt;
        file_out.write(&amp;quot; &amp;quot;.join(map(str, linii_par)))&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>Miawinator</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=4254_-_Matrice_12&amp;diff=7608</id>
		<title>4254 - Matrice 12</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=4254_-_Matrice_12&amp;diff=7608"/>
		<updated>2023-12-04T12:25:41Z</updated>

		<summary type="html">&lt;p&gt;Miawinator: Pagină nouă: == Cerința == Scrieți un program care citește de la tastatură două numere naturale din intervalul &amp;lt;code&amp;gt;[2,50]&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; și &amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt;, și elementele unei matrici cu &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; linii și &amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt; coloane, numere naturale distincte din intervalul &amp;lt;code&amp;gt;[0,10000]&amp;lt;/code&amp;gt;.  Programul interschimbă elementele de pe coloana pe care se află valoarea minimă cu elementele de pe coloana pe care se află valoarea maximă din matrice, apoi afișează p...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cerința ==&lt;br /&gt;
Scrieți un program care citește de la tastatură două numere naturale din intervalul &amp;lt;code&amp;gt;[2,50]&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; și &amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt;, și elementele unei matrici cu &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; linii și &amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt; coloane, numere naturale distincte din intervalul &amp;lt;code&amp;gt;[0,10000]&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Programul interschimbă elementele de pe coloana pe care se află valoarea minimă cu elementele de pe coloana pe care se află valoarea maximă din matrice, apoi afișează pe ecran matricea modificată, câte o linie a matricii pe câte o linie a ecranului, elementele fiecărei linii fiind separate prin câte un spațiu.&lt;br /&gt;
&lt;br /&gt;
Se vor defini și apela următoarele subprograme:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;citire&amp;lt;/code&amp;gt;, care citește de la tastatură valorile lui &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; și &amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt; și apoi elementele matricei&lt;br /&gt;
* &amp;lt;code&amp;gt;afisare&amp;lt;/code&amp;gt;, care afișează pe ecran elementele matricei conform cerinței&lt;br /&gt;
* &amp;lt;code&amp;gt;col_min&amp;lt;/code&amp;gt;, care determină indicele coloanei pe care se află elementul minim din matrice&lt;br /&gt;
* &amp;lt;code&amp;gt;col_max&amp;lt;/code&amp;gt;, care determină indicele coloanei pe care se află elementul maxim din matrice&lt;br /&gt;
* &amp;lt;code&amp;gt;interschimbare&amp;lt;/code&amp;gt;, care interschimbă în matricea dată elementele de pe două coloane date&lt;br /&gt;
&lt;br /&gt;
= Date de intrare =&lt;br /&gt;
Programul citește de la tastatură numerele &amp;lt;code&amp;gt;n m&amp;lt;/code&amp;gt;, iar apoi cele &amp;lt;code&amp;gt;n • m&amp;lt;/code&amp;gt; elemente ale matricii.&lt;br /&gt;
&lt;br /&gt;
= Date de ieșire =&lt;br /&gt;
Programul va afișa pe ecran elementele matricii rezultate.&lt;br /&gt;
&lt;br /&gt;
= Restricții și precizări =&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;2 ≤ n,m ≤ 50&amp;lt;/code&amp;gt;&lt;br /&gt;
* indexarea liniilor și a coloanelor se face începând de la 1&lt;br /&gt;
* elementele tabloului aparțin intervalului &amp;lt;code&amp;gt;[0,10000]&amp;lt;/code&amp;gt;&lt;br /&gt;
* dacă atât elementul minim cât și cel maxim se află pe aceeași coloană, atunci matricea se va afișa nemodificată.&lt;br /&gt;
&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
Input:&lt;br /&gt;
&lt;br /&gt;
4 3&lt;br /&gt;
&lt;br /&gt;
7 5 19&lt;br /&gt;
&lt;br /&gt;
3 8 4&lt;br /&gt;
&lt;br /&gt;
23 6 1&lt;br /&gt;
&lt;br /&gt;
10 2 9&lt;br /&gt;
&lt;br /&gt;
Output:&lt;br /&gt;
&lt;br /&gt;
19 5 7&lt;br /&gt;
&lt;br /&gt;
4 8 3&lt;br /&gt;
&lt;br /&gt;
1 6 23&lt;br /&gt;
&lt;br /&gt;
9 2 10&lt;br /&gt;
&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
Input:&lt;br /&gt;
&lt;br /&gt;
51 3&lt;br /&gt;
&lt;br /&gt;
Output:&lt;br /&gt;
&lt;br /&gt;
Numărul de linii și coloane trebuie să fie în intervalul [2, 50].&lt;br /&gt;
&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python3&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
def verifica_restrictii(n, m, matrice):&lt;br /&gt;
    if not (2 &amp;lt;= n &amp;lt;= 50) or not (2 &amp;lt;= m &amp;lt;= 50):&lt;br /&gt;
        print(&amp;quot;Numărul de linii și coloane trebuie să fie în intervalul [2, 50].&amp;quot;)&lt;br /&gt;
        return False&lt;br /&gt;
&lt;br /&gt;
    for i in range(n):&lt;br /&gt;
        for j in range(m):&lt;br /&gt;
            if not (0 &amp;lt;= matrice[i][j] &amp;lt;= 10000):&lt;br /&gt;
                print(&amp;quot;Elementele matricei trebuie să fie în intervalul [0, 10000].&amp;quot;)&lt;br /&gt;
                return False&lt;br /&gt;
&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
def citire():&lt;br /&gt;
    n = int(input(&amp;quot;Introduceti numarul de linii (2 &amp;lt;= n &amp;lt;= 50): &amp;quot;))&lt;br /&gt;
    m = int(input(&amp;quot;Introduceti numarul de coloane (2 &amp;lt;= m &amp;lt;= 50): &amp;quot;))&lt;br /&gt;
    &lt;br /&gt;
    matrice = []&lt;br /&gt;
    for i in range(n):&lt;br /&gt;
        linie = []&lt;br /&gt;
        for j in range(m):&lt;br /&gt;
            element = int(input(f&amp;quot;Introduceti elementul de pe pozitia [{i+1}, {j+1}]: &amp;quot;))&lt;br /&gt;
            linie.append(element)&lt;br /&gt;
        matrice.append(linie)&lt;br /&gt;
&lt;br /&gt;
    return n, m, matrice&lt;br /&gt;
&lt;br /&gt;
def afisare(matrice):&lt;br /&gt;
    for linie in matrice:&lt;br /&gt;
        for elem in linie:&lt;br /&gt;
            print(elem, end=&amp;quot; &amp;quot;)&lt;br /&gt;
        print()&lt;br /&gt;
&lt;br /&gt;
def col_min(matrice):&lt;br /&gt;
    min_val = float(&#039;inf&#039;)&lt;br /&gt;
    col_index = 0&lt;br /&gt;
    for j in range(len(matrice[0])):&lt;br /&gt;
        coloana = [matrice[i][j] for i in range(len(matrice))]&lt;br /&gt;
        if min(coloana) &amp;lt; min_val:&lt;br /&gt;
            min_val = min(coloana)&lt;br /&gt;
            col_index = j&lt;br /&gt;
    return col_index&lt;br /&gt;
&lt;br /&gt;
def col_max(matrice):&lt;br /&gt;
    max_val = float(&#039;-inf&#039;)&lt;br /&gt;
    col_index = 0&lt;br /&gt;
    for j in range(len(matrice[0])):&lt;br /&gt;
        coloana = [matrice[i][j] for i in range(len(matrice))]&lt;br /&gt;
        if max(coloana) &amp;gt; max_val:&lt;br /&gt;
            max_val = max(coloana)&lt;br /&gt;
            col_index = j&lt;br /&gt;
    return col_index&lt;br /&gt;
&lt;br /&gt;
def interschimbare(matrice, col1, col2):&lt;br /&gt;
    for i in range(len(matrice)):&lt;br /&gt;
        matrice[i][col1], matrice[i][col2] = matrice[i][col2], matrice[i][col1]&lt;br /&gt;
&lt;br /&gt;
# Citirea datelor de intrare&lt;br /&gt;
n, m, matrice = citire()&lt;br /&gt;
if not verifica_restrictii(n, m, matrice):&lt;br /&gt;
    exit()&lt;br /&gt;
&lt;br /&gt;
# Determinarea coloanelor pentru interschimbare&lt;br /&gt;
col_min_index = col_min(matrice)&lt;br /&gt;
col_max_index = col_max(matrice)&lt;br /&gt;
&lt;br /&gt;
# Verificare dacă trebuie să se facă interschimbare&lt;br /&gt;
if col_min_index != col_max_index:&lt;br /&gt;
    # Efectuarea interschimbarii&lt;br /&gt;
    interschimbare(matrice, col_min_index, col_max_index)&lt;br /&gt;
&lt;br /&gt;
# Afisarea rezultatului&lt;br /&gt;
afisare(matrice)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Miawinator</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=4252_-_Matrice_11&amp;diff=7582</id>
		<title>4252 - Matrice 11</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=4252_-_Matrice_11&amp;diff=7582"/>
		<updated>2023-12-03T15:04:40Z</updated>

		<summary type="html">&lt;p&gt;Miawinator: Pagină nouă: = Cerința = Scrieți un program care citește de la tastatură două numere naturale din intervalul &amp;lt;code&amp;gt;[2,50]&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; și &amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt;, și elementele unei matrici cu &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; linii și &amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt; coloane, numere naturale distincte din intervalul &amp;lt;code&amp;gt;[0,10000]&amp;lt;/code&amp;gt;.  Programul interschimbă elementele de pe linia pe care se află valoarea minimă cu elementele de pe linia pe care se află valoarea maximă din matrice, apoi afișează pe ecra...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Cerința =&lt;br /&gt;
Scrieți un program care citește de la tastatură două numere naturale din intervalul &amp;lt;code&amp;gt;[2,50]&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; și &amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt;, și elementele unei matrici cu &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; linii și &amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt; coloane, numere naturale distincte din intervalul &amp;lt;code&amp;gt;[0,10000]&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Programul interschimbă elementele de pe linia pe care se află valoarea minimă cu elementele de pe linia pe care se află valoarea maximă din matrice, apoi afișează pe ecran matricea modificată, câte o linie a matricii pe câte o linie a ecranului, elementele fiecărei linii fiind separate prin câte un spațiu.&lt;br /&gt;
&lt;br /&gt;
Se vor defini și apela următoarele subprograme:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;citire&amp;lt;/code&amp;gt;, care citește de la tastatură valorile lui &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; și &amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt; și apoi elementele matricei&lt;br /&gt;
* &amp;lt;code&amp;gt;afisare&amp;lt;/code&amp;gt;, care afișează pe ecran elementele matricei conform cerinței&lt;br /&gt;
* &amp;lt;code&amp;gt;lin_min&amp;lt;/code&amp;gt;, care determină indicele liniei pe care se află elementul minim din matrice&lt;br /&gt;
* &amp;lt;code&amp;gt;lin_max&amp;lt;/code&amp;gt;, care determină indicele liniei pe care se află elementul maxim din matrice&lt;br /&gt;
* &amp;lt;code&amp;gt;interschimbare&amp;lt;/code&amp;gt;, care interschimbă în matricea dată elementele de pe două linii date&lt;br /&gt;
&lt;br /&gt;
În programele C/C++ nu se vor folosi variabile globale.&lt;br /&gt;
&lt;br /&gt;
= Date de intrare =&lt;br /&gt;
Programul citește de la tastatură numerele &amp;lt;code&amp;gt;n m&amp;lt;/code&amp;gt;, iar apoi cele &amp;lt;code&amp;gt;n • m&amp;lt;/code&amp;gt; elemente ale matricii.&lt;br /&gt;
&lt;br /&gt;
= Date de ieșire =&lt;br /&gt;
Programul va afișa pe ecran elementele matricii rezultate.&lt;br /&gt;
&lt;br /&gt;
= Restricții și precizări =&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;2 ≤ n,m ≤ 50&amp;lt;/code&amp;gt;&lt;br /&gt;
* indexarea liniilor și a coloanelor se face începând de la 1&lt;br /&gt;
* elementele tabloului aparțin intervalului &amp;lt;code&amp;gt;[0,10000]&amp;lt;/code&amp;gt;&lt;br /&gt;
* dacă atât elementul minim cât și cel maxim se află pe aceeași linie, atunci matricea se va afișa nemodificată.&lt;br /&gt;
&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
Input:&lt;br /&gt;
&lt;br /&gt;
4 3&lt;br /&gt;
&lt;br /&gt;
7 5 39&lt;br /&gt;
&lt;br /&gt;
3 8 4&lt;br /&gt;
&lt;br /&gt;
23 6 1&lt;br /&gt;
&lt;br /&gt;
10 2 9&lt;br /&gt;
&lt;br /&gt;
Output:&lt;br /&gt;
&lt;br /&gt;
23 6 1 &lt;br /&gt;
&lt;br /&gt;
3 8 4 &lt;br /&gt;
&lt;br /&gt;
7 5 39 &lt;br /&gt;
&lt;br /&gt;
10 2 9&lt;br /&gt;
&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
2 2&lt;br /&gt;
&lt;br /&gt;
100001 232&lt;br /&gt;
&lt;br /&gt;
32 0&lt;br /&gt;
&lt;br /&gt;
Output:&lt;br /&gt;
&lt;br /&gt;
Input-ul nu respectă restricțiile.&lt;br /&gt;
&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python3&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
def verifica_restrictii(n, m, matrice):&lt;br /&gt;
    if not (2 &amp;lt;= n &amp;lt;= 50) or not (2 &amp;lt;= m &amp;lt;= 50):&lt;br /&gt;
        return False&lt;br /&gt;
&lt;br /&gt;
    if len(matrice) != n:&lt;br /&gt;
        return False&lt;br /&gt;
&lt;br /&gt;
    for linie in matrice:&lt;br /&gt;
        if len(linie) != m:&lt;br /&gt;
            return False&lt;br /&gt;
&lt;br /&gt;
        for element in linie:&lt;br /&gt;
            if not (0 &amp;lt;= element &amp;lt;= 10000):&lt;br /&gt;
                return False&lt;br /&gt;
&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
def citire():&lt;br /&gt;
    n = int(input(&amp;quot;Introduceți numărul de linii (n): &amp;quot;))&lt;br /&gt;
    m = int(input(&amp;quot;Introduceți numărul de coloane (m): &amp;quot;))&lt;br /&gt;
&lt;br /&gt;
    matrice = []&lt;br /&gt;
    for i in range(n):&lt;br /&gt;
        linie = list(map(int, input(f&amp;quot;Introduceți elementele pentru linia {i + 1}: &amp;quot;).split()))&lt;br /&gt;
        matrice.append(linie)&lt;br /&gt;
&lt;br /&gt;
    return n, m, matrice&lt;br /&gt;
&lt;br /&gt;
def afisare(matrice):&lt;br /&gt;
    for linie in matrice:&lt;br /&gt;
        print(*linie)&lt;br /&gt;
&lt;br /&gt;
def lin_min(matrice):&lt;br /&gt;
    min_val = float(&#039;inf&#039;)&lt;br /&gt;
    index_linie = 0&lt;br /&gt;
&lt;br /&gt;
    for i, linie in enumerate(matrice):&lt;br /&gt;
        if min(linie) &amp;lt; min_val:&lt;br /&gt;
            min_val = min(linie)&lt;br /&gt;
            index_linie = i + 1&lt;br /&gt;
&lt;br /&gt;
    return index_linie&lt;br /&gt;
&lt;br /&gt;
def lin_max(matrice):&lt;br /&gt;
    max_val = 0&lt;br /&gt;
    index_linie = 0&lt;br /&gt;
&lt;br /&gt;
    for i, linie in enumerate(matrice):&lt;br /&gt;
        if max(linie) &amp;gt; max_val:&lt;br /&gt;
            max_val = max(linie)&lt;br /&gt;
            index_linie = i + 1&lt;br /&gt;
&lt;br /&gt;
    return index_linie&lt;br /&gt;
&lt;br /&gt;
def interschimbare(matrice, linie1, linie2):&lt;br /&gt;
    matrice[linie1 - 1], matrice[linie2 - 1] = matrice[linie2 - 1], matrice[linie1 - 1]&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
    n, m, matrice = citire()&lt;br /&gt;
&lt;br /&gt;
    if not verifica_restrictii(n, m, matrice):&lt;br /&gt;
        print(&amp;quot;Input-ul nu respectă restricțiile.&amp;quot;)&lt;br /&gt;
        return&lt;br /&gt;
&lt;br /&gt;
    linie_min = lin_min(matrice)&lt;br /&gt;
    linie_max = lin_max(matrice)&lt;br /&gt;
&lt;br /&gt;
    if linie_min != linie_max:&lt;br /&gt;
        interschimbare(matrice, linie_min, linie_max)&lt;br /&gt;
&lt;br /&gt;
    print(&amp;quot;Matricea modificată:&amp;quot;)&lt;br /&gt;
    afisare(matrice)&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>Miawinator</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=4250_-_Inlocuire_10&amp;diff=7581</id>
		<title>4250 - Inlocuire 10</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=4250_-_Inlocuire_10&amp;diff=7581"/>
		<updated>2023-12-03T14:54:59Z</updated>

		<summary type="html">&lt;p&gt;Miawinator: Pagină nouă: = Cerința = Se dă un tablou cu &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; elemente, numere naturale mai mari decât &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;. Să se înlocuiască fiecare element din tablou cu produsul dintre suma divizorilor săi și numărul său de divizori și apoi să afișeze elementele din tabloului de la dreapta la stânga.  Se vor defini și apela următoarele subprograme:  * &amp;lt;code&amp;gt;citire&amp;lt;/code&amp;gt;, care citește de la tastatură valoarea lui &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; și cele &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; elemente ale tabloului *...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Cerința =&lt;br /&gt;
Se dă un tablou cu &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; elemente, numere naturale mai mari decât &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;. Să se înlocuiască fiecare element din tablou cu produsul dintre suma divizorilor săi și numărul său de divizori și apoi să afișeze elementele din tabloului de la dreapta la stânga.&lt;br /&gt;
&lt;br /&gt;
Se vor defini și apela următoarele subprograme:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;citire&amp;lt;/code&amp;gt;, care citește de la tastatură valoarea lui &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; și cele &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; elemente ale tabloului&lt;br /&gt;
* &amp;lt;code&amp;gt;afisare&amp;lt;/code&amp;gt;, care afișează pe ecran elementele tabloului printr-o parcurgere de la dreapta la stânga, separate prin exact un spațiu&lt;br /&gt;
* &amp;lt;code&amp;gt;suma_div&amp;lt;/code&amp;gt;, care determină suma divizorilor unui unui număr dat&lt;br /&gt;
* &amp;lt;code&amp;gt;nr_div&amp;lt;/code&amp;gt;, care determină numărul divizorilor unui unui număr dat&lt;br /&gt;
&lt;br /&gt;
În programele C/C++ nu se vor folosi variabile globale.&lt;br /&gt;
&lt;br /&gt;
= Date de intrare =&lt;br /&gt;
Se citește de la tastatură numărul &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;, iar apoi cele &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; elemente ale tabloului.&lt;br /&gt;
&lt;br /&gt;
= Date de ieșire =&lt;br /&gt;
Se vor afișa pe ecran elementele tabloului după modificarea cerută, separate prin exact un spațiu.&lt;br /&gt;
&lt;br /&gt;
= Restricții și precizări =&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;1 ≤ n ≤ 1000&amp;lt;/code&amp;gt;&lt;br /&gt;
* elementele tabloului vor fi mai mici decât &amp;lt;code&amp;gt;10.000&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
Input:&lt;br /&gt;
&lt;br /&gt;
7&lt;br /&gt;
&lt;br /&gt;
7 18 18 5 14 20 4&lt;br /&gt;
&lt;br /&gt;
Output:&lt;br /&gt;
&lt;br /&gt;
21 252 96 12 234 234 16&lt;br /&gt;
&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
Input:&lt;br /&gt;
&lt;br /&gt;
0&lt;br /&gt;
&lt;br /&gt;
7 18 18 5 14 20 4&lt;br /&gt;
&lt;br /&gt;
Output:&lt;br /&gt;
&lt;br /&gt;
Restricții neîndeplinite pentru n. Introduceți un număr între 1 și 1000.&lt;br /&gt;
&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python3&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
def validate_input_restrictions(n, tablou):&lt;br /&gt;
    if not 1 &amp;lt;= n &amp;lt;= 1000:&lt;br /&gt;
        print(&amp;quot;Restricții neîndeplinite pentru n. Introduceți un număr între 1 și 1000.&amp;quot;)&lt;br /&gt;
        return False   &lt;br /&gt;
    if any(x &amp;lt;= 1 or x &amp;gt;= 10000 for x in tablou):&lt;br /&gt;
        print(&amp;quot;Elementele tabloului trebuie să fie mai mari decât 1 și mai mici decât 1.000.000.000.&amp;quot;)&lt;br /&gt;
        return False&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
def citire():&lt;br /&gt;
    n = int(input(&amp;quot;Introduceți numărul n=&amp;quot;))&lt;br /&gt;
    print(&amp;quot;Introduceți elemente vector&amp;quot;)&lt;br /&gt;
    vector = list(map(int, input().split()))&lt;br /&gt;
    return n,vector&lt;br /&gt;
&lt;br /&gt;
def afisare(vector):&lt;br /&gt;
    print(vector[::-1])&lt;br /&gt;
&lt;br /&gt;
def suma_div(x):&lt;br /&gt;
    suma=x+1&lt;br /&gt;
    div = 2&lt;br /&gt;
    while div &amp;lt;= x/2:&lt;br /&gt;
        if x%div == 0:&lt;br /&gt;
            suma+=div&lt;br /&gt;
        div+=1&lt;br /&gt;
    return suma&lt;br /&gt;
&lt;br /&gt;
def nr_div(x):&lt;br /&gt;
    nr=2&lt;br /&gt;
    div = 2&lt;br /&gt;
    while div &amp;lt;= x/2:&lt;br /&gt;
        if x%div == 0:&lt;br /&gt;
            nr+=1&lt;br /&gt;
        div+=1&lt;br /&gt;
    return nr&lt;br /&gt;
&lt;br /&gt;
def inloc(vector):&lt;br /&gt;
    for i in range(len(vector)):&lt;br /&gt;
        aux=suma_div(vector[i])*nr_div(vector[i])&lt;br /&gt;
        vector[i]=aux&lt;br /&gt;
    return vector&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
    n, tablou = citire()&lt;br /&gt;
    if not validate_input_restrictions(n, tablou):&lt;br /&gt;
        return&lt;br /&gt;
    tablou=inloc(tablou)&lt;br /&gt;
    afisare(tablou)&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    main()&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Miawinator</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=4249_-_Inlocuire_Cmmdc_Oglindit&amp;diff=7580</id>
		<title>4249 - Inlocuire Cmmdc Oglindit</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=4249_-_Inlocuire_Cmmdc_Oglindit&amp;diff=7580"/>
		<updated>2023-12-03T14:43:55Z</updated>

		<summary type="html">&lt;p&gt;Miawinator: Pagină nouă: = Cerința = Se dă un tablou cu &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; elemente, numere naturale mai mari decât &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;. Să se înlocuiască fiecare element din tablou cu cel mai care divizor comun al său cu oglinditul său și apoi să afișeze elementele din tabloului de la dreapta la stânga.  Se vor defini și apela următoarele subprograme:  * &amp;lt;code&amp;gt;citire&amp;lt;/code&amp;gt;, care citește de la tastatură valoarea lui &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; și cele &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; elemente ale tabloului * &amp;lt;code&amp;gt;afisare...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Cerința =&lt;br /&gt;
Se dă un tablou cu &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; elemente, numere naturale mai mari decât &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;. Să se înlocuiască fiecare element din tablou cu cel mai care divizor comun al său cu oglinditul său și apoi să afișeze elementele din tabloului de la dreapta la stânga.&lt;br /&gt;
&lt;br /&gt;
Se vor defini și apela următoarele subprograme:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;citire&amp;lt;/code&amp;gt;, care citește de la tastatură valoarea lui &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; și cele &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; elemente ale tabloului&lt;br /&gt;
* &amp;lt;code&amp;gt;afisare&amp;lt;/code&amp;gt;, care afișează pe ecran elementele tabloului printr-o parcurgere de la dreapta la stânga, separate prin exact un spațiu&lt;br /&gt;
* &amp;lt;code&amp;gt;oglindit&amp;lt;/code&amp;gt;, care determină oglinditul unui număr dat&lt;br /&gt;
* &amp;lt;code&amp;gt;cmmdc&amp;lt;/code&amp;gt;, care calculează cel mai care divizor comun a două numere date&lt;br /&gt;
&lt;br /&gt;
= Date de intrare =&lt;br /&gt;
Se citește de la tastatură numărul &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;, iar apoi cele &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; elemente ale tabloului.&lt;br /&gt;
&lt;br /&gt;
= Date de ieșire =&lt;br /&gt;
Se vor afișa pe ecran elementele tabloului după modificarea cerută, separate prin exact un spațiu.&lt;br /&gt;
&lt;br /&gt;
= Restricții și precizări =&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;1 ≤ n ≤ 1000&amp;lt;/code&amp;gt;&lt;br /&gt;
* elementele tabloului vor fi mai mici decât &amp;lt;code&amp;gt;1.000.000.000&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
Input:&lt;br /&gt;
&lt;br /&gt;
7&lt;br /&gt;
&lt;br /&gt;
7 18 18 5 14 20 4&lt;br /&gt;
&lt;br /&gt;
Output:&lt;br /&gt;
&lt;br /&gt;
4 2 1 5 9 9 7&lt;br /&gt;
&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
Input:&lt;br /&gt;
&lt;br /&gt;
0&lt;br /&gt;
&lt;br /&gt;
7 18 18 5 14 20 4&lt;br /&gt;
&lt;br /&gt;
Output:&lt;br /&gt;
&lt;br /&gt;
Restricții neîndeplinite pentru n. Introduceți un număr între 1 și 1000.&lt;br /&gt;
&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python3&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
def validate_input_restrictions(n, tablou):&lt;br /&gt;
    if not 1 &amp;lt;= n &amp;lt;= 1000:&lt;br /&gt;
        print(&amp;quot;Restricții neîndeplinite pentru n. Introduceți un număr între 1 și 1000.&amp;quot;)&lt;br /&gt;
        return False   &lt;br /&gt;
    if any(x &amp;lt;= 1 or x &amp;gt;= 1000000000 for x in tablou):&lt;br /&gt;
        print(&amp;quot;Elementele tabloului trebuie să fie mai mari decât 1 și mai mici decât 1.000.000.000.&amp;quot;)&lt;br /&gt;
        return False&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
def citire():&lt;br /&gt;
    n = int(input(&amp;quot;Introduceți numărul n=&amp;quot;))&lt;br /&gt;
    print(&amp;quot;Introduceți elemente vector&amp;quot;)&lt;br /&gt;
    vector = list(map(int, input().split()))&lt;br /&gt;
    return n,vector&lt;br /&gt;
&lt;br /&gt;
def afisare(vector):&lt;br /&gt;
    print(vector[::-1])&lt;br /&gt;
&lt;br /&gt;
def oglindit(x):&lt;br /&gt;
    aux=0&lt;br /&gt;
    while x!=0:&lt;br /&gt;
        aux = aux*10 + x % 10&lt;br /&gt;
        x//=10&lt;br /&gt;
    return aux&lt;br /&gt;
&lt;br /&gt;
def cmmdc(x):&lt;br /&gt;
    a=oglindit(x)&lt;br /&gt;
    while x != a:&lt;br /&gt;
        if x&amp;gt;a:&lt;br /&gt;
            x-=a&lt;br /&gt;
        else:&lt;br /&gt;
            a-=x&lt;br /&gt;
    return x&lt;br /&gt;
&lt;br /&gt;
def inloc(vector):&lt;br /&gt;
    for i in range(len(vector)):&lt;br /&gt;
        aux=cmmdc(vector[i])&lt;br /&gt;
        vector[i]=aux&lt;br /&gt;
    return vector&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
    n, tablou = citire()&lt;br /&gt;
    if not validate_input_restrictions(n, tablou):&lt;br /&gt;
        return&lt;br /&gt;
    tablou=inloc(tablou)&lt;br /&gt;
    afisare(tablou)&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    main()&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Miawinator</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=1828_-_Inlocuire_4&amp;diff=7577</id>
		<title>1828 - Inlocuire 4</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=1828_-_Inlocuire_4&amp;diff=7577"/>
		<updated>2023-12-03T14:24:02Z</updated>

		<summary type="html">&lt;p&gt;Miawinator: Pagină nouă: = Cerința = Pentru un număr natural &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; mai mare decât &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; numim redusul lui &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; cel mai mic număr natural care are exact aceiași divizori primi ca și &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt;.  Se dă un tablou cu &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; elemente, numere naturale mai mari decât &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;. Să se înlocuiască fiecare element din tablou cu redusul său și apoi să afișeze elementele din tabloului ordonate descrescător.  Se vor defini și apela următoarele subprog...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Cerința =&lt;br /&gt;
Pentru un număr natural &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; mai mare decât &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; numim redusul lui &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; cel mai mic număr natural care are exact aceiași divizori primi ca și &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Se dă un tablou cu &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; elemente, numere naturale mai mari decât &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;. Să se înlocuiască fiecare element din tablou cu redusul său și apoi să afișeze elementele din tabloului ordonate descrescător.&lt;br /&gt;
&lt;br /&gt;
Se vor defini și apela următoarele subprograme:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;citire&amp;lt;/code&amp;gt;, care citește de la tastatură valoarea lui &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; și cele &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; elemente ale tabloului&lt;br /&gt;
* &amp;lt;code&amp;gt;afisare&amp;lt;/code&amp;gt;, care afișează pe ecran elementele tabloului, separate prin exact un spațiu&lt;br /&gt;
* &amp;lt;code&amp;gt;redus&amp;lt;/code&amp;gt;, care determină pentru un număr dat redusul său&lt;br /&gt;
* &amp;lt;code&amp;gt;sortare&amp;lt;/code&amp;gt;, care sortează descrescător un tablou&lt;br /&gt;
* &amp;lt;code&amp;gt;inloc&amp;lt;/code&amp;gt;, care realizează înlocuirile cerute.&lt;br /&gt;
&lt;br /&gt;
= Date de intrare =&lt;br /&gt;
Se citește de la tastatură numărul &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;, iar apoi cele &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; elemente ale tabloului.&lt;br /&gt;
&lt;br /&gt;
= Date de ieșire =&lt;br /&gt;
Se vor afișa pe ecran elementele tabloului după transformările cerute, separate prin exact un spațiu.&lt;br /&gt;
&lt;br /&gt;
= Restricții și precizări =&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;1 ≤ n ≤ 1000&amp;lt;/code&amp;gt;&lt;br /&gt;
* elementele tabloului vor fi mai mici decât &amp;lt;code&amp;gt;1.000.000.000&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
Input:&lt;br /&gt;
&lt;br /&gt;
7&lt;br /&gt;
&lt;br /&gt;
7 18 18 5 14 20 4 &lt;br /&gt;
&lt;br /&gt;
Output:&lt;br /&gt;
&lt;br /&gt;
14 10 7 6 6 5 2&lt;br /&gt;
&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
Input:&lt;br /&gt;
&lt;br /&gt;
0&lt;br /&gt;
&lt;br /&gt;
7 18 18 5 14 20 4 &lt;br /&gt;
&lt;br /&gt;
Output:&lt;br /&gt;
&lt;br /&gt;
Restricții neîndeplinite pentru n. Introduceți un număr între 1 și 1000.&lt;br /&gt;
&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python3&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
def validate_input_restrictions(n, tablou):&lt;br /&gt;
    if not 1 &amp;lt;= n &amp;lt;= 1000:&lt;br /&gt;
        print(&amp;quot;Restricții neîndeplinite pentru n. Introduceți un număr între 1 și 1000.&amp;quot;)&lt;br /&gt;
        return False   &lt;br /&gt;
    if any(x &amp;lt;= 1 or x &amp;gt;= 1000000000 for x in tablou):&lt;br /&gt;
        print(&amp;quot;Elementele tabloului trebuie să fie mai mari decât 1 și mai mici decât 1.000.000.000.&amp;quot;)&lt;br /&gt;
        return False&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
def citire():&lt;br /&gt;
    n = int(input(&amp;quot;Introduceți numărul n=&amp;quot;))&lt;br /&gt;
    print(&amp;quot;Introduceți elemente vector&amp;quot;)&lt;br /&gt;
    vector = list(map(int, input().split()))&lt;br /&gt;
    return n,vector&lt;br /&gt;
&lt;br /&gt;
def afisare(vector):&lt;br /&gt;
    for i in vector:&lt;br /&gt;
        print(i, end=&amp;quot; &amp;quot;)&lt;br /&gt;
    print()&lt;br /&gt;
&lt;br /&gt;
def sortare_descrescatoare(tablou):&lt;br /&gt;
    return sorted(tablou, reverse=True)&lt;br /&gt;
&lt;br /&gt;
def factorizare_in_divizori_primi(x):&lt;br /&gt;
    divizori_primi = []&lt;br /&gt;
    divizor = 2&lt;br /&gt;
    while divizor &amp;lt;= x:&lt;br /&gt;
        if x % divizor == 0:&lt;br /&gt;
            divizori_primi.append(divizor)&lt;br /&gt;
        while x % divizor == 0:&lt;br /&gt;
            x //= divizor&lt;br /&gt;
        divizor += 1&lt;br /&gt;
    if x &amp;gt; 1:&lt;br /&gt;
        divizori_primi.append(x)&lt;br /&gt;
    return divizori_primi&lt;br /&gt;
&lt;br /&gt;
def redus(x):&lt;br /&gt;
    a=1&lt;br /&gt;
    tab=factorizare_in_divizori_primi(x)&lt;br /&gt;
    for i in tab:&lt;br /&gt;
        a*=i&lt;br /&gt;
    return a&lt;br /&gt;
&lt;br /&gt;
def inloc(vector):&lt;br /&gt;
    for i in range(len(vector)):&lt;br /&gt;
        aux=redus(vector[i])&lt;br /&gt;
        vector[i]=aux&lt;br /&gt;
    return vector&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
    n, tablou = citire()&lt;br /&gt;
    if not validate_input_restrictions(n, tablou):&lt;br /&gt;
        return&lt;br /&gt;
    tablou=inloc(tablou)&lt;br /&gt;
    tablou=sortare_descrescatoare(tablou)&lt;br /&gt;
    afisare(tablou)&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    main()&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Miawinator</name></author>
	</entry>
</feed>