Юный программист Володя решил написать программу, которая занимается шифрованием слов. Шифрование происходит следующим образом: каждая буква слова заменяется на какую-то другую букву алфавита, которая расположена ровно на N символов правее исходной, при этом алфавит "зациклен": за буквой 'Я' идёт буква 'А'. Слово состоит только из букв русского алфавита, нумерация букв в слове начинается с 0. Володя сидел над программой весь вечер, запустил её - и она оказалась рабочей! Однако на следующее утро Володя понял, что не учёл один момент, из-за чего при некоторых значениях N программа не сможет верно зашифровать некоторые слова.
1. Приведите пример такого слова и такого значения N, при котором программа не сможет зашифровать слово.
2. Исправьте Володину ошибку.
Обозначения:
функция length(word) возвращает длину слова word;
функция mod(N, 33) возвращает остаток от деления N на 33;
функция search(alph, word[i]) возвращает номер символа word[i] в строке alph (функция возвращает -1, если символ не найден, нумерация символов в строке начинается с 0).
алг secret_word(цел N, лит word)
нач
лит res := ""
лит alph := ""
лит ALPH := ""
сим c = 'a'
нц для i от 0 до length(word) - 1
если search(ALPH, word[i]) > -1 то
c = ALPH[ search(ALPH, word[i]) + mod(N, 33) ]
всё
если search(alph, word[i]) > -1 то
c = ALPH[ search(alph, word[i]) + mod(N, 33) ]
всё
res := res + c
кц
вывод res
кон
Володя не правильно вернул функцию alph-соответствие между элементами двух множеств — правило, по которому каждому элементу первого соответствует один и только один элемент второго множества. Математическое понятие функции выражает интуитивное представление о том, как одна величина полностью определяет значение другой величины.