<?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=1731_-_Numar_5</id>
	<title>1731 - Numar 5 - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.universitas.ro/index.php?action=history&amp;feed=atom&amp;title=1731_-_Numar_5"/>
	<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=1731_-_Numar_5&amp;action=history"/>
	<updated>2026-05-01T06:36:48Z</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=1731_-_Numar_5&amp;diff=9620&amp;oldid=prev</id>
		<title>Raul: Pagină nouă: Pentru un număr dat cu &lt;code&gt;k&lt;/code&gt; cifre , se numeşte algoritm de deplasare circulară spre dreapta de la o cifră iniţială , la o cifră finală , deplasarea din cifră în cifră spre dreapta de  ori (&lt;code&gt;1≤i,j≤k&lt;/code&gt;). Dacă pe parcursul deplasării s-a ajuns la cifra , se continuă deplasarea circulară spre dreapta cu cifra   .  Un număr cu &lt;code&gt;k&lt;/code&gt; cifre se numeşte  număr „circular” dacă îndeplineşte următoarele două cerinţe:  * toate c...</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=1731_-_Numar_5&amp;diff=9620&amp;oldid=prev"/>
		<updated>2024-02-12T15:04:26Z</updated>

		<summary type="html">&lt;p&gt;Pagină nouă: Pentru un număr dat cu &amp;lt;code&amp;gt;k&amp;lt;/code&amp;gt; cifre , se numeşte algoritm de deplasare circulară spre dreapta de la o cifră iniţială , la o cifră finală , deplasarea din cifră în cifră spre dreapta de  ori (&amp;lt;code&amp;gt;1≤i,j≤k&amp;lt;/code&amp;gt;). Dacă pe parcursul deplasării s-a ajuns la cifra , se continuă deplasarea circulară spre dreapta cu cifra   .  Un număr cu &amp;lt;code&amp;gt;k&amp;lt;/code&amp;gt; cifre se numeşte  număr „circular” dacă îndeplineşte următoarele două cerinţe:  * toate c...&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Pentru un număr dat cu &amp;lt;code&amp;gt;k&amp;lt;/code&amp;gt; cifre , se numeşte algoritm de deplasare circulară spre dreapta de la o cifră iniţială , la o cifră finală , deplasarea din cifră în cifră spre dreapta de  ori (&amp;lt;code&amp;gt;1≤i,j≤k&amp;lt;/code&amp;gt;). Dacă pe parcursul deplasării s-a ajuns la cifra , se continuă deplasarea circulară spre dreapta cu cifra &lt;br /&gt;
