В
Все
Б
Биология
Б
Беларуская мова
У
Українська мова
А
Алгебра
Р
Русский язык
О
ОБЖ
И
История
Ф
Физика
Қ
Қазақ тiлi
О
Окружающий мир
Э
Экономика
Н
Немецкий язык
Х
Химия
П
Право
П
Психология
Д
Другие предметы
Л
Литература
Г
География
Ф
Французский язык
М
Математика
М
Музыка
А
Английский язык
М
МХК
У
Українська література
И
Информатика
О
Обществознание
Г
Геометрия
Доминатр
Доминатр
25.08.2022 15:38 •  Информатика

На этой неделе на уроках информатики васе рассказывают про строки.

вчера вася узнал, что такое циклический сдвиг:

k-й циклический сдвиг строки – это строка, полученная перестановкой первых k символов строки в её конец. в частности, 0-й циклический сдвиг строки – это сама строка.

и он написал программу, которая умеет перемещать первый символ строки в её конец k раз, получая таким образом k-й циклический сдвиг строки.

сегодня васе нужно реализовать разворот строки. но у васи тренировка. ему некогда писать новые сложные программы. поэтому он задался вопросом:

можно ли циклическими сдвигами развернуть строку?

своим друзьям вася узнал, на какой строке (да, всего одной) будет тестировать его программу учитель, у которого нет времени рецензировать код каждого ученика. поэтому вопрос :

можно ли циклическими сдвигами развернуть строку s?

ему ответить на этот вопрос.

формат входных данных

первая строка содержит одно целое число n (1≤n≤3⋅105) – длина строки s.

во второй строке – сама строка s, на которой будет тестировать программу васи учитель. состоит строка s только из строчных латинских букв.

формат выходных данных

если строку нельзя развернуть циклическими сдвигами, то выведите число −1. в противном случае выведите такое целое число k (0≤k
пояснение к примеру

0-й циклический сдвиг строки s равен abac.

1-й циклический сдвиг строки s равен baca.

2-й циклический сдвиг строки s равен acab.

3-й циклический сдвиг строки s равен caba.

развёрнутая строка s равна caba.

единственное подходящее k равно трём.

sample input:

4
abac
sample output:

3
напишите программу. тестируется через stdin → stdout
time limit: 3 секунды
memory limit: 256 mb

Показать ответ
Ответ:
alinabugajcuk38
alinabugajcuk38
25.01.2020 22:40
1.
var
  s: string;
  i, count: integer;
begin
  writeln('Vvedite stroky: ');
  readln(s);
  for i := 1 to length(s) - 2 do
    if copy(s, i, 3) = 'abc' then
      count := count + 1;
  writeln('Kol-vo: ', count);
end.
2.
var
  s1, s2: string;
  i, len1, len2: integer;
begin
  writeln('Vvedite stroky 1: ');
  readln(s1);
  writeln('Vvedite stroky 2: ');
  readln(s2);
  len1 := length(s1);
  len2 := length(s2);
  if len1 > len2 then writeln('1 stroka dlinnee')
  else if len1 < len2 then writeln('2 stroka dlinnee')
  else writeln('dlini strok ravnie')
end.
3.
var
  s1, s2, s3: string;
begin
  writeln('Vvedite stroky 1: ');
  readln(s1);
  writeln('Vvedite stroky 2: ');
  readln(s2);
  s3 := s1[1] + s1[2] + s2[1] + s2[2];
  writeln('Novaja stroka: ', s3);
end.
0,0(0 оценок)
Ответ:
LIONVIP
LIONVIP
03.04.2022 10:09

#include <iostream>

#include <string>

bool is_palindrome(const std::string& s) {

   std::string r(s);

   std::reverse(r.begin(), r.end());

   return s == r;

}

int main() {

   std::string s1,s2;

   setlocale(LC_ALL, "Russian");

   std::cout << "Введите число 1: ";

   std::getline(std::cin, s1);

   std::cout << "Введите число 2: ";

   std::getline(std::cin, s2);

   if (is_palindrome(s1)|| is_palindrome(s2))

       std::cout << "Одно из введенных чисел является палиндромом " << std::endl;

   else

       std::cout << "Ни одно из введенных чисел не является палиндромом " << std::endl;

   return 0;

}

0,0(0 оценок)
Популярные вопросы: Информатика
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота