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;
}