Блог пользователя Sergio86

Автор Sergio86, история, 10 месяцев назад, По-русски

Задача 1.

Задана строка S. Требуется вычислить количество различных строк, которые можно получить из заданной путем обмена двух символов, стоящих на различных позициях.

Input.txt: abacaba Output.txt: 15

Задача 2.

Даны две строки A и B равной длины, состоящие из строчных английских букв. Требуется из второй строки получить первую, выполнив два следующих действия: 1) К строке B применяется шифр Цезаря, то есть все буквы циклически сдвигаются на фиксированный шаг D назад. Например, при D = 3, буква «g» превращается в «d», а «b» – в «y». 2) Первые K символов строки B перемещаются в конец строки, что соответствует её циклическому сдвигу на K позиций влево.

Требуется определить значения K и D, необходимые для решения данной задачи.

Input.txt: 3 abc fde Output.txt: Success 1 3

Input.txt: 3 cbc cbd Output.txt: Impossible

Input.txt: 1 y b Output.txt: Success 0 3

  • Проголосовать: нравится
  • -4
  • Проголосовать: не нравится

»
10 месяцев назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

1я $$$\sum_i i - cnt_{c_i} $$$, $$$cnt_{с}$$$ = количество символов c на текущий момент

  • »
    »
    10 месяцев назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится

    Например, babab Сумма = (1 — 1) + (2 — 1) + (3 — 2) + (4 — 2) + (5 — 3) = 7 Правильный ответ: 10

    • »
      »
      »
      10 месяцев назад, # ^ |
      Rev. 5   Проголосовать: нравится 0 Проголосовать: не нравится

      если в парах (i, j) j>i, нумерация с 0 (т.к. первая буква = 0 пар), то для babab:

      b=+0
      a=+1 (0,1)
      b=+1 (1,2)
      a=+2 (0,3), (2,3)
      b=+2 (1,4), (3,4)
      

      какие ещё 4 пропущены?

      для abacaba кстати 14 получилось. Я считал что можно 1 раз менять, можно сколько угодно? Тогда если исходную посчитать будет 15, но в babab 10 не выходит всё равно

      • »
        »
        »
        »
        10 месяцев назад, # ^ |
        Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится

        Спасибо. Правильно понимаю? Например: abcde индексация: 0 1 2 3 4 Тогда: для a = 0 — 0, для b = 1 — 0, для c = 2 — 0, для d = 3 — 0, для e = 4 — 0 Итого: 10 + 1(исходная) = 11

        Например: abacaba индексация: 0 1 2 3 4 5 6 Тогда: для a = 0 — 0, для b = 1 — 0, для a = 2 — 1, для c = 3 — 0, для a = 4 — 2, для b = 5 — 1, для a = 6 — 3 Итого: 14 + 1(исходная) = 15

        • »
          »
          »
          »
          »
          10 месяцев назад, # ^ |
            Проголосовать: нравится 0 Проголосовать: не нравится

          Нужно нормальное условие задачи, если нужно сделать ровно 1 замену, то исходную строку можно получить если поменять 2 одинаковые буквы. Если все разные то после 1й замены будут разные строки, их как раз sum(0..n — 1). Если есть дубли, то просто вычитаем их

»
10 месяцев назад, # |
Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится

ты крутой оч