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
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
Fișierul de intrare nevricos.in
conține pe prima linie șirul S
de cifre nenule.
Date de ieșire
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
* Șirul S
va conține maxim 1.000.000
de cifre
Exemplu
nevricos.in
153175
nevricos.out
1 3
Explicație
S = 153175
a. Toate secvențele lui S
sunt: 1, 15, 153, 1531, 15317, 153175, 5, 53, 531, 5317, 53175, 3, 31, 317, 3175, 1, 17, 175, 7, 75, 5;
Dintre aceste secvențe, doar secvența 15
satisface proprietatea cerută: 15 = (1*5) + (1*5) + (1*5);
b. Subșirurile lui S
care îndeplinesc condițiile sunt: 15
( 1 5 3 1 7 5), 15
( 1 5 3 1 7 5 ), 15
(1 5 3 1 7 5 ).
Cum e corect?
cout < "As la info";
cout << "As la info";
cout >> "As la info";
Felicitări! Poți mai mult?
Avem sute de probleme pentru tine, fiecare cu explicații ușor de înțeles.
Greșit, dar nu-i bai!
Antrenează-te cu sutele de probleme pe care ți le-am pregătit. Îți explicăm fiecare problemă în parte.
Rezolvare
Iată rezolvarea de 100 de puncte pentru problema Nevricos:
//100p
#include "fstream"
std::ifstream cin("nevricos.in");
std::ofstream cout("nevricos.out");
long long Se, Ss, nr1, nr2;
int main(){
char x, y;
cin >> x;
for(;cin >> y;){
if(x == '1')
++ nr1;
else if(x == '2')
++ nr2;
if(y == '5'){
Ss += nr1;
if(x == '1')
++ Se;
}
else if(y == '4'){
Ss += nr2;
if(x == '2')
++ Se;
}
x = y;
}
cout<<Se<<'\n'<<Ss;
}
Atenție
Enunțurile afișate pe această pagină aparțin exclusiv site-ului PbInfo. Astfel, pentru ștergerea conținutului, puteți să ne contactați la adresa .
Rezolvarea problemei #2292 Nevricos
Pe această pagină găsești rezolvarea de 100 de puncte pentru problema #2292 Nevricos de pe PbInfo.ro. Atenție: nu încurajăm copiatul codului! Totuși, credem cu tărie că analizarea unei soluții corecte este o metodă foarte ușoară de a învăța informatică, astfel că oferim sursele pentru peste 1500 de probleme de pe platforma PbInfo.ro.
Pentru rezolvări PbInfo de la peste 1500 de probleme, vă invităm să intrați pe site-ul nostru!