<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.universitas.ro/index.php?action=history&amp;feed=atom&amp;title=1926_-_NumarSpecial</id>
	<title>1926 - NumarSpecial - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.universitas.ro/index.php?action=history&amp;feed=atom&amp;title=1926_-_NumarSpecial"/>
	<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=1926_-_NumarSpecial&amp;action=history"/>
	<updated>2026-05-02T02:18:45Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.42.1</generator>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=1926_-_NumarSpecial&amp;diff=7094&amp;oldid=prev</id>
		<title>Zmicala Narcis: Pagină nouă: == Cerinţa == Se dă un şir format din &#039;&#039;&#039;n&#039;&#039;&#039; numere naturale . Un număr din şir se numeşte special de ordin &#039;&#039;&#039;k&#039;&#039;&#039; dacă suma cifrelor sale este divizibilă cu &#039;&#039;&#039;9&#039;&#039;&#039;, iar cele &#039;&#039;&#039;k&#039;&#039;&#039; numere situate înaintea sa în şir şi cele &#039;&#039;&#039;k&#039;&#039;&#039; numere situate după el în şir sunt prime. Se cere să se afle câte numere speciale de ordin &#039;&#039;&#039;0&#039;&#039;&#039; şi câte numere speciale de ordin &#039;&#039;&#039;1&#039;&#039;&#039; sunt în şir, precum şi ordinul maxim al unui număr special din şir. == Date de i...</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=1926_-_NumarSpecial&amp;diff=7094&amp;oldid=prev"/>
		<updated>2023-10-31T08:45:06Z</updated>

		<summary type="html">&lt;p&gt;Pagină nouă: == Cerinţa == Se dă un şir format din &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039; numere naturale . Un număr din şir se numeşte special de ordin &amp;#039;&amp;#039;&amp;#039;k&amp;#039;&amp;#039;&amp;#039; dacă suma cifrelor sale este divizibilă cu &amp;#039;&amp;#039;&amp;#039;9&amp;#039;&amp;#039;&amp;#039;, iar cele &amp;#039;&amp;#039;&amp;#039;k&amp;#039;&amp;#039;&amp;#039; numere situate înaintea sa în şir şi cele &amp;#039;&amp;#039;&amp;#039;k&amp;#039;&amp;#039;&amp;#039; numere situate după el în şir sunt prime. Se cere să se afle câte numere speciale de ordin &amp;#039;&amp;#039;&amp;#039;0&amp;#039;&amp;#039;&amp;#039; şi câte numere speciale de ordin &amp;#039;&amp;#039;&amp;#039;1&amp;#039;&amp;#039;&amp;#039; sunt în şir, precum şi ordinul maxim al unui număr special din şir. == Date de i...&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== Cerinţa ==&lt;br /&gt;