&lt;br /&gt;
.&lt;br /&gt;
&lt;br /&gt;
Un număr cu &amp;lt;code&amp;gt;k&amp;lt;/code&amp;gt; cifre se numeşte  număr „circular” dacă îndeplineşte următoarele două cerinţe:&lt;br /&gt;
&lt;br /&gt;
* toate cifrele sunt nenule;&lt;br /&gt;
* pornind de la cifra , aplicând algoritmul de deplasare circulară spre dreapta de exact &amp;lt;code&amp;gt;k&amp;lt;/code&amp;gt; ori, se ajunge din nou la , fiecare dintre cifrele numărului fiind exact o singură dată cifră iniţială.&lt;br /&gt;
&lt;br /&gt;
De exemplu, numărul &amp;lt;code&amp;gt;2396&amp;lt;/code&amp;gt; este un număr “circular”, pentru că are doar cifre nenule şi algoritmul de deplasare circulară spre dreapta se aplică astfel:&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;1.&amp;#039;&amp;#039; Se porneşte de la cifra iniţială &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt; (&amp;lt;code&amp;gt;2 3 9 6&amp;lt;/code&amp;gt;) şi se numără două cifre spre dreapta, ajungând la cifra finală &amp;lt;code&amp;gt;9&amp;lt;/code&amp;gt;:  &amp;lt;code&amp;gt;2 3 9 6&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;2.&amp;#039;&amp;#039; Se porneşte de la cifra iniţială &amp;lt;code&amp;gt;9&amp;lt;/code&amp;gt; şi se numără nouă cifre spre dreapta, ajungând la cifra finală &amp;lt;code&amp;gt;6&amp;lt;/code&amp;gt;:  &amp;lt;code&amp;gt;2 3 9 6&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;3.&amp;#039;&amp;#039; Se porneşte de la cifra iniţială &amp;lt;code&amp;gt;6&amp;lt;/code&amp;gt; şi se numără şase cifre spre dreapta, ajungând la cifra finală &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt;:  &amp;lt;code&amp;gt;2 3 9 6&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;4.&amp;#039;&amp;#039; Se porneşte de la cifra iniţială &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt; şi se numără trei cifre spre dreapta, ajungând la cifra finală &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt;:  &amp;lt;code&amp;gt;2 3 9 6&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Astfel, se ajunge la prima cifră din număr, adică la cifra &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt;, după exact &amp;lt;code&amp;gt;4&amp;lt;/code&amp;gt; aplicări ale algoritmului, iar fiecare dintre cifrele numărului este exact o dată cifră iniţială.&lt;br /&gt;
&lt;br /&gt;
= Cerința =&lt;br /&gt;
Scrieţi un program care citeşte numărul natural nenul &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;, apoi numerele naturale &lt;br /&gt;
, şi determină:&lt;br /&gt;
a) cel mai mare număr din şir în care există cel puţin o cifră care apare de minimum două ori, iar în cazul în care în şir nu există un astfel de număr, se va afişa cel mai mare număr din şir;&lt;br /&gt;
b) un şir  de &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; numere naturale pentru care un element (&amp;lt;code&amp;gt;1≤i≤n&amp;lt;/code&amp;gt;)se calculează astfel:&lt;br /&gt;
&lt;br /&gt;
= Date de intrare =&lt;br /&gt;
Fişierul &amp;lt;code&amp;gt;numar.in&amp;lt;/code&amp;gt; conţine pe prima linie numărul &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 numerele naturale &lt;br /&gt;
&lt;br /&gt;
= Date de ieșire =&lt;br /&gt;
Fişierul &amp;lt;code&amp;gt;numar.out&amp;lt;/code&amp;gt; va conţine pe prima linie un număr natural determinat conform cerinţei a), iar pe următoarele &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; linii şirul de numere determinat conform cerinţei de la punctul b), fiecare număr pe câte un rând.&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; 100&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;9 &amp;lt;&amp;lt;/code&amp;gt; x &amp;lt;code&amp;gt;&amp;lt; 999589&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;1 ≤ i ≤ n&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Exemplu: =&lt;br /&gt;
&amp;lt;code&amp;gt;numar.in&amp;lt;/code&amp;gt;&lt;br /&gt;
 5&lt;br /&gt;
 15&lt;br /&gt;
 123&lt;br /&gt;
 1972&lt;br /&gt;
 222&lt;br /&gt;
 515&lt;br /&gt;
&amp;lt;code&amp;gt;numar.out&amp;lt;/code&amp;gt;&lt;br /&gt;
 515&lt;br /&gt;
 15 &lt;br /&gt;
 117&lt;br /&gt;
 1959&lt;br /&gt;
 222&lt;br /&gt;
 522&lt;br /&gt;
