0361 - Cifra 1: Difference between revisions
Pagină nouă: Sursă: [https://www.pbinfo.ro/probleme/361/cifra1] == Cerinţa == Se citește un număr natural '''numar'''. Determinați cel mai mare număr care se poate obține prin eliminarea unei singure cifre din scrierea numărului '''numar'''. == Date de intrare == Programul citește de la tastatură numărul '''numar'''. == Date de ieşire == Programul afișează pe ecran numărul cerut '''numar_dupa_eliminare'''. == Restricții și precizări == * ''' 1 ⩽ numar ⩽ 1.000.00... |
No edit summary |
||
(2 intermediate revisions by the same user not shown) | |||
Line 2: | Line 2: | ||
== Cerinţa == | == Cerinţa == | ||
Se citește un număr natural ''' | Se citește un număr natural '''n'''. Determinați cel mai mare număr care se poate obține prin eliminarea unei singure cifre din scrierea numărului '''n'''. | ||
== Date de intrare == | == Date de intrare == | ||
Programul citește de la tastatură numărul ''' | Programul citește de la tastatură numărul '''n'''. | ||
== Date de ieşire == | == Date de ieşire == | ||
Dacă datele introduse sunt corecte, pe ecran se va afișa '''"Datele introduse sunt corecte."''', apoi programul afișează pe ecran numărul cerut '''m''' care se poate obține prin eliminarea unei singure cifre din scrierea numărului '''n'''. În caz contrar, se va afișa pe ecran mesajul '''"Datele introduse nu sunt corecte."'''. | |||
== Restricții și precizări == | == Restricții și precizări == | ||
* ''' 1 ⩽ | * ''' 1 ⩽ n ⩽ 1.000.000.000''' | ||
== Exemplu == | == Exemplu == | ||
Line 14: | Line 14: | ||
: 423234 | : 423234 | ||
; Ieșire | ; Ieșire | ||
: 43234 | : Datele introduse sunt corecte. | ||
: Cel mai mare număr care se poate obține prin eliminarea unei singure cifre din scrierea numărului 423234 este: 43234 | |||
== Rezolvare == | == Rezolvare == | ||
<syntaxhighlight lang="python" line> | <syntaxhighlight lang="python" line> | ||
#0361 | |||
def verificare_date(n: int) -> bool: | |||
"""Verifică dacă numărul n se află în intervalul [1, 1000000000].""" | |||
return 1 <= n <= 1000000000 | |||
for i in range(len( | def cel_mai_mare_numar_dupa_eliminare(n: int) -> int: | ||
"""Determină cel mai mare număr care se poate obține prin eliminarea unei singure cifre din scrierea numărului n.""" | |||
numar_dupa_eliminare = -1 # inițializăm cu o valoare imposibilă | |||
for i in range(len(str(n))): # parcurgem cifrele numărului | |||
cifra_curenta = str(n)[i] | |||
numar_nou = int(str(n)[:i] + str(n)[i+1:]) # eliminăm cifra curentă | |||
if numar_nou > numar_dupa_eliminare: | |||
numar_dupa_eliminare = numar_nou # actualizăm numărul maxim | |||
return numar_dupa_eliminare | |||
if __name__ == "__main__": | |||
"""Funcția principală.""" | |||
n = int(input("Introduceți un număr natural: ")) | |||
if verificare_date(n): | |||
print("Datele introduse sunt corecte.") | |||
print("Cel mai mare număr care se poate obține prin eliminarea unei singure cifre din scrierea numărului", n, "este:", cel_mai_mare_numar_dupa_eliminare(n)) | |||
else: | |||
print("Datele introduse nu sunt corecte.") | |||
</syntaxhighlight> | </syntaxhighlight> |
Latest revision as of 19:10, 28 April 2023
Sursă: [1]
Cerinţa[edit | edit source]
Se citește un număr natural n. Determinați cel mai mare număr care se poate obține prin eliminarea unei singure cifre din scrierea numărului n.
Date de intrare[edit | edit source]
Programul citește de la tastatură numărul n.
Date de ieşire[edit | edit source]
Dacă datele introduse sunt corecte, pe ecran se va afișa "Datele introduse sunt corecte.", apoi programul afișează pe ecran numărul cerut m care se poate obține prin eliminarea unei singure cifre din scrierea numărului n. În caz contrar, se va afișa pe ecran mesajul "Datele introduse nu sunt corecte.".
Restricții și precizări[edit | edit source]
- 1 ⩽ n ⩽ 1.000.000.000
Exemplu[edit | edit source]
- Intrare
- 423234
- Ieșire
- Datele introduse sunt corecte.
- Cel mai mare număr care se poate obține prin eliminarea unei singure cifre din scrierea numărului 423234 este: 43234
Rezolvare[edit | edit source]
<syntaxhighlight lang="python" line>
- 0361
def verificare_date(n: int) -> bool:
"""Verifică dacă numărul n se află în intervalul [1, 1000000000].""" return 1 <= n <= 1000000000
def cel_mai_mare_numar_dupa_eliminare(n: int) -> int:
"""Determină cel mai mare număr care se poate obține prin eliminarea unei singure cifre din scrierea numărului n.""" numar_dupa_eliminare = -1 # inițializăm cu o valoare imposibilă for i in range(len(str(n))): # parcurgem cifrele numărului cifra_curenta = str(n)[i] numar_nou = int(str(n)[:i] + str(n)[i+1:]) # eliminăm cifra curentă if numar_nou > numar_dupa_eliminare: numar_dupa_eliminare = numar_nou # actualizăm numărul maxim return numar_dupa_eliminare
if __name__ == "__main__":
"""Funcția principală.""" n = int(input("Introduceți un număr natural: ")) if verificare_date(n): print("Datele introduse sunt corecte.") print("Cel mai mare număr care se poate obține prin eliminarea unei singure cifre din scrierea numărului", n, "este:", cel_mai_mare_numar_dupa_eliminare(n)) else: print("Datele introduse nu sunt corecte.")
</syntaxhighlight>