2292 - Nevricos: Difference between revisions
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... |
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: | |||
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> | |||
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>