0361 - Cifra 1: Difference between revisions

From Bitnami MediaWiki
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
Line 2: Line 2:


== Cerinţa ==
== 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'''.
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 '''numar'''.
Programul citește de la tastatură numărul '''n'''.
== Date de ieşire ==
== Date de ieşire ==
Programul afișează pe ecran numărul cerut '''numar_dupa_eliminare'''.
Dacă datele introduse sunt corecte, pe ecran se va afișa '''"Datele introduse sunt corecte."''', apoi programul afișează pe ecran numărul cerut '''numar_dupa_eliminare'''. Î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 ⩽ numar ⩽ 1.000.000.000'''
* ''' 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>


numar = input().strip()
def verificare_date(n: int) -> bool:
numar_dupa_eliminare = -1
    """Verifică dacă numărul n se află în intervalul [1, 1000000000]."""
    return 1 <= n <= 1000000000


for i in range(len(numar)):
def cel_mai_mare_numar_dupa_eliminare(n: int) -> int:
    cifra_curenta = numar[i]
    """Determină cel mai mare număr care se poate obține prin eliminarea unei singure cifre din scrierea numărului n."""
    numar_nou = int(numar[:i] + numar[i+1:])  
    numar_dupa_eliminare = -1 # inițializăm cu o valoare imposibilă
    if numar_nou > numar_dupa_eliminare:
    for i in range(len(str(n))): # parcurgem cifrele numărului
        numar_dupa_eliminare = numar_nou
        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.")


print(numar_dupa_eliminare)


</syntaxhighlight>
</syntaxhighlight>

Revision as of 19:04, 28 April 2023

Sursă: [1]

Cerinţa

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

Programul citește de la tastatură numărul n.

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 numar_dupa_eliminare. În caz contrar, se va afișa pe ecran mesajul "Datele introduse nu sunt corecte.".

Restricții și precizări

  • 1 ⩽ n ⩽ 1.000.000.000

Exemplu

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

<syntaxhighlight lang="python" line>

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>