Задача
На каждом удаве из стаи написано его имя. Имя удава написано маленькими латинскими буквами от головы к хвосту. Все удавы из стаи ползут друг за другом, ведь так легче ползти. Иногда вожак даёт команду «Реверс». В этом случае каждый удав стаи разворачивается, и стая начинает ползти в противоположном направлении. Название стаи можно прочитать, если читать от головы удава, ползущего первым, к хвосту последнего. При этом название может измениться после команды «Реверс». Имена же удавов не меняются.
Входные данные
Первая строка содержит одно число $N (1 ≤ N ≤ 100000)$ – количество удавов. В следующих $N$ строках написаны имена удавов в том порядке, в котором они ползут. Имя удава – строчка, содержащая не более $10$ маленьких латинских букв.
Выходные данные
Выведите единственную строку – название стаи после команды «Реверс».
Тесты
Входные данные | Выходные данные |
3 abc def ghi |
ghidefabc |
3 zxcgh i db |
dbizxcgh |
4 mn kjl iu ghj |
ghjiukjlmn |
8 kdh jg lqwoc kfxvk iduhx nsh s kjwyv |
kjwyvsnshiduhxkfxvklqwocjgkdh |
Код программы (string)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
#include <iostream> #include <string.h> using namespace std; int main () { int N; cin >> N; string flock[N]; for (int i = 0; i < N; i++) cin >> flock[i]; for (int i = N - 1; i >= 0; i--) cout << flock[i]; return 0; } |
Решение задачи (string)
Записываем каждого удава в одномерный массив flock типа string размера N, а затем выводим его, начиная с конца.
Код программы (c-string)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
#include <iostream> #include <cstring> using namespace std; #define boa_name_size 11 int main() { int N; cin >> N; char **flock = new char *[N]; // Создаем массив в N строк for (int i = 0; i <= N; i++) flock[i] = new char[boa_name_size]; // Под каждую строку выделяем массив в boa_name_size символов for (int i = 0; i <= N; i++) cin.getline(flock[i], boa_name_size); for (int i = N; i > 0; i--) cout << flock[i]; return 0; } |
Решение задачи (c-string)
Записываем каждого удава в динамический массив
flock типа
char размера $N$ $\times$
boa_name_size, где
boa_name_size – это константа, размером в $11$ символов, которую определяем с помощью директивы
#define в начале программы. Не $10$, а $11$ потому что в нуль-терминированных строках (c-string) последний символ – символ конца строки
'\0'.
Далее выводим наш массив с последней строки до первой.
Ссылки
Условие задачи на e-olymp.com
Решение задачи на ideone.com (string)
Решение задачи на ideone.com (c-string)
Попробуйте добавить еще один вариант кода для С-строк.
Игорь Евгеньевич, добавил.
Число 11, встречающееся в разных местах программ считается плохой практикой и называется Magic Number. Лучше определить его при помощи инструкции препроцессора define в начале программы.
И нужно объяснить, почему длина 11, если букв не более 10.
Игорь Евгеньевич, спасибо, все сделал.