4148 - Secv10
De la Universitas MediaWiki
Sursa: 4148 - Secv10
Cerinţa
Se dau n numere naturale, reprezentând elementele unui vector. Determinați lungimea maximă a unei secvențe de elemente divizibile cu 10, precum și numărul de secvențe de lungime maximă cu elemente divizibile cu 10.
Date de intrare
Fișierul de intrare secv10.in conține numărul n și n valori naturale, reprezentând elementele vectorului.
Date de ieșire
Fișierul de ieșire secv10.out va conține: Dacă datele sunt introduse corect, pe ecran se va afișa: "Datele sunt introduse corect.", apoi pe un rând nou numărul c, reprezentând valoarea cerută. În cazul contrar, se va afișa pe ecran: "Datele nu corespund restricțiilor impuse.".
Restricţii şi precizări
- 0 < n ≤ 10.000
- elementele vectorului vor fi mai mici decât 1.000.000 și există cel puțin un element divizibil cu 10.
Exemplu
- Intrare
- 11
- 12 10 20 30 99 1000 1 20 500 600 5
- Ieșire
- Datele nu corespund restricțiilor impuse./
- Datele sunt introduse corect.
- 3 2
Rezolvare
Rezolvare ver. 1
# 4148 - Secv10
def secvmax(n, v):
lungime_max = 0
nr_max = 0
lungime_curenta = 0
for i in range(n):
if v[i] % 10 == 0:
lungime_curenta += 1
if lungime_curenta > lungime_max:
lungime_max = lungime_curenta
nr_max = 1
elif lungime_curenta == lungime_max:
nr_max += 1
else:
lungime_curenta = 0
return lungime_max, nr_max
def validare(n, v):
if len(v) != n:
return False
for x in v:
if x % 10 != 0 or x < 0 or x > 1000000:
return False
return True
if __name__ == '__main__':
n, v = citire_date()
if validare(n, v):
lungime, nr = secvmax(n, v)
print("Datele sunt introduse corect.")
print(lungime, nr)
else:
print("Datele nu corespund restricțiilor impuse.")