Так как у нас есть конечний результат, операции делаем с конца:
3) 01y2pphaaryeew8n = n8weeyraahpp2y10
2)n8weeyraahpp2y10 =8newyearhappy201
1)8newyearhappy201 = happy2018newyear
По моему такая задача уже была. Ну ладно
1. Половина детей любит пирожное 52/2=26
2. Мы знаем, что 20 детей любит либо пирожное, либо пирожное и мороженое. Прибавим их к тем кто любит только пирожное 20+26=46
3. Оталось из всего количества детей вычесть полученный результат 52-46=6
Ответ: 6 - детей любит мороженое
Если нужно выбрать из вариантов, достаточно проверить, что код префиксный и найти общую длину сообщения в каждом случае.
1) <span>✔ префиксный
длина А: 1, длина Б: 2, длина В: 3, длина Г: 3
Длина сообщения: 10 * 1 + 5 * 2 + 20 * 3 + 5 * 3 = 10 + 10 + 60 + 15 = 95 бит
2) </span><span>✔ префиксный
длины кодовых слов: 2
Длина сообщения: (10 + 5 + 20 + 5) * 2 = 40 * 2 = 80 бит
3) </span><span>✘ </span><span>не префиксный (11 - префикс 111)
4)</span> ✔ префиксный
длина А: 2, длина Б: 3, длина В: 1, длина Г: 3
Длина сообщения: 10 * 2 + 5 * 3 + 20 * 1 + 5 * 3 = 20 + 15 + 20 + 15 = 70 бит
Наиболее оптимальный код 4).
Если бы нужно было бы найти какое-нибудь оптимальное префиксное кодирование, можно было бы построить код Хаффмана.
Выписываем частоты символов, а затем объединяем наименее часто встречающиеся символы, почлучая кодовое дерево.
А - 10, Б - 5, В - 20, Г - 5
А - 10, (БГ) - 10, В - 20
(А(БГ)) - 20, В - 20
(В(А(БГ)) - 40
Если в этой записи есть (XY), то к коду любой буквы из X приписываем слева 0, для любого символа из Y - 1. Начинаем с пустых кодов:
(БГ) -> Б: 0, Г: 1
(А(БГ)) -> А: 0, Б: 10, Г: 11
(В(А(БГ)) -> В: 0, А: 10, Б: 110, Г: 111.
Доказано, что такой код будет оптимальным.
<em />
1) 473, 2) 71,3125 3) 40420
2. в 2: 111001101011
в 8: 7153
в 16: e6b
Реализация такова:
F = x(сначала 5.2) + ln^2(b[i] * x + 3.1).
В этом выражении сначала вычитается квадрат натурального логарифма от всех элементов вектора, затем прибавляем x(5.2 изначально) и выводим. И так на каждой итерации.
#include <iostream>
#include <vector>
#include <cmath>
int main()
{
std::vector<float> B(8);
float
tmp,
sum = 0;
for(int i = 0; i < 8; i++)
{
std::cin >> tmp;
B.push_back(tmp);
}
for(auto X = 5.2f; X < 8.3f; X += 0.75f)
{
for(const auto& i : B)
sum += pow(log(i*X + 3.1f), 2);
std::cout << "F при x = " << X << " равно = " << X+sum << std::endl;
}
return 0;
}