3667 - Cif Max Imp

From Bitnami MediaWiki
Revision as of 16:46, 27 April 2023 by Tamas Claudia (talk | contribs)

Sursă: [1]

Cerinţa

Se dau N numere naturale. Determinaţi câte dintre ele au cifra maximă un număr impar.

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 introduse sunt corecte, se va afișa pe ecran mesajul "Datele sunt introduse corect.", apoi se va afișa câte dintre numerele citite au cifra maximă un număr impar. În caz contrar, se va afișa pe ecran. "Datele nu au fost introduse corect.".

Restricții și precizări

  • 1 ⩽ N ⩽ 100
  • cele N numere citite vor fi mai mici decât 1.000.000.000

Exemplu

Intrare
3
178 32 44
Ieșire
1

Rezolvare

<syntaxhighlight lang="python" line>

  1. 3667

def verificare_date(n: int, lst):

   # verifică dacă datele de intrare sunt corecte
   if n <= 0 or n > 100:
       return False
   for num in lst:
       if num <= 0 or num >= 1000000000:
           return False
   return True


def numar_cifre_impare(n: int, lst):

   # calculează numărul de numere cu cifra maximă impară
   nr = 0
   for num in lst:
       cifra_max = 0
       while num > 0:
           cifra = num % 10
           if cifra > cifra_max: #se verifica daca cifra curenta este mai mare decat cifra maxima
               cifra_max = cifra
           num //= 10
       if cifra_max % 2 == 1: # daca cifra_max este impara, contorul nr creste
           nr += 1
   return nr

if __name__ == "__main__":

   n = int(input("Introduceți numărul de date de intrare: "))
   lst = list(map(int, input("Introduceți cele {} numere separate prin spațiu: ".format(n)).split()))
   if verificare_date(n, lst):
       print("Datele sunt introduse corect.")
       nr_cifre_impare = numar_cifre_impare(n, lst)
       print(f"Ați introdus {n} numere, dintre care {nr_cifre_impare} au cifra maximă impară.")
   else:
       print("Datele nu au fost introduse corect.")


</syntaxhighlight>