В данном случае формула означает что мы каждый символ заменяем на другой, идущий на k позиций впереди. Букв в латинском алфавите 26, значит чтобы "закруглиться" после буквы Z, мы берем остаток от деления на 26, чтобы после последней буквы шла первая.
Логика следующая.
У нас есть задание - преобразовать строку по формуле ci = (pi + k) % 26, где % - остаток от деления.
Очевидно что результат работы формулы - некоторое чисто от 0 до 25 (остаток от деления на 26 может быть от 0 до 25).
Следовательно входная строка так же должна представлять из себя последовательность значений от 0 до 25.
Чтобы строго формально решить задачу, нам нужно входную строку, например "ABC" рассмотреть как последовательность кодов 00, 01, 02.
В ASCII таблице символов латинский алфавит идет по порядку, начиная с кода 65, то есть наша строка - это 65, 66, 67.
Для того чтобы получить последовательность 00, 01, 02, мы вычитаем из каждого символа 65.
После того как мы прибавили k и взяли остаток от деления на 26, мы должны как-то вывести результат.
Для этого приводим результат к читаемому виду (вспоминаем ASCII) и добавляем 65, чтобы вместо, например 22, 23, 24 получить 87, 88, 89, то есть WXY (k=22).
Можно в общем-то, придется прибавлять только не k, а некоторый пересчитанный коэффициент, причем для больших и маленьких букв это будут разные коэффициенты. Однако после взятия остатка все-равно придется добавлять 'A' или 'a'.
Или еще проще - codepen.io/anon/pen/BKJadJ?editors=1111
Просто ниже идет модификация переменной.
В лог сначала выводится массив из 4 объектов, а при его раскрытии - показывается текущее состояние, уже измененное.
Не могу ничего сказать по цене, извините.
Если ваша цель просто в подстановке адреса, то есть уже готовые сервисы, в том числе и бесплатные типа kladr-api.ru/examples
Если у вас цель - конкретно GPON, то либо действительно парсить, либо скопировать форму и в своих скриптах делать запросы к МГТС, пока не забанят по IP адресу.
Ок, но вы все же присмотритесь к КЛАДР, все же всероссийский классификатор адресов.
То, чего в нем нет - не существует (шутка, конечно).
При желании можно и указанный сайт распарсить, только нужно поработать немного - перебирать сначала буквы по одной, если выдача ограничена - то потом по две - "аа", "аб", "ав"...