3916 - elim m

From Bitnami MediaWiki

Cerința[edit | edit source]

Scrieți un program care citește două numere naturale n și m și care afișează cel mai mare număr care se poate obține eliminând din n exact m cifre, unde m este mai mic decât numărul de cifre ale lui n. Cifrele rămase în n nu-și pot schimba ordinea.

Date de intrare[edit | edit source]

Programul citește de la tastatură numerele n și m.

Date de ieșire[edit | edit source]

Programul va afișa pe ecran numărul x, reprezentând valoarea cerută.

Restricții și precizări[edit | edit source]

  • n are cel mult 17 cifre.
  • m este mai mic decât numărul de cifre ale lui n.
  • m este număr nenul.

Exemplul 1[edit | edit source]

Intrare

3452234 4

Ieșire

544

Exemplul 2[edit | edit source]

Intrare

58435983264732647264912647362498236496324723684 21

Consola

Introduceți numere valide conform restricțiilor.

Rezolvare[edit | edit source]

<syntaxhighlight lang="python3" line="1"> def valideaza_restricții(n, m):

   return 0 < m < len(str(n)) <= 17 and n >= 0

def cel_mai_mare_numar(n, m):

   cifre = [int(cifra) for cifra in str(n)]
   cifre.sort(reverse=True)
   cifre = cifre[:-m]
   rezultat = int(.join(map(str, cifre)))
   return rezultat

def main():

   try:
       n = int(input("Introduceți n: "))
       m = int(input("Introduceți m: "))
       if not valideaza_restricții(n, m):
           print("Introduceți numere valide conform restricțiilor.")
           return
       if len(str(n)) > 17:
           print("Numărul introdus depășește lungimea maximă admisă de 17 cifre.")
           return
       rezultat = cel_mai_mare_numar(n, m)
       print(f"Cel mai mare număr obținut eliminând exact {m} cifre din {n} este: {rezultat}")
   except ValueError:
       print("Introduceți numere valide.")

if __name__ == "__main__":

   main()

</syntaxhighlight>