2804 - Strncat: Difference between revisions
Adina Timiș (talk | contribs) Pagină nouă: ==Cerința== Pentru un cuvânt format din litere mici ale alfabetului englez s și un număr natural x mai mic sau egal cu lungimea cuvântului, definim următoarea operație: *dacă x este par, la s se vor adăuga primele sale x litere, în ordinea din șir; *dacă x este impar, la s se vor adăuga primele sale x litere, în ordinea inversă din șir. Se dă un cuvânt s și un șir de n numere naturale x[1], x[2], …, x[n]. Se aplică succesiv operația definită mai sus... |
Adina Timiș (talk | contribs) No edit summary |
||
Line 29: | Line 29: | ||
:Datele de intrare nu corespund restricțiilor impuse. | :Datele de intrare nu corespund restricțiilor impuse. | ||
==Rezolvare== | ==Rezolvare== | ||
<syntaxhighlight lang="python" line=""> | <syntaxhighlight lang="python" line="1"> | ||
#2804 - Strncat | #2804 - Strncat | ||
def operatie(s, x): | |||
# verifica daca x este par | # verifica daca x este par | ||
if x % 2 == 0: | if x % 2 == 0: | ||
Line 41: | Line 41: | ||
return s | return s | ||
# citeste cuvantul | |||
s = input("Introduceți cuvântul: ") | |||
# citeste numarul de operatii | |||
n = int(input("Introduceți numărul de operații: ")) | |||
# citeste lista de numere | |||
x = list(map(int, input("Introduceți numerele: ").split())) | |||
# verificarea dimensiunii listei x | |||
if len(x) != n: | |||
print("Datele de intrare nu corespund restricțiilor impuse.") | |||
else: | |||
# parcurge lista de numere si aplica fiecare operatie pe rand | # parcurge lista de numere si aplica fiecare operatie pe rand | ||
for i in x: | for i in x: | ||
Line 61: | Line 59: | ||
else: | else: | ||
print("Datele de intrare nu corespund restricțiilor impuse.") | print("Datele de intrare nu corespund restricțiilor impuse.") | ||
break | |||
else: | |||
print("Datele de intrare corespund restricțiilor impuse.") | |||
if __name__ == '__main__': | |||
print("Cuvântul este:", s) | print("Cuvântul este:", s) | ||
</syntaxhighlight> | </syntaxhighlight> |
Revision as of 12:04, 23 April 2023
Cerința
Pentru un cuvânt format din litere mici ale alfabetului englez s și un număr natural x mai mic sau egal cu lungimea cuvântului, definim următoarea operație:
- dacă x este par, la s se vor adăuga primele sale x litere, în ordinea din șir;
- dacă x este impar, la s se vor adăuga primele sale x litere, în ordinea inversă din șir.
Se dă un cuvânt s și un șir de n numere naturale x[1], x[2], …, x[n]. Se aplică succesiv operația definită mai sus între șirul s și numerele din șir, în ordinea acestora. Afișați șirul s după aplicarea acestor operații.
Date de intrare
Programul citește de la tastatură cuvântul s, numărul n și cele n elemente ale șirului.
Date de ieșire
Programul va afișa pe ecran cuvântul rezultat.
Restricții și precizări
- lungimea inițială a cuvântului este de cel mult 1000 de caractere;
- 1 ≤ n ≤ 1000;
- fiecare element al șirului dat va fi mai mic sau egal cu minimul dintre 1000 și lungimea curentă a șirului s;
Exemplul 1
- Intrare
- alina
- 3
- 4 3 2
- Ieșire
- Datele de intrare corespund restricțiilor impuse.
- alinaalinilaal
Exemplul 2
- Intrare
- alina
- 0
- 0
- Ieșire
- Datele de intrare nu corespund restricțiilor impuse.
Rezolvare
<syntaxhighlight lang="python" line="1">
- 2804 - Strncat
def operatie(s, x):
# verifica daca x este par if x % 2 == 0: # adauga primele x caractere din s la sfarsitul lui s s += s[:x] else: # adauga primele x caractere din s, dar inversate, la sfarsitul lui s s += s[:x][::-1] return s
- citeste cuvantul
s = input("Introduceți cuvântul: ")
- citeste numarul de operatii
n = int(input("Introduceți numărul de operații: "))
- citeste lista de numere
x = list(map(int, input("Introduceți numerele: ").split()))
- verificarea dimensiunii listei x
if len(x) != n:
print("Datele de intrare nu corespund restricțiilor impuse.")
else:
# parcurge lista de numere si aplica fiecare operatie pe rand for i in x: # verificarea restricțiilor if n >= 1 and n <= 1000 and len(s) <= 1000 and i <= 1000: s = operatie(s, i) else: print("Datele de intrare nu corespund restricțiilor impuse.") break else: print("Datele de intrare corespund restricțiilor impuse.")
if __name__ == '__main__':
print("Cuvântul este:", s)
</syntaxhighlight>