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.
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 ).
#include <bits/stdc++.h> using namespace std; ifstream cin("nevricos.in"); ofstream cout("nevricos.out"); int main() { long long int c = 0 , d = 0 , f1 = 0 , f2 = 0; char x , y; cin >> x; while(cin >> y) { if((x=='1' && y == '5') || (x=='2' && y=='4')) c++; if(x=='1') f1++; if(x=='2') f2++; if(y=='5') d +=f1; if(y=='4') d +=f2; x = y; } cout << c << '\n' << d; return 0; }