3667 - Cif Max Imp: Diferență între versiuni

De la Universitas MediaWiki
Fără descriere a modificării
Fără descriere a modificării
 
(Nu s-au afișat 3 versiuni intermediare efectuate de același utilizator)
Linia 1: Linia 1:
Sursă: [https://www.pbinfo.ro/probleme/3667/cifmaximp]
Sursă: [https://www.pbinfo.ro/probleme/3667/cifmaximp]
== Cerinţa ==
== Cerinţa ==
Se dau '''numere''' numere naturale. Determinaţi câte dintre ele au cifra maximă un număr impar.
Se dau '''N''' numere naturale. Determinaţi câte dintre ele au cifra maximă un număr impar.
== Date de intrare ==
== Date de intrare ==
Programul citește de la tastatură numărul '''numere''', iar apoi '''numere''' numere naturale, separate prin spații.
Programul citește de la tastatură numărul '''N''', iar apoi '''N''' numere naturale, separate prin spații.
== Date de ieşire ==
== 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 valoarea cerută. în caz contrar, se va afișa pe ecran. '''"Datele nu au fost introduse corect."'''.
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 ==
== Restricții și precizări ==
* 1 ⩽ numere ⩽ 100
* '''1 ⩽ N ⩽ 100'''
* cele '''numere''' numere citite vor fi mai mici decât 1.000.000.000
* cele '''N''' numere citite vor fi mai mici decât 1.000.000.000
== Exemplu ==
== Exemplu ==
; Intrare
; Intrare
Linia 14: Linia 14:
: 178 32 44
: 178 32 44
; Ieșire
; Ieșire
: Datele sunt introduse corect.
: 1
: 1
== Rezolvare ==
== Rezolvare ==


<syntaxhighlight lang="python" line>
<syntaxhighlight lang="python" line>
#3667


numere = int(input("Introduceți numărul de date de intrare: ")) # se solicită numărul de date de intrare
def verificare_date(n: int, lst):
nr = 0
    # 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


for i in range(numere): # se iterează prin numerele introduse
    var = int(input(f"Introduceți numărul {i+1} (intre 0 si 1 trilioane): ")) # se solicită introducerea unui număr
    if var < 0 or var > 1000000000000: # se verifică dacă numărul introdus este valid
        print("Datele nu au fost introduse corect. Introduceți un număr pozitiv între 0 și 1 trilioane.")
        continue # se trece la următoarea iterație
    maxim = 0
    while var > 0: # se calculează cifra maximă din numărul introdus
        cifra = var % 10
        if cifra > maxim:
            maxim = cifra
        var //= 10
    if maxim % 2 == 1: # se verifică dacă cifra maximă este impară
        nr += 1


if numere == 0: # se verifică dacă utilizatorul nu a introdus nicio valoare
def numar_cifre_impare(n: int, lst):
     print("Nu ați introdus nicio valoare.")
    # calculează numărul de numere cu cifra maximă impară
elif nr == numere: # se verifică dacă toate numerele introduse au cifra maximă impară
    nr = 0
     print("Toate numerele au cifra maximă impară.")
    for num in lst:
else: # altfel, se afișează numărul de numere cu cifra maximă impară
        cifra_max = 0
    print(f"Ați introdus {numere} numere, dintre care {nr} au cifra maximă impară.")
        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>
</syntaxhighlight>

Versiunea curentă din 27 aprilie 2023 17:20

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
Datele sunt introduse corect.
1

Rezolvare

#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.")