4320 - Cifre 22
Sursă: [1]
Cerinţa
Se dă un șir cu n numere naturale. Să se determine numărul din șir care are asociatul par maxim. Dacă există mai multe numere cu asociat par maxim se va determina numărul mai mare.
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 sunt introduse corect.", apoi se va afișa pe ecran numărul din șir care are asociatul par maxim. În caz contrar, se va afișa pe ecran. "Datele nu au fost introduse corect.".
Restricții și precizări
- n ⩽ 100
- cele n numere sunt sunt mai mici decât 10^9
Exemplu
- Intrare
- 5
- 19 410 1470 1256 70
- Ieșire
- 1470
Explicație
Asociatul par al lui 19 este 0. Asociatul par al lui 410 este 40. Asociatul par al lui 1470 este 40. Asociatul par al lui 1256 este 26. Asociatul par al lui 70 este 0.
Valoarea maximă a asociatului par este 40. Există două numere care îl au pe 40 ca asociat par, dintre care este mai mare 1470.
Rezolvare
<syntaxhighlight lang="python" line>
- 4320
def get_asociat_par(numar):
cifre = [int(c) for c in str(numar)] # Creează o listă cu cifrele numărului cifre_pare = [c for c in cifre if c % 2 == 0] # Creează o listă cu cifrele pare cifre_impare = [c for c in cifre if c % 2 == 1] # Creează o listă cu cifrele impare if not cifre_pare: # Dacă nu există cifre pare return 0 else: return int(.join([str(c) for c in cifre_pare])) # Concatenează cifrele pare într-un șir și returnează numărul obținut
if __name__ == "__main__":
numere = int(input("Introduceți numărul de numere: "))
if numere > 100: print("Datele nu au fost introduse corect.") else: max_par = -1 max_par_num = -1 numere_str = input("Introduceți cele " + str(numere) + " numere separate prin spații: ") lista_numere = [int(x) for x in numere_str.split()] for num in lista_numere: # Calculează asociatul par al numărului ap = get_asociat_par(num) # Verifică dacă asociatul par al numărului este mai mare decât maximul anterior # sau are același asociat par, dar este mai mare numeric if ap > max_par or (ap == max_par and num > max_par_num): max_par = ap max_par_num = num
print("Datele sunt introduse corect.") print(max_par_num)
</syntaxhighlight>