Тема Межрегиональная им. И. Я. Верченко (криптография)
Многочлены на Верченко
Вспоминай формулы по каждой теме
Решай новые задачи каждый день
Вдумчиво разбирай решения
ШКОЛКОВО.
Готовиться с нами - ЛЕГКО!
Подтемы раздела межрегиональная им. и. я. верченко (криптография)
Решаем задачи

Ошибка.
Попробуйте повторить позже

Задача 1#68241

Пусть x =(x ,...,x )
     1    8  — двоичный вектор длины 8. Обозначим xd  — циклический сдвиг вектора x на d  позиций вправо. Например, если x =(1,0,0,0,0,0,0,0),  то  2
x = (0,0,1,0,0,0,0,0).  При этом считаем, что  0
x = x.  Под суммой векторов x= (x1,...,x4)  и y =(y1,...,y4)  будем понимать вектор

x +y =(x1⊕ y1,x2⊕ y2,x3⊕ y3,x4⊕ y4)

Здесь ⊕ — стандартная операция сложения битов: 0 ⊕0 =1⊕ 1= 0,  0⊕ 1= 1⊕0 =1.  Пусть

       1   4
x= v+ v + v

Найдите d1,...,dn  такие, что при любом исходном векторе v выполняется равенство

v =xd1 + ⋅⋅⋅+ xdn

Источники: Верченко-2023 (см. v-olymp.ru)

Подсказки к задаче

Подсказка 1

Пупупу… Какие-то непонятные векторы, с которыми работать не очень понятно как, да и просто непривычно! На что можно заменить любой вектор, чтобы с этим было удобнее работать?

Подсказка 2

Да, можно заменить любой вектор длины a на многочлен, степени одночленов которого — это числа от 0 до a(включительно)! Подумайте, как можно отобразить операцию циклического сдвига на многочлене?

Подсказка 3

Верно, можно просто умножать все его на одночлены на степень, равную величине сдвига и после этого от каждой степени оставлять только остаток по модулю длины вектора! Тогда какому многочлену соответствует вектор x?

Подсказка 4

Да, это многочлен, который состоит из одночленов со степенями 0, 1, 4. А какое условие должно выполняться, чтобы мы нашли многочлен v?

Подсказка 5

Верно, нужно, чтобы произведение многочлена x на многочлен v равнялось единице(учитывая, что можно заменять степени на остаток по модулю введённой степени многочлена)! Осталось найти такой многочлен v, для которого это выполняется!

Показать ответ и решение

Заметим, что xd+8n = xd  для любого натурального числа n  . Вектору x = (x ,...,x)
     1    8  взаимно однозначно соответствует многочлен

                   7    8
x(t)= x1+ x2t+ ...+ x7t + x8t

Тогда циклический сдвиг вектора x  на d  позиций вправо равносилен умножению многочлена x(t)  на td  и приведению степеней мономов по модулю 8  .

Вектору x =v +v1 +v4  соответствует многочлен x(t)= 1+ t+ t4  . Таким образом, нахождение d ,...,d
 1    n  таких, что v =xd1 +...+ xdn равносильно нахождению многочлена v(t)= td1 +...+ tdn  со свойством x(t)v(t)= 1  (с учётом приведения степеней мономов по модулю 8  ). Найти многочлен v(t)  можно методом неопределённых коэффициентов, но быстрее из следующего алгоритма:

 2          8  2  4    4  8    8
x (t)= 1+t+ t = t, x (t)= t,x (t)= t= 1

Следовательно,

      7     3  4          4 2 4  2   6  7
v(t)= x (t)= x(t)x (t)= (1+t+ t)tt = t +t + t
Ответ:

 v =x2+ x6+ x7

Рулетка
Вы можете получить скидку в рулетке!