Сверь числа и знаки с фото.
Орбита Челлендж
[Рисунок: баннер сверху — ноги робота в коридоре]
Робот добирается до резервного сервера.
На экране вместо координат только:
А6 Г1
— Похоже на числа, но какие-то странные, — говорит Смыслик. — Это шестнадцатеричная запись чисел, — отвечает Эврика.
Появляется сообщение профессора: «KRAVDR просматривает обычные координаты. Поэтому каждый байт я дополнительно инвертировал.»
Справка
Один шестнадцатеричный символ — четыре бита.
Hex Бит 0 0000 1 0001 2 0010 3 0011 4 0100 5 0101 6 0110 7 0111 8 1000 9 1001 A 1010 B 1011 C 1100 D 1101 E 1110 F 1111
При шифровании каждый бит заменен: 0→1, 1→0.
После дешифрования: • первые 4 бита первого байта — X; • последние 4 — Y; • второй байт должен равняться X·Y.
Введите три числа через разделенные пробелами: X Y ПРОВЕРКА где ПРОВЕРКА=1, если контроль совпал, и 0 — если нет.
В качестве ответа введите три числа через пробел: сначала X, затем Y, затем результат проверки (1 или 0).
Пример ответа: 6 12 0
Ответ: 5 9 0 — то есть \(X=5\), \(Y=9\), контрольная проверка не сошлась.
Как это получается
1. Что вообще на экране. Строка А6 Г1 — это два байта в шестнадцатеричной записи, по два hex-символа на байт (один hex-символ = 4 бита = полубайт).
2. Расшифровка = та же инверсия. Профессор шифровал, меняя каждый бит на противоположный (\(0\to1\), \(1\to0\)), значит для расшифровки делаем то же самое. Для полубайта это удобно считать так: \[ \text{было} = 15 - \text{показано на экране} \] потому что \(1111_2 = 15\).
3. Первый байт — это будущие X и Y.
A\(= 1010_2 \to 0101_2 = 5\) — первые 4 бита первого байта, это \(X\);6\(= 0110_2 \to 1001_2 = 9\) — последние 4 бита, это \(Y\).
\[ X = 15-10 = 5,\qquad Y = 15-6 = 9 \]
4. Второй байт. Его последний символ — 1:
\[
1 = 0001_2 \to 1110_2 = 14 = E_{16}
\]
Значит расшифрованный второй байт оканчивается на E (если взять пару как E1, получим \(0001\,1110_2 = 1E_{16} = 30\)).
5. Контроль.
\[
X\cdot Y = 5\cdot 9 = 45 = 2D_{16}
\]
Нужный второй байт должен оканчиваться на D, а он оканчивается на E (30 ≠ 45). Контроль не совпал → последнее число \(0\).
Обратная проверка. Зашифруем «правильный» байт \(45 = 2D_{16}\): \(15-2 = 13 = D\), \(15-13 = 2\) — на экране должно было бы стоять D2. Стоит не D2, значит проверка действительно провалена.
Первый символ второй пары на фото размыт (похож на
Г,Еили7), но на ответ это не влияет: младший полубайт после расшифровки всё равно \(E\), а для совпадения нужен \(D\).
Правило для похожих заданий: расшифруй каждый nibble как \(15-n\), собери из двух nibble байт (\(16\cdot\text{старший} + \text{младший}\)), возьми X и Y из первого байта и сравни \(X\cdot Y\) со вторым байтом — совпало → 1, нет → 0.