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 mult17
cifre.m
este mai mic decât numărul de cifre ale luin
.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()