Так как язык не указан, приведу пример на SWI-Prolog.
Код:
read_int(Int) :- read(Int), integer(Int).split_int_by_numbers(0, []) :- !.split_int_by_numbers(N, [Number|Ints]) :- Number is mod(N, 10), RestN is div(N, 10), split_int_by_numbers(RestN, Ints).test_to_div(_, []).test_to_div(N, [Number|Ints]) :- mod(N, Number) =:= 0, test_to_div(N, Ints). test(Int) :- split_int_by_numbers(Int, Numbers), test_to_div(Int, Numbers), write(Int), write(" - Yes!"), nl.test(Int) :- write(Int), write(" - No!"), nl.?- read_int(Int), test(Int).
Объяснение:
1.
Определяем количество символов в сообщении, для этого количество символов умножаем на количество страниц:
128 х 4 = 512 символов.
Находим сколько информации отводится на кодирование 1 символа:
0,125 Кбайт х 1024 = 128 байт или 128 х 8= 1024 бита всего в сообщении
1024 бита : 512 символов = 2 бита на 1 символ
Находим количество символов в алфавите по формуле N = 2^i:
N=2²=4
Мощность алфавита составляет 4 символа.
2.
Количество пирожков с вишней К1=2
Всего пирожков в корзине N=4+10+2+4=20
Вероятность выбора пирожка с вишней составляет
р1=К1/N=2/20=0,1
Теперь вычислим количество информации, содержащееся в сообщении, что Маша выбрала пирожок с вишней:
I1=log₂ (1/р1)=log₂(1/0,1)=log₂ 10=3,322 бита ≈4 бита (поскольку бит- минимальная единица информации и число бит не может быть дробным)
3.
2^i=N, где N - объём информации, а i - кол-во бит, которым кодируется единица информации. N=15*5=75
2^i=75
i=log₂ 75=6,23 бита ≈ 7 бит