1.Для кодирования последовательности символов, состоящих из бук В, О, Л, К, используется неравномерный двоичный код, который удовлетворяет условию
Фано. При этом для буквы В используется код 1, а для буквы О – код 00.
Требуется определить наименьшую возможную суммарную длину всех кодовых
слов указанных букв.
2. Для кодирования последовательности символов, состоящих из бук З, А, Я, Ц,
используется неравномерный двоичный код, который удовлетворяет условию
Фано. При этом для буквы З используется код 0, а для буквы А – код 11.
Требуется определить наименьшую возможную суммарную длину всех кодовых
слов указанных букв.
3. По каналу связи передаются сообщения, содержащие только четыре буквы: A, B,
C, D. Для передачи используется неравномерный двоичный код, допускающий
однозначное декодирование. Для букв A, B, C используются такие кодовые
слова: A: 001011, B: 100110, C: 110010. Требуется определить наименьшее
кодовое слово для буквы D, которое будет удовлетворять условию Фано. Если
таких слов несколько, то необходимо указать слово, код которого будет иметь
наименьшее числовое значение.
55:5=11
365:11≈33(34) берём "34", чтобы перехлестнуть 365.
Так как 11-ый член является замыкающим (перехлёстывающим 365), тогда смотрим по ближайшим:
34*10=340 (340+34=374) - подходит, но это не максимум!
365 mod 10= 36, а это значит, что последующий член будет больше 365, а именно 395.
В задании сказано, что d должно быть максимальным, а "34" - это допустимое, но не максимально число, удовлетворяющее условию, даже минимальное (по результату).
Проверка:
34*11=374, значит, когда на экране выведется s:=340, n:=50, то, зайдя по следующему циклу, получится, что s:= 374, n:=55. На следующий цикл программа не пойдёт.
ответ: d=34.
#include<iostream>
#include<iomanip>
#define _USE_MATH_DEFINES
#include<cmath>
using namespace std;
int main()
{
double a, b, c, alfa, beta, gamma;
cout <<"a="; cin >> a;
cout <<"b="; cin >> b;
cout <<"c="; cin >> c;
if (a+b>c && a+c>b && b+c>a)
{
alfa = acos((b*b+c*c-a*a)/(2*b*c))*180/M_PI;
beta = acos((a*a+c*c-b*b)/(2*a*c))*180/M_PI;
gamma = acos((a*a+b*b-c*c)/(2*a*b))*180/M_PI;
cout <<"Angles in degrees:\n";
cout <<setprecision(3)<<fixed<< "alfa=" << alfa << " beta=" << beta << " gamma=" << gamma << endl;
}
else cout << "Triangle absent\n";
system("pause");
return 0;
}