Форум программистов, компьютерный форум CyberForum.ru

Передача вместе с сообщением некоторого хеша - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Если каждого консольного процесса существует свой дескриптор буфер экрана, то где именно он находится? http://www.cyberforum.ru/cpp-beginners/thread948497.html
То есть фишка в чём: если мы создадим консольный процесс, а потом ИЗМЕНИМ буфер экрана и сделаем его активным, то чёрта с два мы туда что-нибудь запишем общеизвестными функциям, например system ("dir"): #include <windows.h> #include <stdio.h> using namespace std; int main() { SetConsoleCP(1251);
C++ Кодировка в консоли (на ЕГЭ) В этом году буду писать экзамен, но дело в том, что в visual studio setlocale(LC_ALL,"Rus"); не приводит ни к чему (знаю, что в самой консоли надо настраивать другой шрифт, который поддерживает кириллицу). Из-за такой ерунды могут не зачесть все задания (из-за меня никто не будет настраивать свою консоль, при условии того, что абсолютное большинство пишет на паскале который вроде бы все... http://www.cyberforum.ru/cpp-beginners/thread948490.html
Убрать из слова каждую вторую гласную букву в диапазоне от 8 до 13 буквы C++
тема: текстовые файлы. убрать из слова каждую вторую гласную букву в диапазоне от 8 до 13 буквы.
C++ Файловый ввод-вывод в задаче
Не понимаю как составить вывод данных из файла в задаче (см.ниже), я вообще запутался с вводом выводом, помогите растолковать. Если cout (ostream) выводит текст, почему тогда объект fout (ofstream fout) наоборот вводит текстовую информацию? Эти же оба объекта созданы для вывода информации. Почему все наоборот? Так и должно быть? А насчет задачи, вот мой текст: #include <iostream> #include...
C++ Поиск циклов отрицательной стоимости http://www.cyberforum.ru/cpp-beginners/thread948437.html
Добрый день помогите с написание программы. Суть такова. На вход в программу подается в .txt граф представленный в таблице смежности. допустим перейти от A к B стоит -5 от B к C стоит 2 от C к D стоит -1 от D к A стоит 5 мы обходим граф полным перебором и получаем в данном примере при обходе ABCDA -1 это значит мы нашли цикл который нам нужен
C++ как сложить/умножить/найти большее/найти меньшее/найти средние число привет всем подскажите как сложить/умножить/найти большее/найти меньшее/найти средние число из например 10 введенных чисел, в одной программе.Всем заранее респект. подробнее

Показать сообщение отдельно
Sivilan
6 / 6 / 0
Регистрация: 17.03.2013
Сообщений: 66
04.09.2013, 22:33     Передача вместе с сообщением некоторого хеша
При передаче информационных сообщений по каналам связи часто возникают ошибки, и получается что полученное сообщение отличается от отправленного. Для борьбы с этим применяют различные коды обнаружения ошибок, а также корректирующие коды, позволяющие исправлять наиболее вероятные ошибки. Одним из методов обнаружения ошибок является передача вместе с сообщением некоторого хеша — контрольной суммы, которую можно рассчитать для полученного сообщения и сравнить с контрольной суммой исходного сообщения.
В этой задаче вам необходимо будет реализовать коррекцию ошибок в полученном сообщении с помощью контрольной суммы, которая рассчитывается как полиномиальный хеш. Будем считать, что передается некоторая битовая строка, хранящаяся как двоичное число из n бит. Если пронумеровать биты числа с нуля, начиная с младшего, то полиномиальный хеш рассчитывается по следующей формуле:
h(a) = (a0 + a1t + a2t 2 + ... + ai t i + ... + an − 1t n − 1) mod M, где ai — i -й бит числа.
В этой задаче всегда t = 239, M = 109 + 7.
Принимающая сторона получает, возможно искаженное, сообщение и полиномиальный хеш, рассчитанный для отправленного сообщения. Считается, что сам хеш передается без ошибок. Исправление ошибок происходит по методу наибольшего правдоподобия — необходимо найти сообщение, отличающееся от полученного в минимальном числе бит, и имеющее хеш, равный полученному.
Формат входных данных
Первая строка содержит единственное число K (1 ≤ K ≤ 10) — количество переданных сообщений. Каждая из следующих K строк содержит описание переданного сообщения — три целых числа n (1 ≤ n ≤ 34) — длина сообщения, m (0 ≤ m < 2n ) — число, двоичная запись которого задает битовую строку полученного сообщения и h (0 ≤ h < 109+7) — полученный хеш.
Суммарная длина всех переданных сообщений в одном тесте не превосходит 100.
Формат выходных данных
Для каждого сообщения в отдельной строке необходимо вывести единственное число «−1», если это сообщение невозможно расшифровать, иначе необходимо сначала вывести число d — минимальное количество ошибок и далее в этой же строке d чисел — номера битов, которые были искажены при передаче. Если возможных ответов несколько, выведите любой.
Примеры
Входные данные Выходные данные
3
2 2 239
1 0 1
2 2 238
0
1 0
-1
Идея заключается в том, что необходимо отдельно посчитать хеши для всевозможных вариантов первых n/2 бит сообщения и отдельно для всевозможных вариантов остальных n − n/2 бит сообщения. В каждой половине получится максимум 217 = 131072 вариантов. Поскольку нам необходимо получить сообщение с фиксированным хешом h, то каждому варианту значения хеша для первой половины бит h1 в пару сопоставляется не более одного значения хеша для второй половины бит h2 такое, что h = (h1 + h2) mod M.
Осталось научиться для каждого варианта h1 быстро находить соответствующее значение h2. Для этого можно воспользоваться такими структурами данных, как set в C++ .И, наконец, необходимо из всех найденных пар подходящих значений h1 и h2 выбрать ту, в которой изменилось минимальное число бит по сравнению с принятым сообщением m.Помогите с кодом
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 15:44. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru