Новая Школа - онлайн-школа подготовки к ЕГЭ
Задача Задача №3751009
А
Аноним
21 октября 2026 16:49 · публичный вопрос
А
Аноним

Реши задание на изображении

Нейросеть21 октября 2026 16:49

Краткий ответ: ищем несовпадающие симметричные пары s[i] и s[n-1-i]. Один обмен может затронуть не более двух таких пар. Поэтому достаточно проверить несколько кандидатов.

Ключевая идея

  1. Несовпадений нет — строка уже палиндром. Можно поменять первый и последний символы: в палиндроме они равны, строка не изменится.
  2. Одна несовпадающая пара (i, j) — при нечётной длине пробуем поменять i с центральным символом и j с центральным.
  3. Две несовпадающие пары (i1, j1) и (i2, j2) — проверяем 4 варианта:
    • i1 ↔ i2
    • i1 ↔ j2
    • j1 ↔ i2
    • j1 ↔ j2

Первый обмен, после которого получается палиндром, выводим. Нумерация в ответе — с 1.

import sys

def solve():
    s = sys.stdin.readline().strip()
    n = len(s)

    bad = []
    for i in range(n // 2):
        j = n - 1 - i
        if s[i] != s[j]:
            bad.append((i, j))

    def good(a, b):
        if a == b:
            return False
        t = list(s)
        t[a], t[b] = t[b], t[a]

        for i in range(n // 2):
            if t[i] != t[n - 1 - i]:
                return False
        return True

    if not bad:
        print(1, n)
        return

    candidates = []

    if len(bad) == 1:
        i, j = bad[0]
        mid = n // 2
        candidates = [(i, mid), (j, mid)]
    else:
        i1, j1 = bad[0]
        i2, j2 = bad[1]
        candidates = [
            (i1, i2),
            (i1, j2),
            (j1, i2),
            (j1, j2),
        ]

    for a, b in candidates:
        if good(a, b):
            if a > b:
                a, b = b, a
            print(a + 1, b + 1)
            return

if __name__ == "__main__":
    solve()

Проверка на примере: cbcaba
Несовпадают пары (1, 6) и (3, 4). Обмен позиций 1 и 4 даёт abccba — палиндром.

Сложность: O(n) по времени, O(n) по памяти.

Обсуждение

2 сообщения
А
Аноним

Отдельно ответ

Нейросеть21 октября 2026 16:58

Ответ: 1 4

(Для строки cbcaba: меняем местами 1-й и 4-й символы → abccba, это палиндром.)

Реши задание на изображении
**Краткий ответ:** ищем несовпадающие симметричные пары `s[i]` и `s[n-1-i]`. Один обмен может затронуть не более двух таких пар. Поэтому достаточно проверить несколько кандидатов. ### Ключевая идея 1. **Несовпадений нет** — строка уже палиндром. Можно поменять первый и последний символы: в палиндроме они равны, строка не изменится. 2. **Одна несовпадающая пара `(i, j)`** — при нечётной длине пробуем поменять `i` с центральным символом и `j` с центральным. 3. **Две несовпадающие пары** `(i1, j1)` и `(i2, j2)` — проверяем 4 варианта: - `i1` ↔ `i2` - `i1` ↔ `j2` - `j1` ↔ `i2` - `j1` ↔ `j2` Первый обмен, после которого получается палиндром, выводим. Нумерация в ответе — с 1. ```python import sys def solve(): s = sys.stdin.readline().strip() n = len(s) bad = [] for i in range(n // 2): j = n - 1 - i if s[i] != s[j]: bad.append((i, j)) def good(a, b): if a == b: return False t = list(s) t[a], t[b] = t[b], t[a] for i in range(n // 2): if t[i] != t[n - 1 - i]: return False return True if not bad: print(1, n) return candidates = [] if len(bad) == 1: i, j = bad[0] mid = n // 2 candidates = [(i, mid), (j, mid)] else: i1, j1 = bad[0] i2, j2 = bad[1] candidates = [ (i1, i2), (i1, j2), (j1, i2), (j1, j2), ] for a, b in candidates: if good(a, b): if a > b: a, b = b, a print(a + 1, b + 1) return if __name__ == "__main__": solve() ``` **Проверка на примере:** `cbcaba` Несовпадают пары `(1, 6)` и `(3, 4)`. Обмен позиций **1** и **4** даёт `abccba` — палиндром. Сложность: `O(n)` по времени, `O(n)` по памяти.