Задача
Дана строка $s$, в которой выделили подстроку, состоящую из символов с $i$-го по $j$-ый включительно (символы строки $s$ нумеруются с единицы) и поменяли местами $i$-ый символ с $j%-ым, %(i + 1)%-ый с %(j — 1)$-ым и так далее (конвертировали подстроку). Выведите строку $s$ после внесенных изменений.
Входные данные
В первой строке содержится строка $s$ длиной не более $1000$ символов, во второй — два числа $i$ и $j$ $\left (i \leqslant j \right).$
Выходные данные
Выведите строку $s$ после внесенных изменений.
Тесты
Входные данные | Выходные данные | |
$zbbg \\ 2 \; 3$ | $zbbg$ | |
$gaqipkajibk \\ 5 \; 6$ | $gaqikpajibk$ | |
$helloworld \\ 5 \; 7 $ | $helloworld$ | |
$rkdobnjfyy \\ 6 \; 3 $ | $rkdobnjfyy$ |
Код программы (c-string)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
#include <iostream> #include <cstring> using namespace std; int main() { char s[1001]; cin >> s; int i, j; cin >> i >> j; for (int b = i - 1, c = j - 1; b < c; b++,c--) { int k = s[b]; s[b] = s[c]; s[c] = k; } cout << s; return 0; } |
Решение задачи (c-string)
Для решения задачи объявим массив, в котором будем хранить входную строку. Далее в цикле обращаем подстроку и выводим строку $s$ после внесенных изменений.
Код программы (string)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
#include <iostream> using namespace std; int main() { string s; cin >> s; int i, j; cin >> i >> j; for (int b = i - 1, c = j - 1; b < c; b++,c--) { int k = s[b]; s[b] = s[c]; s[c] = k; } cout << s; return 0; } |
Решение задачи (string)
Для решения задачи вводим строку $s$. Далее в цикле конвертируем подстроку и выводим строку $s$ после внесенных изменений.
Ссылки
Условие задачи на e-olymp
Код решения на ideone(c-string)
Код решения на ideone(string)