Se dă un şir format din &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039; numere naturale . Un număr din şir se numeşte special de ordin &amp;#039;&amp;#039;&amp;#039;k&amp;#039;&amp;#039;&amp;#039; dacă suma cifrelor sale este divizibilă cu &amp;#039;&amp;#039;&amp;#039;9&amp;#039;&amp;#039;&amp;#039;, iar cele &amp;#039;&amp;#039;&amp;#039;k&amp;#039;&amp;#039;&amp;#039; numere situate înaintea sa în şir şi cele &amp;#039;&amp;#039;&amp;#039;k&amp;#039;&amp;#039;&amp;#039; numere situate după el în şir sunt prime. Se cere să se afle câte numere speciale de ordin &amp;#039;&amp;#039;&amp;#039;0&amp;#039;&amp;#039;&amp;#039; şi câte numere speciale de ordin &amp;#039;&amp;#039;&amp;#039;1&amp;#039;&amp;#039;&amp;#039; sunt în şir, precum şi ordinul maxim al unui număr special din şir.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Fișierul de intrare &amp;#039;&amp;#039;&amp;#039;numarspecial.in&amp;#039;&amp;#039;&amp;#039; conține pe prima linie numărul &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039;, iar pe a doua linie &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039; numere naturale separate prin spații.&lt;br /&gt;
== Date de ieşire ==&lt;br /&gt;
Fișierul de ieșire &amp;#039;&amp;#039;&amp;#039;numarspecial.out&amp;#039;&amp;#039;&amp;#039; va conține pe prima linie numărul &amp;#039;&amp;#039;&amp;#039;A&amp;#039;&amp;#039;&amp;#039;, reprezentând numărul numerelor speciale de ordin &amp;#039;&amp;#039;&amp;#039;0&amp;#039;&amp;#039;&amp;#039; din şir, pe a doua linie numărul &amp;#039;&amp;#039;&amp;#039;B&amp;#039;&amp;#039;&amp;#039;, reprezentând numărul numerelor speciale de ordin &amp;#039;&amp;#039;&amp;#039;1&amp;#039;&amp;#039;&amp;#039; din şir, iar pe a treia linie ordinul maxim al unui număr special din şir.&lt;br /&gt;
== Restricții și precizări ==&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;1 ≤ n ≤ 1.000.000&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* numerele din şir sunt mai mici decât &amp;#039;&amp;#039;&amp;#039;1.000.000&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* dacă un număr este special de ordin &amp;#039;&amp;#039;&amp;#039;k&amp;#039;&amp;#039;&amp;#039;, atunci el este şi special de ordin &amp;#039;&amp;#039;&amp;#039;k-1&amp;#039;&amp;#039;&amp;#039;, &amp;#039;&amp;#039;&amp;#039;k-2&amp;#039;&amp;#039;&amp;#039;,…, &amp;#039;&amp;#039;&amp;#039;1&amp;#039;&amp;#039;&amp;#039; , &amp;#039;&amp;#039;&amp;#039;0&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* prima cerinţă se notează cu &amp;#039;&amp;#039;&amp;#039;40p&amp;#039;&amp;#039;&amp;#039;, a doua cu &amp;#039;&amp;#039;&amp;#039;40p&amp;#039;&amp;#039;&amp;#039; şi a treia cu &amp;#039;&amp;#039;&amp;#039;20p&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* pentru a obţine punctaje parţiale trebuie ca în fişierul &amp;#039;&amp;#039;&amp;#039;numarspecial.out&amp;#039;&amp;#039;&amp;#039; să afişaţi trei numere&lt;br /&gt;
== Exemplu ==&lt;br /&gt;
; numarspecial.in&lt;br /&gt;
: 13&lt;br /&gt;
: 3 72 5 7 2 2 891 2 13 29 5 27 1&lt;br /&gt;
; numarspecial.out&lt;br /&gt;
: 3&lt;br /&gt;
: 2&lt;br /&gt;
: 4&lt;br /&gt;
== Explicație ==&lt;br /&gt;
În şir sunt &amp;#039;&amp;#039;&amp;#039;3&amp;#039;&amp;#039;&amp;#039; numere speciale de ordin &amp;#039;&amp;#039;&amp;#039;0&amp;#039;&amp;#039;&amp;#039;, şi anume &amp;#039;&amp;#039;&amp;#039;72&amp;#039;&amp;#039;&amp;#039;, &amp;#039;&amp;#039;&amp;#039;891&amp;#039;&amp;#039;&amp;#039; şi &amp;#039;&amp;#039;&amp;#039;27&amp;#039;&amp;#039;&amp;#039; , două numere speciale de ordin &amp;#039;&amp;#039;&amp;#039;1&amp;#039;&amp;#039;&amp;#039;, respectiv &amp;#039;&amp;#039;&amp;#039;72&amp;#039;&amp;#039;&amp;#039; şi &amp;#039;&amp;#039;&amp;#039;891&amp;#039;&amp;#039;&amp;#039;, iar ordinul maxim al unui număr special este &amp;#039;&amp;#039;&amp;#039;4&amp;#039;&amp;#039;&amp;#039;, al numărului &amp;#039;&amp;#039;&amp;#039;891&amp;#039;&amp;#039;&amp;#039; ( are &amp;#039;&amp;#039;&amp;#039;4&amp;#039;&amp;#039;&amp;#039; numere prime înaintea sa şi &amp;#039;&amp;#039;&amp;#039;4&amp;#039;&amp;#039;&amp;#039; după el).&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
# Funcția &amp;#039;is_prime&amp;#039; verifică dacă un număr este prim sau nu.&lt;br /&gt;
def is_prime(n):&lt;br /&gt;
    if n &amp;lt;= 1:&lt;br /&gt;
        return False&lt;br /&gt;
    if n &amp;lt;= 3:&lt;br /&gt;
        return True&lt;br /&gt;
    if n % 2 == 0 or n % 3 == 0:&lt;br /&gt;
        return False&lt;br /&gt;
    i = 5&lt;br /&gt;
    while i * i &amp;lt;= n:&lt;br /&gt;
        if n % i == 0 or n % (i + 2) == 0:&lt;br /&gt;
            return False&lt;br /&gt;
        i += 6&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
# Funcția &amp;#039;is_special&amp;#039; verifică dacă un număr este special sau nu.&lt;br /&gt;
def is_special(n):&lt;br /&gt;
    return sum(int(digit) for digit in str(n)) % 9 == 0&lt;br /&gt;
&lt;br /&gt;
# Funcția &amp;#039;solve&amp;#039; rezolvă problema.&lt;br /&gt;
def solve():&lt;br /&gt;
    # Deschide și citește fișierul de intrare.&lt;br /&gt;
    with open(&amp;#039;numarspecial.in&amp;#039;, &amp;#039;r&amp;#039;) as fin:&lt;br /&gt;
        n = int(fin.readline().strip())&lt;br /&gt;
        numbers = list(map(int, fin.readline().split()))&lt;br /&gt;
&lt;br /&gt;
    # Creează două liste: una pentru a verifica dacă fiecare număr este prim și alta pentru a verifica dacă fiecare număr este special.&lt;br /&gt;
    primes = [is_prime(x) for x in numbers]&lt;br /&gt;
    specials = [is_special(x) for x in numbers]&lt;br /&gt;
&lt;br /&gt;
    # Calculează numărul de numere speciale de ordinul 0 și de ordinul 1.&lt;br /&gt;
    A = specials.count(True)&lt;br /&gt;
    B = sum(primes[i-1] and primes[i+1] and specials[i] for i in range(1, n-1))&lt;br /&gt;
    &lt;br /&gt;
    # Calculează ordinul maxim al unui număr special din șir.&lt;br /&gt;
    max_order = 0&lt;br /&gt;
    for k in range(2, n//2+1):&lt;br /&gt;
        for i in range(k, n-k):&lt;br /&gt;
            if sum(primes[j] for j in range(i-k, i+k+1)) == 2*k and specials[i]:&lt;br /&gt;
                max_order = k&lt;br /&gt;
&lt;br /&gt;
    # Scrie rezultatele în fișierul de ieșire.&lt;br /&gt;
    with open(&amp;#039;numarspecial.out&amp;#039;, &amp;#039;w&amp;#039;) as fout:&lt;br /&gt;
        fout.write(f&amp;quot;{A}\n{B}\n{max_order}\n&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
# Rulează funcția &amp;#039;solve&amp;#039; doar dacă acest script este rulat direct.&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    solve()&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Zmicala Narcis</name></author>
	</entry>
</feed>