3916 - elim m

De la Universitas MediaWiki

Cerința

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

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

Date de ieșire

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

Restricții și precizări

  • 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

Intrare

3452234 4

Ieșire

544

Exemplul 2

Intrare

58435983264732647264912647362498236496324723684 21

Consola

Introduceți numere valide conform restricțiilor.

Rezolvare

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()