fbpx

Problema #2804 – strncat – Rezolvari PBInfo

de Mihai-Alexandru

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 
#include <bits/stdc++.h>

using namespace std;

char s[1000001];

int main()
{
    cin >> s;
    int n;
    cin >> n;
    int x;
    for(int i = 1 ; i <= n ; ++i)
    {
        cin >> x;
        if(x % 2 == 0)
        {
                strncat(s , s , x);
        }
        else
        {
            int l = 0;
            char d[1001];
            for(int j = x - 1 ; j >= 0 ; --j)
                d[l]=s[j] , l++;
            strncat(s , d , x);
        }
    }
    cout << s;
    return 0;
}
Comentarii

S-ar putea sa iti placa