2292 - Nevricos: Difference between revisions

From Bitnami MediaWiki
Raul (talk | contribs)
Pagină nouă: Se consideră un șir <code>S</code> format din <code>N</code> cifre nenule. O '''secvență''' a șirului <code>S</code> este o succesiune de cifre din <code>S</code> care apar pe poziții consecutive. Un număr <code>X</code> asociat unei secvențe din <code>S</code> este numărul în baza <code>10</code> care se formează cu toate cifrele din secvența respectivă, în ordinea în care apar în aceasta. Un '''subșir''' al șirului <code>S</code> este o succesiune de cif...
 
Raul (talk | contribs)
No edit summary
 
Line 37: Line 37:


=== Lipește codul aici ===
=== Lipește codul aici ===
<syntaxhighlight lang="python" line="1">
with open("nevricos.intxt", "r") as cin:


  with open("nevricos.outtxt", "w") as cout:


with open("nevricos.in", "r") as cin:
      Se, Ss, nr1, nr2 = 0, 0, 0, 0


   with open("nevricos.out", "w") as cout:
      x = cin.read(1)


       Se, Ss, nr1, nr2 = 0, 0, 0, 0
      while True:


       x = cin.read(1)
          y = cin.read(1)


       while True:
          if not y:


           y = cin.read(1)
              break


           if not y:
          if x == '1':


               break
              nr1 += 1


           if x == '1':
          elif x == '2':


               nr1 += 1
              nr2 += 1


           elif x == '2':
          if y == '5':


               nr2 += 1
              Ss += nr1


           if y == '5':
              if x == '1':


               Ss += nr1
                  Se += 1


               if x == '1':
          elif y == '4':


                   Se += 1
              Ss += nr2


           elif y == '4':
              if x == '2':


               Ss += nr2
                  Se += 1


               if x == '2':
          x = y


                   Se += 1
      cout.write(str(Se) + '\n' + str(Ss))  
 
</syntaxhighlight>
           x = y
 
       cout.write(str(Se) + '\n' + str(Ss))

Latest revision as of 14:06, 14 December 2023

Se consideră un șir S format din N cifre nenule.

O secvență a șirului S este o succesiune de cifre din S care apar pe poziții consecutive. Un număr X asociat unei secvențe din S este numărul în baza 10 care se formează cu toate cifrele din secvența respectivă, în ordinea în care apar în aceasta.

Un subșir al șirului S este o succesiune de cifre din S care apar în S pe pozițiile p 1 , p 2 , … , p k astfel încât p 1 < p 2 < … < p k și k <= N . Un număr X asociat unui subșir al lui S este numărul în baza 10 care se formează cu toate cifrele din subșirul respectiv, în ordinea în care apar în acesta.

Un număr X se numește nevricos dacă este egal cu triplul produsului cifrelor lui X.

Cerința[edit | edit source]

a. Dându-se un șir S de cifre nenule, să se determine câte dintre secvențele din S au numere asociate nevricoase.

b. Dându-se un șir S de cifre nenule, să se determine câte dintre subșirurile lui S au numere asociate nevricoase.

Date de intrare[edit | edit source]

Fișierul de intrare nevricos.in conține pe prima linie șirul S de cifre nenule.

Date de ieșire[edit | edit source]

Fișierul de ieșire nevricos.out va conține două linii:

pe prima linie numărul de secvențe din S care au asociate numere nevricoase.

pe a doua linie numărul de subșiruri ale lui S care au asociate numere nevricoase.

Restricții și precizări[edit | edit source]

* Șirul S va conține maxim 1.000.000 de cifre

Exemplu:[edit | edit source]

nevricos.in

153175

nevricos.out

1
3


Încărcare soluție[edit | edit source]

Lipește codul aici[edit | edit source]

<syntaxhighlight lang="python" line="1"> with open("nevricos.intxt", "r") as cin:

  with open("nevricos.outtxt", "w") as cout:
      Se, Ss, nr1, nr2 = 0, 0, 0, 0
      x = cin.read(1)
      while True:
          y = cin.read(1)
          if not y:
              break
          if x == '1':
              nr1 += 1
          elif x == '2':
              nr2 += 1
          if y == '5':
              Ss += nr1
              if x == '1':
                  Se += 1
          elif y == '4':
              Ss += nr2
              if x == '2':
                  Se += 1
          x = y
      cout.write(str(Se) + '\n' + str(Ss)) 

</syntaxhighlight>