2804 - Strncat

From Bitnami MediaWiki
Revision as of 12:04, 23 April 2023 by Adina Timiș (talk | contribs)

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">

  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
  1. citeste cuvantul

s = input("Introduceți cuvântul: ")

  1. citeste numarul de operatii

n = int(input("Introduceți numărul de operații: "))

  1. citeste lista de numere

x = list(map(int, input("Introduceți numerele: ").split()))

  1. 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>