0364 - Cifre 1: Difference between revisions
Am creat de la zero. |
No edit summary |
||
(One intermediate revision by the same user not shown) | |||
Line 1: | Line 1: | ||
sursa: [https://www.pbinfo.ro/probleme/364/cifre1] | |||
== Cerinţa == | == Cerinţa == | ||
Se dau un numar de numere naturale. Determinați numărul pentru care prima cifră este maximă. | Se dau un numar de numere naturale. Determinați numărul pentru care prima cifră este maximă. | ||
Line 18: | Line 19: | ||
: 2467 645 687 59878 125 | : 2467 645 687 59878 125 | ||
; Ieșire | ; Ieșire | ||
: Datele introduse | : Datele sunt introduse corect. | ||
: 687 | : 687 | ||
Line 25: | Line 26: | ||
== Rezolvare == | == Rezolvare == | ||
=== Rezolvare ver. 1 === | |||
<syntaxhighlight lang="python" line> | |||
def citeste_numar_intreg(mesaj): | |||
while True: | |||
try: | |||
numar = int(input(mesaj)) | |||
return numar | |||
except ValueError: | |||
print("Introduceți un număr valid.") | |||
def determina_numar_maxim(n): | |||
max_num = -1 | |||
max_first_digit = -1 | |||
for i in range(n): | |||
while True: | |||
num = citeste_numar_intreg(f"Introduceți numărul {i + 1}: ") | |||
if num < 10: | |||
print("Numărul trebuie să fie natural și să aibă cel puțin două cifre.") | |||
continue | |||
break | |||
first_digit = int(str(num)[0]) | |||
if first_digit > max_first_digit: | |||
max_first_digit = first_digit | |||
max_num = num | |||
elif first_digit == max_first_digit and num > max_num: | |||
max_num = num | |||
return max_num | |||
if __name__ == "__main__": | |||
while True: | |||
n = citeste_numar_intreg("Introduceți numărul de numere: ") | |||
if n < 1 or n > 1000: | |||
print("Numărul de numere trebuie să fie un număr natural între 1 și 1000.") | |||
continue | |||
break | |||
numar_maxim = determina_numar_maxim(n) | |||
print("Datele sunt introduse corect.") | |||
print(f"Numărul cu prima cifră maximă este {numar_maxim}.") | |||
</syntaxhighlight> | |||
=== Rezolvare ver. 2 === | |||
<syntaxhighlight lang="python" line> | <syntaxhighlight lang="python" line> | ||
Line 79: | Line 131: | ||
# Afisam rezultatul | # Afisam rezultatul | ||
print(f"Numărul cu prima cifră maximă este {max_num}.") | print(f"Numărul cu prima cifră maximă este {max_num}.") | ||
</syntaxhighlight> | </syntaxhighlight> |
Latest revision as of 23:27, 15 May 2023
sursa: [1]
Cerinţa[edit | edit source]
Se dau un numar de numere naturale. Determinați numărul pentru care prima cifră este maximă.
Date de intrare[edit | edit source]
Programul citește de la tastatură un număr, iar apoi acel numar de numere naturale, separate prin spaţii.
Date de ieşire[edit | edit source]
Programul afișează pe ecran numărul cerut
Restricții și precizări[edit | edit source]
- 1 ≤ numar ≤ 1000
- cele n numere citite vor avea cel mult 9 cifre
- dacă există mai multe numere pentru care prima cifră este maximă, se va determina cel mai mare dintre acestea
Exemplu[edit | edit source]
- Intrare
- 5
- 2467 645 687 59878 125
- Ieșire
- Datele sunt introduse corect.
- 687
Explicatie[edit | edit source]
Există două numere pentru care prima cifră este maximă. Dintre acestea, cel mai mare este 687.
Rezolvare[edit | edit source]
Rezolvare ver. 1[edit | edit source]
<syntaxhighlight lang="python" line>
def citeste_numar_intreg(mesaj):
while True: try: numar = int(input(mesaj)) return numar except ValueError: print("Introduceți un număr valid.")
def determina_numar_maxim(n):
max_num = -1 max_first_digit = -1
for i in range(n): while True: num = citeste_numar_intreg(f"Introduceți numărul {i + 1}: ") if num < 10: print("Numărul trebuie să fie natural și să aibă cel puțin două cifre.") continue break
first_digit = int(str(num)[0])
if first_digit > max_first_digit: max_first_digit = first_digit max_num = num elif first_digit == max_first_digit and num > max_num: max_num = num
return max_num
if __name__ == "__main__":
while True: n = citeste_numar_intreg("Introduceți numărul de numere: ") if n < 1 or n > 1000: print("Numărul de numere trebuie să fie un număr natural între 1 și 1000.") continue break
numar_maxim = determina_numar_maxim(n) print("Datele sunt introduse corect.") print(f"Numărul cu prima cifră maximă este {numar_maxim}.")
</syntaxhighlight>
Rezolvare ver. 2[edit | edit source]
<syntaxhighlight lang="python" line>
while True:
try: # Citim numărul de numere de la tastatură n = int(input("Introduceți numărul de numere: ")) # Verificăm dacă numărul este între 1 și 1000 if n < 1 or n > 1000: print("Numărul de numere trebuie să fie un număr natural între 1 și 1000.") continue # Dacă numărul este corect, ieșim din bucla while break except ValueError: # Dacă utilizatorul introduce o valoare care nu poate fi convertită într-un număr întreg, # afișăm un mesaj de eroare și reluăm citirea print("Introduceți un număr valid.")
- Inițializăm variabilele max_num și max_first_digit cu valori minime
max_num = -1 max_first_digit = -1
- Citim cele n numere de la tastatură și determinăm numărul cu prima cifră maximă
for i in range(n):
while True: try: # Citim numărul i de la tastatură num = int(input(f"Introduceți numărul {i + 1}: ")) # Verificăm dacă numărul are cel puțin două cifre if num < 10: print("Numărul trebuie să fie natural și să aibă cel puțin două cifre.") continue # Dacă numărul este corect, ieșim din bucla while break except ValueError: # Dacă utilizatorul introduce o valoare care nu poate fi convertită într-un număr întreg, # afișăm un mesaj de eroare și reluăm citirea print("Introduceți un număr valid.")
# Determinăm prima cifră a numărului first_digit = int(str(num)[0])
# Verificăm dacă prima cifră a numărului este mai mare decât oricare alta primă cifră întâlnită până acum if first_digit > max_first_digit: # Dacă da, actualizăm variabilele max_num și max_first_digit cu valorile corespunzătoare max_first_digit = first_digit max_num = num # Dacă prima cifră a numărului este egală cu cea mai mare primă cifră întâlnită până acum, # verificăm dacă numărul este mai mare decât cel mai mare număr cu prima cifră maximă întâlnit până acum elif first_digit == max_first_digit and num > max_num: # Dacă da, actualizăm variabila max_num cu noul număr max_num = num
print("Datele sunt introduse corect.")
- Afisam rezultatul
print(f"Numărul cu prima cifră maximă este {max_num}.")
</syntaxhighlight>