"...напечатает сначала 2, потом - 6" -- это значит a=2 и b=6?
про пятеричные записи ничего не понял... :) И ИМХО к чему такие сложности? И для чего нам комп и программа? Я подправил исходную прогу чтобы она выдавала все числа подходящие по условию
var x,a,b: longint;
begin
for var i := 999 DownTo 100 do begin
a := 0;
b := 1;
x := i;
while x>0 do begin
if x mod 2 > 0 then a := a+1 else b := b+(x mod 5);
x := x div 5;
end;
if (a = 2) and (b = 6) then writeln('x = ', i, ' a = ', a, ' b = ',b);
end;
end.
прога проводит расчет для всх трехзначных чисел от 999 до 100
итого мы видим что максимальное подходящее число это 960
при необходимости прогу можно переделать чтобы она находила только максимальное число.
Меньше чем 3-х основание СС быть не может. (Сама догадайся почему ;-)
Делим:
23 : 3 = 7 ост. 2 — подходит
23 : 4 = 5 ост. 3 — не подходит
23 : 5 = 4 ост. 3 — не подходит
23 : 6 = 3 ост. 5 — не подходит
23 : 7 = 3 ост. 2 — подходит
23 : 8 = 2 ост. 7 — не подходит
23 : 9 = 2 ост. 5 — не подходит
23 : 10 = 2 ост. 3 — не подходит
23 : 11 = 2 ост. 1 — не подходит
23 : 12 = 1 ост. 11 — не подходит
23 : 13 = 1 ост. 10 — не подходит
23 : 14 = 1 ост. 9 — не подходит
23 : 15 = 1 ост. 8 — не подходит
23 : 16 = 1 ост. 7 — не подходит
23 : 17 = 1 ост. 6 — не подходит
23 : 18 = 1 ост. 5 — не подходит
23 : 19 = 1 ост. 4 — не подходит
23 : 20 = 1 ост. 3 — не подходит
23 : 21 = 1 ост. 2 — подходит
23 : 22 = 1 ост. 1 — не подходит
23 : 23 = 1 ост. 0 — не подходит
Далее для всех СС больше 23 остаток будет 23. Следовательно нет смысла их рассматривать.
Итого: 2, 7 и 21.
Better late than never - Лучше поздно чем никогда
Объяснение:
Если четные и нечетные символы зашифрованы разными ключами, то вначале нужно привести их к одному ключу. Известно что разность между k1 и k2 составляет 3 символа. Значит нечетный ключ больше четного на 3. Например если для нечетных символов использовался сдвиг 5, то для четных будет использован сдвиг 2 (потому что 5-3=2).
Что бы привести фразу к одному ключу нужно все четные символы заменить на символы, стоящие на 3 позиции дальше по алфавиту.
W - не трогаем
W- меняем на Z
O - не трогаем
L - меняем на O
Z - не трогаем
I - меняем на L
G - не трогаем
S - меняем на V
O - не трогаем
W - меняем на Z
O - не трогаем
Z - меняем на C
V - не трогаем
F - меняем на I
I - не трогаем
W - меняем на Z
Q - не трогаем
W - меняем на Z
M - не трогаем
Получаем новую фразу:
W Z O O Z L G V O Z O C V I I Z Q Z M
где нечетные и четные символы зашифрованы одним и тем же ключом.
Поскольку в английском алфавите всего 26 букв, то число ключей составляет всего 25 штук, после чего они просто начнут повторятся.
Используя новую полученную фразу и английский алфавит пробуем заменить все буквы на следующие по порядку со сдвигом 1. Получаем текст
XAPPAMHWPAPDWJJARAN - бессмыслица. Тогда пробуем заменить текст со сдвигом на 2 буквы. получим фразу:
YBQQBNIXQBQEXKKBSBO - тоже не имеет смысла.
Сдвиг на 3 и на 4 буквы дает соответственно фразы
ZCRRCOJYRCRFYLLCTCP
ADSSDPKZSDSGZMMDUDQ
что тоже не имеет смысла.
Сдвиг на 5 символов дает фразу
BETTEQLATETHANNEVER - что очень похоже на английские слова (с одной ошибкой).
Делим полученную фразу на слова
BETTEQ LATE THAN NEVER
и приходим к выводу, что зашифровано было английское выражение
Better late than never - Лучше поздно чем никогда.
PS. Единственное, тут есть одна ошибка, вместо слова BETTER после расшифровки получаем слово BETTEQ. Не знаю чем это объяснить. В исходной фразе на этом месте стоит символ I. После приведения к одному коду на этом месте появляется символ L , который стоит на 3 позиции дальше от I. При расшифровке, вместо L получаем символ Q, который стоит на 5 символов дальше L и именно это Q попадает в слово BETTEQ. Скорее всего тут ошибка в условии задачи.