eolymp
bolt
Try our new interface for solving problems
Məsələlər

Взлом хеш-функции

Взлом хеш-функции

В некоторых задачах защиты информации используются так называемые \textit{хеш-функции}. Одним из важнейших классов хеш-функций являются так называемые \textit{полиномиальные хеш-функции}. Пусть дана строка \textbf{S = s_1s_2...s_l} состоящая из цифр от \textbf{0} до \textbf{9}. Тогда значение \textit{полиномиальной хеш-функции} \textbf{p}(\textbf{S}, \textbf{x}, \textbf{m}) вычисляется следующим образом \includegraphics{https://static.e-olymp.com/content/ef/ef88028fda6decadf14e04cf0e053e074ad74f46.jpg} (\textbf{a mod b} обозначает от деления числа \textbf{a} на число \textbf{b}). Например, пусть \textbf{S = 0123}, тогда \textbf{p(S, 2, 5) = (0·1+1·2+2·4+3·8) mod 5 = 4}. Одним из способов применения хеш-функций является хранения паролей. Часто бывает так, что пароли приходится хранить в незащищённой таблице базы данных, поэтому вместо них хранят хеш-функции от них. При проверке пароля вычисляется хеш-функция от введённой строки и сравнивается со значением, хранящимся в таблице. Ваша задача состоит в том, чтобы по заданным числам \textbf{x}, \textbf{m}, \textbf{L} и \textbf{v} найти строку \textbf{S} из цифр от \textbf{0} до \textbf{9} длины \textbf{L}, значение полиномиальной хеш-функции \textbf{p(S, x, m)} которой равно \textbf{v}. \InputFile Входной файл содержит четыре целых числа: \textbf{x} (\textbf{x} - простое число, \textbf{5} ≤ \textbf{x} ≤ \textbf{100}), \textbf{m} (\textbf{m} является степенью двойки, \textbf{1} ≤ \textbf{m} ≤ \textbf{256}), \textbf{L} (\textbf{10} ≤ \textbf{L} ≤ \textbf{100}) и \textbf{v} (\textbf{0} ≤ \textbf{v} ≤ \textbf{m-1}). \OutputFile В выходной файл выведите искомую строку или \textbf{NO SOLUTION}, если такой строки не существует.
Zaman məhdudiyyəti 2 saniyə
Yaddaşı istafadə məhdudiyyəti 64 MiB
Giriş verilənləri #1
5 16 10 9
Çıxış verilənləri #1
7432978180