Не важно, как кодируется один символ. Фактически в этом сообщении 3,95 бита информации. Но в несжатом виде на диске это сообщение займёт 44 * 16 / 8 = 44 * 2 = 88 байтов.
"Какое количество информации оно несет ?" - тут мы знать не можем, не имея перед собою это сообщение. Но можем такую же характеристику посчитать, как для предыдущего сообщения. Считаем число битов, нужных для 12-символьного алфавита:
log2(12) ~= 3,6, округляем вверх, итого 4 бита. 4 * 120 = 480 битов. Если учесть возможность записи по два 4-битовых символа в один байт, то получаем 60 байтов.
olimov
15.10.2022
#include <bits/stdc++.h> using namespace std; int main() { freopen("input.txt","r",stdin); freopen("output.txt","w",stdout); string S; getline(cin, S); for (int i=0; i<S.length(); i++) { if (S[i]<='9' && S[i]>='0') { int k=i; while (S[k]<='9' && S[k]>='0') k++; string A=""; for (int j=0; j<i; j++) A=A+S[j]; A=A+"zz"; for (int j=k; j<S.length(); j++) A=A+S[j]; S=A; } } cout << S; }
//про пустые строки не очень поняла. могла где то допустить ошибку, но вроде все как то так
"Какое количество информации оно несет ?" - тут мы знать не можем, не имея перед собою это сообщение. Но можем такую же характеристику посчитать, как для предыдущего сообщения. Считаем число битов, нужных для 12-символьного алфавита:
log2(12) ~= 3,6, округляем вверх, итого 4 бита.
4 * 120 = 480 битов. Если учесть возможность записи по два 4-битовых символа в один байт, то получаем 60 байтов.