&lt;br /&gt;
=== Explicație ===&lt;br /&gt;
a) &amp;lt;code&amp;gt;515&amp;lt;/code&amp;gt; este cel mai mare număr dintre cele cinci numere citite, număr ce conţine o cifră care apare de minimum două ori.&lt;br /&gt;
&lt;br /&gt;
b) Pentru &amp;lt;code&amp;gt;15&amp;lt;/code&amp;gt;: de la cifra iniţială &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;, se numără o cifră şi se ajunge la cifra finală &amp;lt;code&amp;gt;5&amp;lt;/code&amp;gt;, apoi începând de la cifra &amp;lt;code&amp;gt;5&amp;lt;/code&amp;gt; ca cifră iniţială, se numără cinci cifre şi se ajunge la cifra finală &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;. Astfel cifrele &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;5&amp;lt;/code&amp;gt; sunt o singură dată cifre iniţiale şi după două aplicări ale algoritmului de deplasare se ajunge la prima cifră, deci &amp;lt;code&amp;gt;15&amp;lt;/code&amp;gt; este număr circular.&lt;br /&gt;
&lt;br /&gt;
== Încărcare soluție ==&lt;br /&gt;
&lt;br /&gt;
=== Lipește codul aici ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
import sys&lt;br /&gt;
&lt;br /&gt;
sys.stdin = open(&amp;#039;numar.in&amp;#039;, &amp;#039;r&amp;#039;)&lt;br /&gt;
sys.stdout = open(&amp;#039;numar.out&amp;#039;, &amp;#039;w&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
a = [0] * 10000&lt;br /&gt;
n = 0&lt;br /&gt;
&lt;br /&gt;
def date():&lt;br /&gt;
    global n&lt;br /&gt;
    n = int(input())&lt;br /&gt;
    for i in range(n):&lt;br /&gt;
        a[i] = int(input())&lt;br /&gt;
&lt;br /&gt;
def cifre_repetate(x):&lt;br /&gt;
    digits = [0] * 10&lt;br /&gt;
    while x:&lt;br /&gt;
        if digits[x % 10] != 0:&lt;br /&gt;
            return 1&lt;br /&gt;
        else:&lt;br /&gt;
            digits[x % 10] = 1&lt;br /&gt;
            x = x // 10&lt;br /&gt;
    return 0&lt;br /&gt;
&lt;br /&gt;
def max():&lt;br /&gt;
    max1 = 0&lt;br /&gt;
    max2 = 0&lt;br /&gt;
    for i in range(n):&lt;br /&gt;
        if cifre_repetate(a[i]):&lt;br /&gt;
            if max2 &amp;lt; a[i]:&lt;br /&gt;
                max2 = a[i]&lt;br /&gt;
        if max1 &amp;lt; a[i]:&lt;br /&gt;
            max1 = a[i]&lt;br /&gt;
    if max2 == 0:&lt;br /&gt;
        return max1&lt;br /&gt;
    else:&lt;br /&gt;
        return max2&lt;br /&gt;
&lt;br /&gt;
def este(x):&lt;br /&gt;
    i = 1&lt;br /&gt;
    a = [0] * 100&lt;br /&gt;
    b = [0] * 100&lt;br /&gt;
    k = 0&lt;br /&gt;
    t = 0&lt;br /&gt;
    z = 0&lt;br /&gt;
    j = 0&lt;br /&gt;
    ok = 0&lt;br /&gt;
&lt;br /&gt;
    while x != 0:&lt;br /&gt;
        a[i] = x % 10&lt;br /&gt;
        if a[i] == 0:&lt;br /&gt;
            return 0&lt;br /&gt;
        x //= 10&lt;br /&gt;
        b[i] = 1&lt;br /&gt;
        i += 1&lt;br /&gt;
&lt;br /&gt;
    i -= 1&lt;br /&gt;
    for j in range(i // 2):&lt;br /&gt;
        z = a[j]&lt;br /&gt;
        a[j] = a[i - j]&lt;br /&gt;
        a[i - j] = z&lt;br /&gt;
&lt;br /&gt;
    z = 0&lt;br /&gt;
    t = a[1]&lt;br /&gt;
    k = 1&lt;br /&gt;
    ok = 1&lt;br /&gt;
    for j in range(1, i + 1):&lt;br /&gt;
        if k + t &amp;lt;= i:&lt;br /&gt;
            k = k + t&lt;br /&gt;
        else:&lt;br /&gt;
            k = (t - (i - k + 1)) % i + 1&lt;br /&gt;
        if b[k] != 0:&lt;br /&gt;
            z += 1&lt;br /&gt;
            b[k] = 0&lt;br /&gt;
        else:&lt;br /&gt;
            ok = 0&lt;br /&gt;
        t = a[k]&lt;br /&gt;
&lt;br /&gt;
    if ok:&lt;br /&gt;
        return 1&lt;br /&gt;
    else:&lt;br /&gt;
        return 0&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
    global n&lt;br /&gt;
    p = -1&lt;br /&gt;
    z = 0&lt;br /&gt;
    date()&lt;br /&gt;
    print(max())&lt;br /&gt;
    z = 0&lt;br /&gt;
    for i in range(n):&lt;br /&gt;
        if este(a[i]):&lt;br /&gt;
            print(a[i])&lt;br /&gt;
        else:&lt;br /&gt;
            p = 0&lt;br /&gt;
            x = a[i]&lt;br /&gt;
            while not p:&lt;br /&gt;
                if este(x):&lt;br /&gt;
                    p = 1&lt;br /&gt;
                else:&lt;br /&gt;
                    x += 1&lt;br /&gt;
            p = 0&lt;br /&gt;
            y = a[i]&lt;br /&gt;
            while not p:&lt;br /&gt;
                if este(y):&lt;br /&gt;
                    p = 1&lt;br /&gt;
                else:&lt;br /&gt;
                    y -= 1&lt;br /&gt;
            if (x - a[i]) &amp;gt; (a[i] - y):&lt;br /&gt;
                print(y)&lt;br /&gt;
            else:&lt;br /&gt;
                print(x)&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;#039;__main__&amp;#039;:&lt;br /&gt;
     main()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Raul</name></author>
	</entry>
</feed>