Вопрос задан 17.07.2023 в 10:35. Предмет Информатика. Спрашивает Узенюк Елизавета.

Задача на Python, С любой: На этой неделе на уроках информатики Васе рассказывают про строки.

Вчера Вася узнал, что такое циклический сдвиг: 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
0 0
Перейти к ответам

Ответы на вопрос

Внимание! Ответы на вопросы дают живые люди. Они могут содержать ошибочную информацию, заблуждения, а также ответы могут быть сгенерированы нейросетями. Будьте внимательны. Если вы уверены, что ответ неверный, нажмите кнопку "Пожаловаться" под ответом.
Отвечает Неженцева Анна.

Ответ:

a=int(input())

slovo=input()

count=0

slovo2=slovo[::-1]

if slovo==slovo2:

   count=0

else:

   while slovo!=slovo2:

       if count>=a:

           count=-1

           break

       word=slovo[:1]

       slovo=slovo[1:]

       slovo+=word

       count+=1

print(count)

Объяснение:на Е1 и Е2 подойдет, на е3 нет

0 0
Отвечает нейросеть ChatGpt. Будьте внимательны, ответы нейросети могут содержать ошибочные или выдуманные данные.

Для решения данной задачи можно использовать следующий алгоритм:

  1. Прочитать входные данные: длину строки n и саму строку s.
  2. Инициализировать переменную reversed_string как пустую строку.
  3. Произвести n циклических сдвигов строки s и каждый раз добавлять полученную строку в reversed_string.
  4. Если после n циклических сдвигов reversed_string станет равным исходной строке s, то вернуть значение n в качестве ответа.
  5. Если после всех циклических сдвигов reversed_string не стало равным исходной строке s, то вернуть -1 в качестве ответа.

Вот реализация данного алгоритма на языке Python:

python
n = int(input()) s = input() reversed_string = "" for k in range(n): s = s[1:] + s[0] # Циклический сдвиг строки reversed_string += s if reversed_string == s: print(k + 1) break else: print(-1)

Программа считывает длину строки n и саму строку s. Затем выполняет циклический сдвиг строки s n раз и добавляет результат в reversed_string. Если в процессе циклических сдвигов reversed_string становится равным s, то программа выводит значение k + 1 и останавливается. Если после всех циклических сдвигов reversed_string не становится равным s, программа выводит -1.

0 0

Похожие вопросы

Топ вопросов за вчера в категории Информатика

Последние заданные вопросы в категории Информатика

Задать вопрос