Для кодирования некоторой последовательности, состоящей из букв А, Б, В, Г, Д, Е, Ж, З, И, Й. решили использовать неравномерный двоичный код, удовлетворяющий условию Фано. Для букв А, Б, В, Г, Д, Е, Ж, З, И использовали соответственно кодовые слова 00, 111, 1000, 1001, 1010, 1100, 1101, 010, 011. Укажите кратчайшее возможное кодовое слово для буквы Й, при котором код будет допускать однозначное декодирование. Если таких кодов несколько, укажите код с наименьшим числовым значением.
using namespace std;
double val, p;
//вводимые параметры значения функции и степень полинома
//x - значение функции
//res - значение, которое изменяется в процессе рекурсии по схеме Горнера
//s - рассматриваемая текущая степень x
double rec(double x, double res, double s)
{
if (s == 0.0)
return res;
return rec(x, x * res + s - 1, s - 1);
}
int main(){
cin >> val >> p;
//старший коэффициент в схеме Горнера сначала сносится вниз,
//поэтому его передаем в качестве начального параметра для результата
cout << fixed << rec(val, p, p) << endl;
return 0;
}