3153 - eliminaren
Cerința
Se citesc de la tastatură un cuvânt s
format din litere mici distincte și un număr natural n
. Să se afișeze pe ecran toate cuvintele care se pot obține din s
eliminând exact n
litere.
Eliminarea se face începând cu literele de la sfârșitul cuvântului, iar ordinea din cuvânt a literelor nu se schimbă (vezi explicația din exemplu).
Date de intrare
Programul citește de la tastatură cuvântul s
și numărul n
.
Date de ieșire
Programul va afișa pe ecran pe rânduri separate cuvintele care se pot obține din s
eliminând exact n
litere.
Restricții și precizări
- Cuvântul
s
are cel mult20
de litere - Cuvântul
s
este format din litere mici distincte 1 <= n <
numărul de litere ale luis
Exemplu:
Intrare
dorel 2
Ieșire
dor doe dol dre drl del ore orl oel rel
Explicație
Din cele 5
litere se elimina două, astfel:
dor
– se elimina a 4
-a si a 5
-a litera
doe
– se elimina a 3
-a si a 5
-a litera
dol
– se elimina a 3
-a si a 4
-a litera
dre
drl
del
ore
orl
oel
– se elimina prima si a 3
-a litera
rel
– se elimina prima si a 2
-a litera
Rezolvare
def afisare(s, x, n, c):
rezultat = ''.join(s[x[i] - 1] for i in range(1, n - c + 1))
print(rezultat)
def bectreching(k, s, x, n, c):
for i in range(x[k - 1] + 1, n + 1):
x[k] = i
if k < n - c:
bectreching(k + 1, s, x, n, c)
else:
afisare(s, x, n, c)
def verifica_restrictii(s, c):
if len(s) > 20 or not s.islower() or len(s) != len(set(s)) or not (1 <= c < len(s)):
return False
return True
def main():
intrare = input().strip().split()
s = intrare[0]
c = int(intrare[1])
if not verifica_restrictii(s, c):
print("Datele nu corespund restrictiilor impuse")
return
n = len(s)
x = [0] * (n + 1)
bectreching(1, s, x, n, c)
if __name__ == "__main__":
main()