3667 - Cif Max Imp: Difference between revisions
No edit summary |
No edit summary |
||
(4 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
Sursă: [https://www.pbinfo.ro/probleme/3667/cifmaximp] | Sursă: [https://www.pbinfo.ro/probleme/3667/cifmaximp] | ||
== Cerinţa == | == Cerinţa == | ||
Se dau ''' | 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 ''' | 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 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 ⩽ | * '''1 ⩽ N ⩽ 100''' | ||
* cele ''' | * cele '''N''' numere citite vor fi mai mici decât 1.000.000.000 | ||
== Exemplu == | == Exemplu == | ||
; Intrare | ; Intrare | ||
Line 14: | Line 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()) | 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> | </syntaxhighlight> |
Latest revision as of 17:20, 27 April 2023
Sursă: [1]
Cerinţa[edit | edit source]
Se dau N numere naturale. Determinaţi câte dintre ele au cifra maximă un număr impar.
Date de intrare[edit | edit source]
Programul citește de la tastatură numărul N, iar apoi N numere naturale, separate prin spații.
Date de ieşire[edit | edit source]
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[edit | edit source]
- 1 ⩽ N ⩽ 100
- cele N numere citite vor fi mai mici decât 1.000.000.000
Exemplu[edit | edit source]
- Intrare
- 3
- 178 32 44
- Ieșire
- Datele sunt introduse corect.
- 1
Rezolvare[edit | edit source]
<syntaxhighlight lang="python" line>
- 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>