<?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=1618_-_Cifre_12</id>
	<title>1618 - Cifre 12 - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.universitas.ro/index.php?action=history&amp;feed=atom&amp;title=1618_-_Cifre_12"/>
	<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=1618_-_Cifre_12&amp;action=history"/>
	<updated>2026-05-01T05:43:10Z</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=1618_-_Cifre_12&amp;diff=9652&amp;oldid=prev</id>
		<title>Raul: Pagină nouă:  Un indicator numeric este un dispozitiv de afişaj electronic destinat afişării unei cifre zecimale.   Acesta conține &lt;code&gt;7&lt;/code&gt; segmente notate cu &lt;code&gt;a&lt;/code&gt;, &lt;code&gt;b&lt;/code&gt;, &lt;code&gt;c&lt;/code&gt;, &lt;code&gt;d&lt;/code&gt;, &lt;code&gt;e&lt;/code&gt;, &lt;code&gt;f&lt;/code&gt;, &lt;code&gt;g&lt;/code&gt;, ca în figura de mai jos.  Afişarea unei cifre se face prin aprinderea unei combinații de segmente conform tabelului: {| class=&quot;wikitable&quot; !Cifră !0 !1 !2 !3 !4 !5 !6 !7 !8 !9 |- |Segmente aprinse |a,b,c,d,e,f...</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=1618_-_Cifre_12&amp;diff=9652&amp;oldid=prev"/>
		<updated>2024-02-16T17:05:46Z</updated>

		<summary type="html">&lt;p&gt;Pagină nouă:  Un indicator numeric este un dispozitiv de afişaj electronic destinat afişării unei cifre zecimale.   Acesta conține &amp;lt;code&amp;gt;7&amp;lt;/code&amp;gt; segmente notate 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;, &amp;lt;code&amp;gt;f&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;g&amp;lt;/code&amp;gt;, ca în figura de mai jos.  Afişarea unei cifre se face prin aprinderea unei combinații de segmente conform tabelului: {| class=&amp;quot;wikitable&amp;quot; !Cifră !0 !1 !2 !3 !4 !5 !6 !7 !8 !9 |- |Segmente aprinse |a,b,c,d,e,f...&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&lt;br /&gt;
Un indicator numeric este un dispozitiv de afişaj electronic destinat afişării unei cifre zecimale. &lt;br /&gt;
&lt;br /&gt;
Acesta conține &amp;lt;code&amp;gt;7&amp;lt;/code&amp;gt; segmente notate 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;, &amp;lt;code&amp;gt;f&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;g&amp;lt;/code&amp;gt;, ca în figura de mai jos.&lt;br /&gt;
&lt;br /&gt;
Afişarea unei cifre se face prin aprinderea unei combinații de segmente conform tabelului:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Cifră&lt;br /&gt;
!0&lt;br /&gt;
!1&lt;br /&gt;
!2&lt;br /&gt;
!3&lt;br /&gt;
!4&lt;br /&gt;
!5&lt;br /&gt;
!6&lt;br /&gt;
!7&lt;br /&gt;
!8&lt;br /&gt;
!9&lt;br /&gt;
|-&lt;br /&gt;
|Segmente aprinse&lt;br /&gt;
|a,b,c,d,e,f&lt;br /&gt;
|b,c&lt;br /&gt;
|a,b,d,e,g&lt;br /&gt;
|a,b,c,d,g&lt;br /&gt;
|b,c,f,g&lt;br /&gt;
|a,c,d,f,g&lt;br /&gt;
|a,c,d,e,f,g&lt;br /&gt;
|a,b,c&lt;br /&gt;
|a,b,c,d,e,f,g&lt;br /&gt;
|a,b,c,d,f,g&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Cerința =&lt;br /&gt;
Cunoscând un număr natural &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt; afișat cu ajutorul mai multor indicatoare numerice, să se scrie un program care determină:&lt;br /&gt;
&lt;br /&gt;
# Numărul de segmente aprinse pentru afișarea numărului &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt;.&lt;br /&gt;
# Numărul de numere distincte mai mari decât &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt;,ce se pot forma prin aprinderea a cel puțin unui segment în plus, față de cele utilizate pentru afișarea numărului &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt;, fără a folosi alte indicatoare numerice, și fără a stinge niciun segment dintre cele deja aprinse.&lt;br /&gt;
&lt;br /&gt;
= Date de intrare =&lt;br /&gt;
Fișierul de intrare &amp;lt;code&amp;gt;cifre12.in&amp;lt;/code&amp;gt; conține pe prima linie numărul natural &amp;lt;code&amp;gt;V&amp;lt;/code&amp;gt; a cărui valoare poate fi doar &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; sau &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt;, iar pe a doua 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 este &amp;lt;code&amp;gt;cifre12.out&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Dacă valoarea lui &amp;lt;code&amp;gt;V&amp;lt;/code&amp;gt; este &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; atunci fişierul de ieşire va conţine pe prima linie un singur număr natural ce reprezintă numărul de segmente aprinse pentru afișarea numărului &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Dacă valoarea lui &amp;lt;code&amp;gt;V&amp;lt;/code&amp;gt; este &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt; atunci fişierul de ieşire va conține pe prima linie un singur număr natural reprezentând numărul de numere distincte mai mari decât &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt;, ce se pot forma prin aprinderea a cel puțin unui segment în plus, față de cele utilizate pentru afișarea numărului &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt;, fără a folosi alte indicatoare numerice.&lt;br /&gt;
&lt;br /&gt;
= Restricții și precizări =&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;10 ≤ N ≤ 10&amp;lt;sup&amp;gt;19&amp;lt;/sup&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
* 20% din teste vor avea valoarea &amp;lt;code&amp;gt;V = 1&amp;lt;/code&amp;gt;, iar 80% din teste vor avea valoarea &amp;lt;code&amp;gt;V = 2&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= Exemplul 1 =&lt;br /&gt;
&amp;lt;code&amp;gt;cifre12.in&amp;lt;/code&amp;gt;&lt;br /&gt;
 1 &lt;br /&gt;
 823&lt;br /&gt;
&amp;lt;code&amp;gt;cifre12.out&amp;lt;/code&amp;gt;&lt;br /&gt;
 17&lt;br /&gt;
&lt;br /&gt;
=== Explicație ===&lt;br /&gt;
&amp;lt;code&amp;gt;V = 1&amp;lt;/code&amp;gt;, deci se rezolvă NUMAI prima cerință. &amp;lt;code&amp;gt;N = 823&amp;lt;/code&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
Pentru afișarea cifrei &amp;lt;code&amp;gt;8&amp;lt;/code&amp;gt; s-au aprins &amp;lt;code&amp;gt;7&amp;lt;/code&amp;gt; segmente, pentru cifra &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt; s-au aprins &amp;lt;code&amp;gt;5&amp;lt;/code&amp;gt; segmente și pentru cifra &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt; tot &amp;lt;code&amp;gt;5&amp;lt;/code&amp;gt; segmente. În total s-au aprins &amp;lt;code&amp;gt;17&amp;lt;/code&amp;gt; segmente.&lt;br /&gt;
&lt;br /&gt;
= Exemplul 2 =&lt;br /&gt;
&amp;lt;code&amp;gt;cifre12.in&amp;lt;/code&amp;gt;&lt;br /&gt;
 2&lt;br /&gt;
 823&lt;br /&gt;
&amp;lt;code&amp;gt;cifre12.out&amp;lt;/code&amp;gt;&lt;br /&gt;
 5&lt;br /&gt;
&lt;br /&gt;
=== Explicație ===&lt;br /&gt;
&amp;lt;code&amp;gt;V = 2&amp;lt;/code&amp;gt;, deci se rezolvă NUMAI a doua cerință. &amp;lt;code&amp;gt;N = 823&amp;lt;/code&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
Din cifra &amp;lt;code&amp;gt;8&amp;lt;/code&amp;gt; nu se mai pot obține alte cifre prin aprinderea de noi segmente.&lt;br /&gt;
&lt;br /&gt;
Din cifra &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt; se poate obține cifra &amp;lt;code&amp;gt;8&amp;lt;/code&amp;gt; iar din cifra &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt; se pot obține cifrele &amp;lt;code&amp;gt;8&amp;lt;/code&amp;gt; și &amp;lt;code&amp;gt;9&amp;lt;/code&amp;gt; prin aprinderea de noi segmente. Așadar, se pot obține &amp;lt;code&amp;gt;5&amp;lt;/code&amp;gt; numere mai mari ca &amp;lt;code&amp;gt;823&amp;lt;/code&amp;gt;: &amp;lt;code&amp;gt;828&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;829&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;883&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;888&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;889&amp;lt;/code&amp;gt;.&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;
# Technology stack: C++&lt;br /&gt;
import sys&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
    n = 0&lt;br /&gt;
    N = 0&lt;br /&gt;
    S = 0&lt;br /&gt;
    P = 0&lt;br /&gt;
&lt;br /&gt;
    # cate segmente are fiecare cifra&lt;br /&gt;
    s = [6, 2, 5, 5, 4, 5, 6, 3, 7, 6]&lt;br /&gt;
&lt;br /&gt;
    # cate cifre strict mai mari se pot obtine din cifra curenta prin adaugare&lt;br /&gt;
    a = [1, 5, 1, 2, 2, 3, 1, 2, 0, 0]&lt;br /&gt;
&lt;br /&gt;
    # cate cifre se pot obtine din cifra curenta prin adaugare, inclusiv cifra curenta&lt;br /&gt;
    b = [2, 7, 2, 3, 3, 4, 2, 5, 1, 2]&lt;br /&gt;
&lt;br /&gt;
    c = 0&lt;br /&gt;
    k = 0&lt;br /&gt;
    i = 0&lt;br /&gt;
    j = 0&lt;br /&gt;
    w = [25]&lt;br /&gt;
    aux = 0&lt;br /&gt;
    v = 0&lt;br /&gt;
&lt;br /&gt;
    f = open(&amp;quot;cifre12.in&amp;quot;)&lt;br /&gt;
    g = open(&amp;quot;cifre12.out&amp;quot;, &amp;quot;w&amp;quot;)&lt;br /&gt;
    &lt;br /&gt;
    v, n = map(int, f.readline().split())&lt;br /&gt;
&lt;br /&gt;
    if v == 1:&lt;br /&gt;
        N = n&lt;br /&gt;
        S = 0&lt;br /&gt;
        while N &amp;gt; 0:&lt;br /&gt;
            c = N % 10&lt;br /&gt;
            S += s[c]&lt;br /&gt;
            N //= 10&lt;br /&gt;
        g.write(str(S) + &amp;quot;\n&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    if v == 2:&lt;br /&gt;
        # duc cifrele intr-un vector&lt;br /&gt;
        N = n&lt;br /&gt;
        k = 0&lt;br /&gt;
        while N &amp;gt; 0:&lt;br /&gt;
            w[k] = N % 10&lt;br /&gt;
            k += 1&lt;br /&gt;
            N //= 10&lt;br /&gt;
&lt;br /&gt;
        # reversez vectorul&lt;br /&gt;
        i = 0&lt;br /&gt;
        j = k - 1&lt;br /&gt;
        while i &amp;lt; j:&lt;br /&gt;
            aux = w[i]&lt;br /&gt;
            w[i] = w[j]&lt;br /&gt;
            w[j] = aux&lt;br /&gt;
            i += 1&lt;br /&gt;
            j -= 1&lt;br /&gt;
&lt;br /&gt;
        S = 0&lt;br /&gt;
        i = 0&lt;br /&gt;
        while i &amp;lt; k:&lt;br /&gt;
            if a[w[i]]:&lt;br /&gt;
                P = a[w[i]]&lt;br /&gt;
                j = i + 1&lt;br /&gt;
                while j &amp;lt; k:&lt;br /&gt;
                    P *= b[w[j]]&lt;br /&gt;
                    j += 1&lt;br /&gt;
                S += P&lt;br /&gt;
            i += 1&lt;br /&gt;
        g.write(str(S) + &amp;quot;\n&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    f.close()&lt;br /&gt;
    g.close()&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    main()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Raul</name></author>
	</entry>
</feed>