1400 - E Palindrom
De la Universitas MediaWiki
Cerința
Se citește un șir cu n numere naturale. Să se verifice dacă prin rearajarea elementelor șirului se poate obține un șir palindrom.
Date de intrare
Programul citește de la tastatură numărul n, iar apoi n numere naturale, separate prin spații.
Date de ieșire
Dacă datele sunt introduse corect, pe ecran se va afișa: " Datele de intrare corespund restrictiilor impuse", apoi pe un rand nou va afișa unul dintre mesajele DA sau NU. În caz contrar, se va afișa mesajul:" Datele de intrare nu corespund restrictiilor impuse".
Restricții și precizări
- 1 ≤ n ≤ 1000
- cele n numere citite vor fi mai mici decât 10.000
Exemplu 1
- Intrare
- 5
- 5 2 3 3 5
- Ieșire
- Datele introduse corespund restricțiilor impuse.
- DA
Exemplu 2
- Intrare
- 0
- Ieșire
- Datele de intrare nu corespund restricțiilor impuse.
Rezolvare
# 1400 E Palindrom
def verificare(nr_elem):
if 1 <= nr_elem <= 10000:
return True
else:
raise ValueError
def e_palindrom(n):
frecventa = [] # avem nevoie de un vector de frecventa pentru a vedea de cate ori apare fiecare numar
for i in range(10001): # numerele introduse sunt mai mici de 10000
frecventa.append(0)
for i in range(n):
numar = int(input("Introduceti un numar: "))
# citirea numerelor din sir, daca nu se pot converti la int
# va fi eroare de tipul ValueError pe care o tratam in main
frecventa[numar] += 1
print("Datele introduse corespund restricțiilor impuse.")
nr_impare = 0 # numaram cate numere apar de numar impar de ori
for numar in frecventa:
if numar % 2 == 1:
nr_impare += 1
if nr_impare >= 2: # daca sunt mai mult de 2 numere atunci nu poate fi palindrom
print("NU")
return
print("DA")
return
if __name__ == '__main__':
try:
N = int(input("Introduceti numarul de elemente ale sirului: ")) # citirea lui n
verificare(N) # apelul functiei de verificare
e_palindrom(N) # apelul functiei de rezolvare
except ValueError: # daca apare eroare din cauza datelor de intrare afisam mesajul
print("Datele introduse nu corespund restricțiilor impuse.")