# PBinfo #2804 – strncat – Rezolvare C++

Sursa: Codul lui Andrei
Limbaj: C++
Autor rezolvare: deivid

## Enunț

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

Exemplu:
Intrare

alina
3 
4 3 2 
Ieșire

alinaalinilaal

## Cod sursă C++

```cpp
//0 secunde
#include<bits/stdc++.h>
using namespace std;
int main()
{
    int n,x;
    string s,ss;
    cin>>s>>n;
    for(int i=1;i<=n;i++)
    {
        cin>>x;
        if(x%2)
        {
            ss=s.substr(0,x);
            reverse(ss.begin(),ss.end());
            s+=ss;
        }
        else
        {
            ss=s.substr(0,x);
            s+=ss;
        }
    }
    cout<<s;
}
```

## Resurse

- [Pagina originală](https://codulluiandrei.ro/rezolvari/pbinfo/2804)
- [Sursa C++](https://codulluiandrei.ro/rezolvari/pbinfo/2804/cod.cpp)
- [Sursa pe GitHub](https://raw.githubusercontent.com/codulluiandrei/pbinfo/main/pbinfo-2804/main.cpp)
- [Cursuri de informatică pentru BAC](https://codulluiandrei.ro/academia/info-curs/pachet-cpp/)
